我正试图从numpy.random的gamma方法中提取1000个样本(每个样本的大小为227),因此每个样本值应为i.i.d(独立且分布均匀)。但是,scale参数的平均值是错误的。
我的形状参数(alpha)是0.375,我的比例参数(lambda)是1.674
根据我的教科书,这是这两个参数的估计值公式:
render() {
return (
<div>
{
this.state.data &&
<div key={this.state.data.key}>
{this.state.data.display}
{this.state.data.nutrition}
</div>
}
</div>
)
}
我认为我可能不正确地使用了Pandas .apply()方法,或者我的get_lambda_hat函数是错误的。
alpha = ( xbar ^ 2 ) / ( sigma_hat ^ 2 )
lambda = ( xbar ) / ( sigma_hat ^ 2 )
分别绘制了alpha和lambda的估计值的直方图后,我注意到alpha样本分布的中心位于0.375的附近,而lambda的样本分布的中心位于0.62的中心,与1.674的距离很远。我尝试过使用lambda的其他值,但似乎永远无法正确居中。
我很想知道是否有人对解决此问题有任何建议。我已经从jupyter笔记本会话中下载的.py文件中包含了所有代码。
答案 0 :(得分:0)
已修复。 γ函数的概率质量函数在numpy.random中的实现方式与在我的教科书中不同。
通过将get_samples_from_gamma_dist()体内的'scale'参数设置为1 / lamb,我得到了正确的平均值:
def get_samples_from_gamma_dist( num_of_samples, size_of_samples, alpha, lamb ):
'''
Returns table with ( num_of_samples ) rows and ( size_of_samples ) columns.
Cells in the table are i.i.d sample values from numpy's gamma function
with shape parameter ( alpha ) and scale parameter ( 1 / lamb ).
'''
return pd.DataFrame(
data = gamma(
shape = alpha,
scale = 1 / lamb,
size =
(
num_of_samples,
size_of_samples
)
)
)