Python:Numpy Gamma函数为比例参数产生错误的平均值

时间:2019-01-16 10:13:49

标签: python-3.x pandas numpy statistics gamma-distribution

我正试图从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文件中包含了所有代码。

1 个答案:

答案 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 
                    )
            )
        )