裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

Julia に翻訳--210 適合度の検定,名義尺度の場合,χ2 分布による検定,一様性の検定,理論比が与えられる場合

2021年04月30日 | ブログラミング

#==========
Julia の修行をするときに,いろいろなプログラムを書き換えるのは有効な方法だ。
以下のプログラムを Julia に翻訳してみる。

適合度の検定--名義尺度の場合;χ2 分布による検定;一様性の検定
http://aoki2.si.gunma-u.ac.jp/lecture/GoodnessOfFitness/nominalscale-r.html

適合度の検定--名義尺度の場合;χ2 分布による検定;理論比が与えられる場合
http://aoki2.si.gunma-u.ac.jp/lecture/GoodnessOfFitness/nominalscale-r2.html

ファイル名: chisqtest.jl  関数名: chisqtest

翻訳するときに書いたメモ

==========#

using Rmath, Printf

function chisqtest(x; p = fill(1 / length(x), length(x)))
    1 - sum(p) > eps() && error("sum(p) isn't equal to 1")
    expectation =  sum(x) .* p
    chisq = sum(((x .- expectation) .^ 2) ./ expectation)
    df = length(x) - 1
    pvalue = pchisq(chisq, df, false)
    @printf("chisq = %.5f,  df = %d,  p value = %.5f", chisq, df, pvalue)
end

x = [10, 12, 9, 4, 13, 8]
chisqtest(x)                         # chisq = 5.50000,  df = 5,  p value = 0.35795
chisqtest(x, p = fill(1/6, 6))       # chisq = 5.50000,  df = 5,  p value = 0.35795

y = [29, 12, 8, 2]

chisqtest(y, p = repeat([0.25], 4))  # chisq = 31.58824,  df = 3,  p value = 0.00000
chisqtest(y, p = [9, 3, 3, 1] ./ 16) # chisq = 1.32244,  df = 3,  p value = 0.72381

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« Julia に翻訳--209 一般化固... | トップ | Julia に翻訳--211 分布の差... »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事