R言語で二項検定を実行する方法を紹介します。
この記事では、母比率の正確検定である二項検定をR言語で実行する関数とその使用例を紹介します。
小標本に対する母比率の検定の実行方法をまとめました。
この記事で紹介するプログラミングコードは以下のzipファイル中のRスクリプトにも保存しています。
また、二項検定の手順、大標本の母比率の検定の実行例は以下の記事で解説しています。
【統計学】母比率の検定・母比率の差の検定
通常の1標本の母比率の検定や2標本の母比率の差の検定を含む様々な母比率の検定を解説する。 ここでは、Z検定を用いた大標本の下で母比率の検定について紹介し、検定統計量や棄却域の導出を行う。 大標本におけ ...
続きを見る
【R言語】母比率の検定・母比率の差の検定
R言語で母比率の検定を実行する方法を紹介します。 R言語ではt検定などと同様に、簡単に比率に関する検定を実行することが可能です。 今回は、母比率の検定に関する関数の説明やその実行例をまとめました。 こ ...
続きを見る
二項検定
二項検定の概要とR言語の関数をまとめました。
概要
二項検定の概要は以下の通り。
二項検定
\(x_1, \ldots, x_n\)は\(Bernoulli(p)\)からの独立同一な標本とする。また、このとき\(\sum_{i=1}^n x_i\)は\(Bi(n, p)\)からの標本でもある。次の「母比率\(p\)は特定の値\(p_0\)であるか」の仮説を検定する。
上記の両側検定のp値は次の二項分布の確率関数から計算される。
ここに
であり\(k=\sum_{i=1}^n x_i\)である。は有意水準を\(\alpha\)とすると上記のp値が\(\alpha\)未満である場合、帰無仮説\(H_0\)を棄却する。
関数binom.test
標本数が少ないときの母比率の検定に関する関数binom.testを紹介します。
この関数は二項検定が実行でき、prop.testと比較してより正確な検定を実行することが可能です。関数binom.testの詳細は以下の通りです。
x | 成功回数を表すnumeric型のベクトル。または成功と失敗の回数から成る2次行列。 |
n | 試行回数を表すnumeric型のベクトル。xが行列である場合無視される。 |
p | 成功する確率。帰無仮説の下でのベルヌーイ分布のパラメータ。 |
alternative | 対立仮説を指定するために用いる。"two.sided"で両側検定、"greater"で右片側検定、"less"で左片側検定を実行できる。 |
conf.level | 信頼区間の信頼度。 |
実行例
二項検定の実行例について見ていきます。
グラフのプロットのために次のパッケージggplot2を事前にインストールしておきます。
1 2 | install.packages("ggplot2") library(ggplot2) |
次の10回のベルヌーイ試行のデータが得られたとします。
1 2 3 | > samples <- rbinom(10, 1, 0.5) #10回のベルヌーイ試行 > samples [1] 0 1 0 1 1 1 0 1 0 1 |
また、このデータのヒストグラムは以下の通りです。
1 2 | ggplot(data.frame(samples = as.character(samples)), aes(x = samples)) + geom_bar() |
ポイント
ベルヌーイ試行の成功確率が0.5であるという仮説検定をする際に、標本数が少ないときは通常の大標本による検定を用いると近似が十分ではなく、誤った結果を出してしまうことがあります。
このような標本数が少ないデータに対しては、正確検定である二項検定を用いるのが適しています。
成功確率が0.5であるという二項検定を実行するには、次のように関数binom.testを実行します。
1 2 3 4 | samplesTable <- table(samples) p0 <- 0.5 testResult <- binom.test(samplesTable["0"], length(samples), p = p0) |
testResultを参照すると次のように二項検定の結果(母比率の推定値やp値)がコンソールに出力されます。
1 2 3 4 5 6 7 8 9 10 11 12 | > testResult Exact binomial test data: samplesTable["0"] and length(samples) number of successes = 4, number of trials = 10, p-value = 0.7539 alternative hypothesis: true probability of success is not equal to 0.5 95 percent confidence interval: 0.1215523 0.7376219 sample estimates: probability of success 0.4 |
ポイント
検定結果を見るとp値=0.7539より、成功確率は0.5であるということが分かりました。(成功確率は0.5でないとはいえない)
また次のように、testResult中の検定結果は次のようにして取得することが可能です。
1 2 3 4 | stat <- testResult$statistic #成功数 pValue <- testResult$p.value #p値 estimator <- testResult$estimate #母比率の推定値 confInt <- testResult$conf.int #母比率の信頼区間 |
最後に、これらの検定結果をcsvファイルへ出力する例を以下にのせときます。
1 2 | resultTable <- data.frame(stat = stat, p.value = pValue, estimate = estimator, conf.int = confInt) write.csv(resultTable, "二項検定.csv") |
まとめ
R言語で二項検定を実行する関数とその実行例を紹介しました。
関数binom.testによって二項検定を行うことができます。
小標本の場合、関数prop.testよりもこちらの方が望ましいです。