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

代码是否可正确估计样本均值大于epsilon的经验概率?

代码能否正确估计目标经验概率?

你的代码完全不能正确估计Prob(|样本均值|>epsilon)的经验值,核心问题是逻辑完全偏离需求,具体问题如下:

  • 外层循环遍历N次毫无意义:你的需求是针对固定样本量N=100做M次重复实验,不需要循环N次
  • 概率计算逻辑错误:你最终计算的是M个样本均值的平均值,而不是M次实验中|样本均值|>epsilon的次数占比,这和目标经验概率的定义完全不符
  • 输出图像的意义错误:原图像是一条接近0.5的直线,这是因为Uniform[0,1]分布的期望是0.5,每次外层循环后M个样本均值的均值都趋近于0.5,和你要估计的概率没有任何关系

修正后的代码

要正确估计目标经验概率,代码逻辑应该是:做M次重复实验,每次生成N个样本并计算均值,统计其中满足|均值|>epsilon的次数,最终用次数占M的比例作为经验概率。如果需要可视化经验概率随实验次数的变化,可以记录累计的经验概率:

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(10001)
N = 100
M = 30
ep = 0.01

# 存储每次实验的判断结果(1表示满足|均值|>ep,0表示不满足)
results = np.zeros(M)

for j in range(M):
    x = np.random.random_sample(N)
    sample_mean = np.mean(x)
    results[j] = 1 if abs(sample_mean) > ep else 0

# 计算最终的经验概率
empirical_prob = np.mean(results)
print(f"经验概率 Prob(|样本均值|>0.01) = {empirical_prob}")

# 可视化累计经验概率随实验次数的变化
cumulative_prob = np.cumsum(results) / (np.arange(M) + 1)
plt.plot(np.arange(1, M+1), cumulative_prob)
plt.xlabel("实验次数")
plt.ylabel("累计经验概率")
plt.title(f"Prob(|样本均值|>{ep}) 的累计经验概率变化")
plt.show()

补充说明

因为Uniform[0,1]的样本均值范围是(0,1),而epsilon=0.01,|样本均值|>0.01等价于样本均值>0.01(样本均值不可能为负),而样本均值的期望是0.5,几乎所有实验的样本均值都会远大于0.01,所以最终的经验概率会非常接近1。

内容的提问来源于stack exchange,提问作者oliver

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 10:15:41