簡體   English   中英

如何在C ++ Boost庫中使用卡方分布?

[英]How do I use chi square distribution with C++ Boost library?

我查看了Boost網站上的例子,但它們並不是我想要的。

簡單來說,我想看一下骰子上的數字是否有利於使用600卷,所以每個數字(1到6)的平均外觀應為100。

我想使用卡方分布檢查模具是否公平。

救命!,我該怎么辦呢?

假設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 一百分之二 = 0.660

你有五個自由度(箱數減去1)。 所以你會有一個類似的聲明

boost::math::chi_squared mydist(5);

創建表示卡方分布的Boost對象。

此時,您將使用來自Boost庫的cdf訪問器函數(累積分布函數)來查找對應於具有五個自由度的.660的卡方分數的p值。

p = boost::math::cdf(mydist,.660);

你應該得到接近0.015的東西,這將被解釋為(1 - .015)= 98.5%觀察卡方評分的概率至少與0.660一樣極端,如果假設零假設(死是公平的)持有。 因此,對於這組數據,不能以任何合理的置信水平拒絕零假設。 (免責聲明:未經測試的代碼!但如果我正確理解Boost文檔,那么它應該如何工作。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM