已知年龄概率分布,求解标准差的技术咨询
计算离散概率分布的标准差
没问题!既然你已经算出了期望年龄,那计算这个离散概率分布的标准差就很清晰了,我一步步给你拆解:
核心原理
对于离散概率分布,标准差是方差的平方根,而方差的计算公式是:Var(X) = Σ[(x_i - μ)² * P(x_i)]
其中:
x_i:每个离散数值(这里就是你的年龄列表)μ:你已经求出的期望(示例中是12.05)P(x_i):对应数值的概率
最后标准差 σ = √Var(X)
结合你的示例计算
先回顾你的输入数据:
- ages = [10,11,12,13,14,15]
- probs = [0.01,0.15,0.68,0.12,0.02,0.02]
- exp_age = 12.05
步骤1:计算每个年龄的「(年龄-期望)² × 概率」项
逐个计算每一组的数值:
- 10岁:
(10-12.05)² × 0.01 = 4.2025 × 0.01 = 0.042025 - 11岁:
(11-12.05)² × 0.15 = 1.1025 × 0.15 = 0.165375 - 12岁:
(12-12.05)² × 0.68 = 0.0025 × 0.68 = 0.0017 - 13岁:
(13-12.05)² × 0.12 = 0.9025 × 0.12 = 0.1083 - 14岁:
(14-12.05)² × 0.02 = 3.8025 × 0.02 = 0.07605 - 15岁:
(15-12.05)² × 0.02 = 8.7025 × 0.02 = 0.17405
步骤2:求和得到方差
把上面所有项加起来:0.042025 + 0.165375 + 0.0017 + 0.1083 + 0.07605 + 0.17405 = 0.5675
步骤3:开平方得到标准差
标准差就是方差的平方根:√0.5675 ≈ 0.7533
快速计算的代码示例(Python)
如果数据量较大,手动计算太麻烦,可以用代码自动计算:
import math # 你的输入数据 ages = [10, 11, 12, 13, 14, 15] probs = [0.01, 0.15, 0.68, 0.12, 0.02, 0.02] exp_age = 12.05 # 计算方差 variance = sum((x - exp_age) ** 2 * p for x, p in zip(ages, probs)) # 计算标准差 std_dev = math.sqrt(variance) print(f"方差: {variance:.4f}") print(f"标准差: {std_dev:.4f}")
运行后会输出:
方差: 0.5675 标准差: 0.7533
内容的提问来源于stack exchange,提问作者Zahlii




