You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

均匀分布样本均值估计量MSE计算的作业疑问与代码问题咨询

问题核心错误点

  • 对估计量MSE的定义理解错误
    估计量的MSE指的是估计值与真实总体均值的差值的平方的期望,你当前代码计算的是样本点与样本均值差值平方的平均,也就是样本方差的均值,和题目要求的估计量MSE完全无关。
  • 抽样类型不符合题目要求
    题目明确要求是连续均匀分布,你用的np.random.randint是离散整数均匀分布,抽样范围也不对(randint的high参数是开区间,你传b=5的话最多只能抽到4)。
  • 对「平均偏差作为MSE估计值」的理解偏差
    这里的平均是对10万次重复实验的平方误差取平均,不是对单次样本的误差取平均,正确逻辑是:
    1. 先计算均匀分布的真实总体均值 real_mean = (a + b)/2
    2. 每次抽样后计算当前的样本均值估计值
    3. 计算本次估计的平方误差:(估计值 - real_mean) ** 2
    4. 重复10万次后,把所有平方误差取平均,就是最终的MSE估计值

理论值验证

U(a,b)均匀分布的总体方差为 σ² = (b-a)²/12,样本均值是无偏估计,因此其MSE等于样本均值的方差 σ²/n,代入a=1、b=5、n=10的话,理论值为 (4²/12)/10 ≈ 0.1333,和样例输出的0.1343接近,符合模拟误差范围。

修正后代码

import numpy as np

def Sample_Mean_MSE(a, b):
    real_mean = (a + b) / 2
    n_experiments = 100000
    sample_size = 10
    squared_errors = []
    for _ in range(n_experiments):
        # 连续均匀抽样
        sample = np.random.uniform(low=a, high=b, size=sample_size)
        # 计算样本均值估计值
        est_mean = sample.mean()
        # 记录本次平方误差
        squared_errors.append((est_mean - real_mean) ** 2)
    # 所有平方误差的均值就是MSE估计值
    return np.mean(squared_errors)

print(Sample_Mean_MSE(1, 5))

如果需要更高运行效率,可以用向量化操作替代循环:

def Sample_Mean_MSE(a, b):
    real_mean = (a + b) / 2
    samples = np.random.uniform(a, b, size=(100000, 10))
    est_means = samples.mean(axis=1)
    return np.mean((est_means - real_mean) ** 2)

内容的提问来源于stack exchange,提问作者Linh Việt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 07:18:03