Python生成双参数Gamma分布随机样本:alpha=2、beta=3的代码校验
Gamma分布随机采样实现解答
结论
你写的代码完全正确,可以正常生成参数为α=2、β=3的Gamma分布10个随机样本。
参数对应逻辑
Gamma分布存在两种通用参数化形式:
- 形状-率参数化(你使用的形式):概率密度为 $f(x) = \frac{\beta^\alpha x^{\alpha-1} e^{-\beta x}}{\Gamma(\alpha)}$
- 形状-尺度参数化(scipy.stats.gamma采用的形式):概率密度为 $f(x) = \frac{x^{\alpha-1} e{-x/\theta}}{\theta\alpha \Gamma(\alpha)}$
两种参数的转换关系为 $\beta = 1/\theta$,对应scipy接口的参数设置规则:
- 入参
a对应形状参数α,设置为2符合你的需求 - 入参
scale对应尺度参数θ,你设置为1/β=1/3完全符合转换规则 - 入参
loc为位置偏移参数,你需求的分布从0起始,设置为0正确,也可以直接省略(scipy默认值就是0)
简化代码与验证方法
代码可以简化为如下形式:
import scipy.stats alpha = 2 beta = 3 samples = scipy.stats.gamma.rvs(a=alpha, scale=1/beta, size=10)
你可以通过样本均值验证结果合理性:你使用的Gamma分布理论均值为 $\alpha/\beta ≈ 0.6667$,生成的10个样本均值会在该数值附近波动,若调大采样量(比如size=10000),样本均值会更贴近理论值。
常见避坑提示
注意不要误将scale参数直接设置为率参数β,该错误写法会生成形状α=2、尺度θ=3的Gamma分布,均值为2*3=6,和你需要的分布不符。
内容的提问来源于stack exchange,提问作者MathStat2718
相关产品推荐
相关产品推荐

