Gii*_*nna 4 python statistics numpy
我需要做一个算法来通过蒙特卡罗方法计算积分,为了模拟的目的,我需要计算在我的程序中生成的样本的标准偏差.我的问题是,当我增加样本元素的数量时,我的标准偏差不会像我预期的那样衰减.首先我认为我的函数是错误的,但是使用numpy预定义函数来计算标准偏差,我看到值是相同的并且没有像我预期的那样减少.所以我想知道我的样本出了什么问题,所以我做了以下模拟来测试标准偏差是否正在减少:
list = [random.uniform(0,1) for i in range(100)]
print np.std(list)
Run Code Online (Sandbox Code Playgroud)
得到的标准偏差:0.289
list = [random.uniform(0,1) for i in range(1000)]
print np.std(list)
Run Code Online (Sandbox Code Playgroud)
得到的标准偏差:0.287
我的n增加时,这不应该减少吗?因为我需要在模拟中使用它作为停止标准,并且除了更大的样本之外,我对此进行了减少.我的数学概念有什么问题?
提前致谢!
分布的标准偏差不取决于样本大小.在一个均匀分布的标准偏差是(b - a)/sqrt(12)在那里a和b是你的分布范围.在你的情况,a = 0并且b = 1,所以你应该期待std = 1/sqrt(12) = 0.288675任何大小的样品.
也许您正在寻找的是标准误差,std/sqrt(N)随着样本量的增加,标准误差会随之减小:
In [9]: sample = np.random.uniform(0, 1, 100)
In [10]: sample.std()/np.sqrt(sample.size)
Out[10]: 0.029738347511343809
In [11]: sample = np.random.uniform(0, 1, 1000)
In [12]: sample.std()/np.sqrt(sample.size)
Out[12]: 0.0091589707054713591
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2151 次 |
| 最近记录: |