sev*_*axx 10 c++ random statistics boost distribution
我查看了Boost网站上的例子,但它们并不是我想要的.
简单来说,我想看一下骰子上的数字是否有利于使用600卷,所以每个数字(1到6)的平均外观应为100.
我想使用卡方分布检查模具是否公平.
救命!,我该怎么办呢?
Jim*_*wis 12
假设e [i]和o [i]是保持6种可能性中的每种可能性的预期和观察到的滚数的阵列.在您的情况下,每个箱子的e [i]为100,o [i]是您在600次试验中滚动的次数.
然后,通过在6个区间上求和(e [i] -o [i])2/e [i]来计算卡方统计量.让我们说你的o [i]阵列在进行了600次试验后得出了105,95,102,98,98和102个计数.
志2 = 5 2 /100 + 5 2 /100 + 2 2 /100 + 2 2 /100 + 2 2 /100 + 2 2 /100 = 0.660
你有五个自由度(箱数减去1).所以你会有一个类似的声明
boost::math::chi_squared mydist(5);
Run Code Online (Sandbox Code Playgroud)
创建表示卡方分布的Boost对象.
此时,您将使用cdf
来自Boost库的访问器函数(累积分布函数)来查找对应于具有五个自由度的.660的卡方分数的p值.
p = boost::math::cdf(mydist,.660);
Run Code Online (Sandbox Code Playgroud)
你应该得到接近0.015的东西,这将被解释为(1 - .015)= 98.5%观察卡方评分的概率至少与0.660一样极端,如果假设零假设(死是公平的)持有.因此,对于这组数据,不能以任何合理的置信水平拒绝零假设.(免责声明:未经测试的代码!但如果我正确理解Boost文档,那么它应该如何工作.)