因此,我目前正在选修一门统计课程,我们一直在谈论抽样变化。我构建了一个Web应用程序来执行抽样模拟,并在使用1000这样的良好样本大小时显示结果(cobra5707.dx.am/SampleSim),得到良好的正态分布。
0.45,1000,10000的结果:
然而,当样本大小不是一个很好的数字时,产生的直方图就会出现奇怪的空白。
结果为0.45,808,10000:
代码并没有最小化,所以您可以在dev tools中查看源代码,工作代码是:
onmessage = function(event) {
e = event.data;
var s = 0;
var p = e.true_value;
for(var i=0; i<e.sample_size; i++){
if(Math.random()<p)
s++;
}
postMessage(s/e.sample_size);
}
编辑1:这样,这个过程就这样工作了,工作人员运行了一些选定的模拟,并计算出成功的比例,并返回一个百分比0,1。这些百分比被乘以100,然后存储在一个数组中。最后,Plotly从数据中生成直方图。直方图似乎没有出现错误,因为循环遍历数组确认在空百分比范围内没有值。
编辑2:仔细观察,似乎是因为某些百分比是不可能产生的,而且xbin的大小足够小,这些差距是可见的,所以我想我需要处理这个问题。很抱歉浪费了人们的时间,以为这可能是个奇怪的浮点错误。
发布于 2016-02-26 08:36:10
正如您似乎已经意识到的那样,这是因为Plotly自动选择的bin大小与您的数据没有很好地一致。
最简单的方法是运行样本大小为"3“-只有四种可能的结果: 0.0,33.33333333,66.66666667和100.0。
然而,Plotly选择的垃圾箱是-10至10、10至30、30至50、50至70、70至90和90至110。
解决方案是修改方法UpdatePlot
,以便它使用您的样本大小来确定回收箱;如下所示:
function UpdatePlot(data, args){
Plotly.deleteTraces("plot", 0);
Plotly.addTraces("plot",
{x:data, type:"histogram", autobinx: false,
xbins: {start: -50/ss, end: 100 + (50/ss), size: 100/ss}});
}
https://stackoverflow.com/questions/35642803
复制相似问题