シーケンスを観察するとします:
7、9、0、5、5、5、4、8、0、6、9、5、3、8、7、8、5、4、0、0、6、6、4、5、3、 3、7、5、9、8、1、8、6、2、8、4、6、4、1、9、9、0、5、2、2、0、4、5、2、8。 ..
これが本当にランダムかどうかを判断するために、どの統計的検定を適用しますか?参考までに、これらは番目の数字です。したがって、数字は統計的にランダムですか?これは定数について何か言っていますか?
シーケンスを観察するとします:
7、9、0、5、5、5、4、8、0、6、9、5、3、8、7、8、5、4、0、0、6、6、4、5、3、 3、7、5、9、8、1、8、6、2、8、4、6、4、1、9、9、0、5、2、2、0、4、5、2、8。 ..
これが本当にランダムかどうかを判断するために、どの統計的検定を適用しますか?参考までに、これらは番目の数字です。したがって、数字は統計的にランダムですか?これは定数について何か言っていますか?
回答:
最初の質問に答えてください:「この[シーケンス]が本当にランダムかどうかを判断するために、どのテストを適用しますか?」
それを時系列として扱い、自己相関をチェックするのはどうですか?ここにいくつかのRコードがあります。最初にいくつかのテストデータ(最初の1000桁):
digits_string="1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989"
digits=as.numeric(unlist(strsplit(digits_string,"")))
各桁のカウントを確認します。
> table(digits)
digits
0 1 2 3 4 5 6 7 8 9
93 116 103 102 93 97 94 95 101 106
次に、時系列に変換し、Box-Pierceテストを実行します。
d=as.ts( digits )
Box.test(d)
私に言う:
X-squared = 1.2449, df = 1, p-value = 0.2645
通常、自己相関があることを示すために、p値を0.05未満にする必要があります。
実行acf(d)
して、自己相関を確認します。最大のラグが11と22にあるのは不思議ですが、ここでは画像が鈍いため、ここには画像を含めていませんacf(d,lag.max=40)
。
PS実際の乱数で同じテストを行うことにより、これらの1000桁のpiの性能を比較できました。
probs=sapply(1:100,function(n){
digits=floor(runif(1000)*10)
bt=Box.test(ts(digits))
bt$p.value
})
これにより、1000個のランダムな数字が生成され、テストが行われ、これが100回繰り返されます。
> summary(probs)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.006725 0.226800 0.469300 0.467100 0.709900 0.969900
> sd(probs)
[1] 0.2904346
したがって、結果は最初の標準偏差内で快適であり、パイはカモのように鳴ります。(set.seed(1)
これらの正確な数値を再現したい場合に使用しました。)
奇妙な質問です。数字はランダムではありません。