【发布时间】:2020-08-03 13:00:08
【问题描述】:
所以基本上我正在尝试进行随机实验。这很简单。基本上我想看看中心极限定理所说的是否成立。
简单地说,中心极限定理的想法是,如果我们从随机实验中抽取相同大小的无限样本,这些样本的均值是正态分布的。
所以考虑一个骰子。那个骰子是魔法骰子,扔出去只能得到1、3、4或6,所以不能得到2和5。概率如下:
P[1] = 2/6
P[3] = 1/6
P[4] = 1/6
P[6] = 2/6
现在,如果我们采用 4 的样本量,即我们掷骰子 4 次,写下我们得到的结果,取平均值,然后做 100'000 次,当绘制为直方图时,我们应该,查看正态分布。
我使用 python 实现了这样的:
""" Set up the probability space """
experiment = [1,1,3,4,6,6]
""" Experiment configuration """
n = 4
m = 100000
bins = 20
def throwDice():
result = []
for i in range(0,n):
k = randrange(0,6)
print(k)
result.append(experiment[k])
return result
def sampleMeans():
means = []
for i in range(0,m):
means.append(sum(throwDice())/4)
return means
def createHistrogram():
means = sampleMeans()
plt.hist(means, bins)
plt.show()
""" Run he experiment """
createHistrogram()
这让我明白了
这并不奇怪,例如我们有“漏洞”。 2.75 和 4.75,因为我们缺少 2 和 5,即平均值为 2.75 和 4.75 的可能样本较少。其他人也可以这样做。
虽然一切看起来都不错,但我的问题实际上是关于 python 的随机生成器。这样做可以吗?什么样的随机数发生器最适合这种简单的“数值实验”?
【问题讨论】:
-
第一:您不会让样本量趋于无穷大,而是让样本量趋于无穷大。第二:我只是假设如果使用 RNG 生成随机数值实验的数据,则必须确保它不会引入偏差。我不是在谈论特定 RNG 固有的偏见。您在另一条评论中正确指出,CLT 不限制我们从中提取数据的分布类型,因此这里不太可能遇到问题。我还是随机的新手,尤其是编码随机实验,所以我不确定我的数据生成是否有效。
-
另外:是的,样本大小是硬编码的——已经很晚了。我实际上想让它可变,但最后,这是一个“错误”,但没关系。
-
我想补充一点:如果你增加样本大小n,你会更接近正态分布。所以这是一个更好的拟合 - 你使误差更小,但定理中的限制是关于此类样本的数量。
标签: python stochastic