割合の検定(rstatixパッケージ)

  • 二項検定 

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

データの名前をdata1としています。matrixで2行2列のデータにします。( )内では、4つの数値の指定と行列数の指定を行います。4つの数値はc(数値, 数値, … )でくくります。Rでは数値が並んだデータをベクトルと呼びますが、こういったベクトルを作るときはc( )の( )の中に数値を , で区切って入力していきます。ncol=とbyrow= でそれぞれ列と行の数を指定できます。今回はいずれも2となります。data1を実行してみると2行2列の分割表が出力されます。

結果とコードは以下の通りです。

> 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     ***         


コメント