- 二項検定
50名に幸せだと思うか、思わないかを聴取し、幸せと思う人の割合が多いのかを二項検定で検討してみます。50名中、幸せだと思う人が35人で、思わない人が15人だったとします。コードと結果は以下のようになります。
最初にrstatixパッケージを読み込みます。
> library(rstatix) > binom_test(35, 50, p = 0.5) # A tibble: 1 × 6 n estimate conf.low conf.high p p.signif * <dbl> <dbl> <dbl> <dbl> <dbl> <chr> 1 50 0.7 0.554 0.821 0.00660 **
( )内には、幸せだと思う人の数(35人)、その次に全体の人数(50人)を入力します。また、p= は帰無仮説の比率になります。今回は割合が拮抗している(5割=0.5)というのが帰無仮説になるので0.5となります。帰無仮説が棄却されると、割合は拮抗しておらず偏っている、ということになります。
35人と15人と入力する場合、c(35, 15)をbinom_testに入れる必要があり、以下のように記述します。
> library(rstatix)
> binom_test(c(35, 15), p = 0.5)
# A tibble: 1 × 6
n estimate conf.low conf.high p p.signif
* <dbl> <dbl> <dbl> <dbl> <dbl> <chr>
1 50 0.7 0.554 0.821 0.00660 **
上と下のコードは同じことですので、当然結果も同じになります。
- カイ二乗検定(独立性の検定)
独立性の検定では、分析に先立って分割表を作成する必要があります。
例えば,自分は幸福だと思う人と思わない人が高齢者と若年者で変わるのかを検討したかったとします。幸福だと思う高齢者は58人で若年者は45人、幸福だと思わない高齢者は25人で若年者は38人だとします。このデータを作成するには、以下のコードを入力します。
> data1<-matrix(c(58, 45, 25, 38), ncol = 2, byrow = 2) > data1 [,1] [,2] [1,] 58 45 [2,] 25 38
結果とコードは以下の通りです。
> chisq_test(data1)
# A tibble: 1 × 6
n statistic p df method p.signif
* <dbl> <dbl> <dbl> <int> <chr> <chr>
1 166 3.68 0.0549 1 Chi-square test ns
chisq.test()関数の中にデータ名を指定するだけです。
結果です。nはサンプルサイズ(全体で166人)、statisticはカイ二乗値、pはp値、dfは自由度になります。P値は0.05より大きいので帰無仮説は棄却できませんでした。
- おまけ
以下のように、自分は幸福だと思うか、思わないか、を高齢者、中高年、若年者で調べ、どの世代に差が有るかを調べたいとします。
older | middle | younger | |
yes | 58 | 45 | 23 |
no | 25 | 38 | 71 |
エクセル等の表計算ソフトで表を作り、コピーしてデータを読み込みます。以下がデータです。データの読み込みにはread.table()関数を用います。
> data1<-read.table("clipboard", header = TRUE) > data1 older middle younger yes 58 45 23 no 25 38 71
read.delim関数と間違えないようにしましょう。
rstatixパッケージを使って、カイ二乗検定と、多重比較は行っていきます。コードと結果は以下の通りです。多重比較にはpairwise_prop_test関数を用います。prop_testは母比率の差の検定です。多重比較補正はholm補正です。
> chisq_test(data1) # A tibble: 1 × 6 n statistic p df method p.signif * <int> <dbl> <dbl> <int> <chr> <chr> 1 260 38.0 0.00000000557 2 Chi-square test **** > pairwise_prop_test(data1) # A tibble: 3 × 5 group1 group2 p p.adj p.adj.signif * <chr> <chr> <dbl> <dbl> <chr> 1 older middle 0.0549 0.0549 ns 2 older younger 0.00000000362 0.0000000109 **** 3 middle younger 0.0000939 0.000188 ***
多重比較は2×2に分割してカイ二乗検定を繰り返す方法もあるとは思います。
> pairwise_chisq_gof_test(data1)
# A tibble: 3 × 8
n group1 group2 statistic p df p.adj p.adj.signif
* <int> <chr> <chr> <dbl> <dbl> <int> <dbl> <chr>
1 166 older middle 3.68 0.0549 1 0.0549 ns
2 177 older younger 34.8 0.00000000362 1 0.0000000109 ****
3 177 middle younger 15.3 0.0000939 1 0.000188 ***
コメント