通过样本估计 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 方法生成它,您应该使用它,因为它可能更有效率。
我正在尝试通过从正态分布中获取许多样本的平均值来创建 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 方法生成它,您应该使用它,因为它可能更有效率。