理学療法士がまとめたノート

統計学備忘録 since2016

Rを使って統計学を勉強するブログです

Rで作る分割表

投稿日:2018/06/28, 最終更新日2019/05/16
次のデータフレームを分割表にして解析してみます

x <- data.frame(c(rep("あり",15),rep("なし",15)),
           c(rep("あり",9),rep("なし",6),rep("あり",5),rep("なし",10)),
           c(rep("有効",12),rep("無効",3),rep("有効",4),"無効","有効","有効",rep("無効",8)))
colnames(x) <- c("筋トレ","歩行練習","効果")

2変数の分割表の作成

x2 <- xtabs(~筋トレ+歩行練習, data=x)

      歩行練習
筋トレ あり なし
  あり    9    6
  なし    5   10

周辺合計

addmargins(x2)

      効果
      歩行練習
筋トレ あり なし Sum
  あり    9    6  15
  なし    5   10  15
  Sum    14   16  30

列の入れ替え

x3 <- xtabs(~筋トレ+効果, data=x)

      効果
筋トレ 無効 有効
  あり    3   12
  なし    9    6

# 列を入れ替え
x3[c("あり","なし"),c("有効","無効")]   

      効果
筋トレ 有効 無効
  あり   12    3
  なし    6    9

#または行列を直接作ることも可能
xx <- matrix(c(12,6,3,9),2,2)
colnames(xx) <- paste(c("有効","無効"))
rownames(xx) <- paste(c("あり","なし"))

     有効 無効
あり   12    3
なし    6    9

転置

x3_2

      効果
筋トレ 有効 無効
  あり   12    3
  なし    6    9

t(x3_2)   # aperm(x3_2)でも同じ

      筋トレ
効果   あり なし
  有効   12    6
  無効    3    9

歩行練習で層別

x4 <- xtabs(~筋トレ+効果+歩行練習,data=x)

, , 歩行練習 = あり

      効果
筋トレ 無効 有効
  あり    0    9
  なし    1    4

, , 歩行練習 = なし

      効果
筋トレ 無効 有効
  あり    3    3
  なし    8    2

コクラン-マンテル-ヘンツェル検定で共通オッズ比の検定
層別要因の影響を調整した条件付き独立性の検定、調整済みリスク比・オッズ比推定

mantelhaen.test(x4) 

    Mantel-Haenszel chi-squared test with continuity correction

data:  x4
Mantel-Haenszel X-squared = 1.4761, df = 1, p-value = 0.2244
alternative hypothesis: true common odds ratio is not equal to 1
95 percent confidence interval:
 0.02148238 1.42558684
sample estimates:
common odds ratio 
            0.175 

ついでに2変数の分割表解析

xx <- matrix(c(12,6,3,9),2,2)
colnames(xx) <- paste(c("有効","無効"))
rownames(xx) <- paste(c("あり","なし"))

install.packages("Epi")  
library(Epi)            
twoby2(xx)

2 by 2 table analysis: 
------------------------------------------------------ 
Outcome   : 有効 
Comparing : あり vs. なし 

     有効 無効    P(有効) 95% conf. interval
あり   12    3        0.8    0.5302   0.9341
なし    6    9        0.4    0.1918   0.6519

                                   95% conf. interval
             Relative Risk: 2.0000    1.0240   3.9063
         Sample Odds Ratio: 6.0000    1.1717  30.7246
Conditional MLE Odds Ratio: 5.6137    0.9423  44.9348
    Probability difference: 0.4000    0.0504   0.6398

             Exact P-value: 0.0604 
        Asymptotic P-value: 0.0315 
------------------------------------------------------