通过样本估计 t 分布不起作用

Estimation of t-distribution by mean of samples does not work

我正在尝试通过从正态分布中获取许多样本的平均值来创建 t 分布(然后使用核密度估计来估计形状)。

出于某种原因,当我将得到的结果与适当的 t 分布进行比较时,我得到了截然不同的结果。我不明白出了什么问题,所以我想我对某些事情感到困惑。

代码如下:

import numpy as np
from scipy.stats import gaussian_kde
import matplotlib.pyplot as plt
import seaborn    

inner_sample_size = 10
X = np.arange(-3, 3, 0.01)

results = [
    np.mean(np.random.normal(size=inner_sample_size))
    for _ in range(10000)
]
estimation = gaussian_kde(results)
plt.plot(X, estimation.evaluate(X))

t_samples = np.random.standard_t(inner_sample_size, 10000)
t_estimator = gaussian_kde(t_samples)
plt.plot(X, t_estimator.evaluate(X))

plt.ylabel("Probability density")
plt.show()

这是我得到的情节:

其中橙色线是numpy自身的t分布,蓝色线是采样估计的。

您关于标准正态分布均值服从 T 分布的假设是不正确的。事实上,标准法线的均值具有正态分布,它解释了蓝色图形的形状。要从具有 k 个自由度的 T 分布中生成一个随机变量 T,您首先要生成 k+1 个独立的标准正态分布 Z_i, i=0,...,k。然后你计算

T = Z_0 / sqrt( sum(Z_i^2, i=1 to k)/k ).

标准法线平方和 sum(Z_i^2, i=1 to k) 具有 Chi-Squared 自由度为 k 的分布,因此如果有 pre-canned 方法生成它,您应该使用它,因为它可能更有效率。