伽马分布X轴单位转换:千米转米且保持形状的方法
解决伽马分布单位转换(km→m)且保持形状不变的问题
嘿,这个问题的关键在于搞清楚伽马分布两个参数的作用:
- 形状参数(shape):只控制分布的“形态”(比如峰的尖锐程度、偏斜度),和数值的缩放无关,所以转换单位时完全不需要动它。
- 尺度参数(scale):负责控制分布的数值范围,和单位直接相关。我们把千米转成米,相当于把所有观测值放大1000倍,因此只需要把尺度参数乘以1000就可以了。
修改后的代码
import numpy as np import matplotlib.pyplot as plt # 形状参数不变,尺度参数从0.370 km 转换为 0.370*1000 = 370 m shape, scale = 2.126, 0.370 * 1000 s = np.random.gamma(shape, scale, 1000) weights = np.ones_like(s)/float(len(s)) plt.hist(s, 30, weights=weights) plt.xlabel("步行距离(米)") plt.ylabel("概率密度") plt.show()
验证逻辑
原来的分布均值是 shape * scale = 2.126 * 0.370 ≈ 0.7866 km,转换为米后均值应该是 786.6 m。修改后的代码计算均值:2.126 * 370 ≈ 786.6 m,完全匹配,同时分布的形状(偏斜度、峰度等)和原来完全一致,因为形状参数没有改动。
内容的提问来源于stack exchange,提问作者GDI
相关产品推荐
相关产品推荐

