用样本均值计算均方误差



我不确定我是否正确理解了这个问题。

我们考虑分布均值的样本均值估计量。分布均值的另一个估计量是最小-最大均值估计量,它取最小和最大观测值的均值(平均值)。例如,对于样本{1,2,1,5,1},样本均值为(1+2+1+5+1)/5=2,而最小-最大均值为(1+5)/2=3。在这个问题中,我们要求您运行一个模拟,以近似均匀分布的两个估计器的均方误差(MSE)。

取a与b -之间的连续均匀分布作为参数。从该分布中抽取10个观测值的样本,计算样本均值和最小-最大均值。重复实验100,000次,并为每个估计器计算其平均偏差作为MSE估计。

样本输入:Sample_Mean_MSE(1,5)示例输出:0.1343368663225577

下面的代码是我试图:

  1. 从a和b的均匀分布中绘制大小为10的样本
  2. 计算MSE,均值采用样本均值法计算。
  3. 重复100,000次,并将结果MSEs存储在数组
  4. 返回MSEs数组的平均值,作为最终结果

然而,我得到的结果与上面的示例输出相差甚远。有人能澄清一下任务吗,围绕这部分"重复实验10万次,并为每个估计器计算其平均偏差作为你的MSE估计"?由于

import numpy as np
def Sample_Mean_MSE(a, b):
# inputs: bounds for uniform distribution a and b
# sample size is 10
# number of experiments is 100,000
# output: MSE for sample mean estimator with sample size 10
mse_s = np.array([])
k = 0
while k in range(100000):
sample = np.random.randint(low=a, high=b, size=10)
squared_errors = np.array([])
for i, value in enumerate(sample):
error = value - sample.mean()
squared_errors = np.append(squared_errors, error ** 2)
k += 1
mse_s = np.append(mse_s, squared_errors.mean())
return mse_s.mean()

print(Sample_Mean_MSE(1, 5))

要得到预期的结果,我们首先需要了解估计量的均方误差(MSE)是什么。以样本均值估计器为例(最小-最大-均值估计器基本相同):

MSE评估观测值和预测值之间的平均平方差-在这种情况下,是分布平均值和样本平均值之间。我们可以将其分解如下:

  1. 绘制大小为10的样本,计算样本均值(±),重复100,000次
  2. 计算分布意味着:y = (a + b)/2
  3. 计算并返回MSE: MSE = 1/n * Σ(y -)^2

最新更新