群馬大学 | 医学部 | サイトトップ | 医学情報処理演習

医学情報処理演習:2011年度第11回課題解答例

第11回に出てきた関数と文の主なものはこちらを参照されたい。

課題

http://phi.med.gunma-u.ac.jp/medstat/it2011-11.txtは,3つの変数JOB,HEALTH,WEALTHからなる架空のデータである。JOBは就業状態を意味し,"working"と"retired"の2つの値からなる。HEALTHは主観的健康状態を意味し,"good"と"bad"の2つの値からなる。WEALTHは主観的な裕福さを意味し,"rich"と"poor"の2つの値からなる。

(1)HEALTHとWEALTHのクロス集計表を作成して表示せよ。(2)それら2つが独立であるという帰無仮説をフィッシャーの正確な確率により検定せよ。(3)JOBで層別して有職者(working)と退職者(retired)で別々にHEALTHとWEALTHが独立であるという帰無仮説をフィッシャーの正確な確率により検定せよ。(4)層別に作成したクロス集計表を併合してマンテル=ヘンツェルの要約カイ二乗検定を実行し,層別しないカイ二乗検定の結果と比較してJOBが交絡因子になっているかどうか考察せよ。なお,検定の有意水準はすべて5%とすること。

以上の解析を実行するコードと考察を書き,学籍番号・氏名とともに下のフォームから送信せよ。


解答例

項目入力欄
解答(Rのコード)
x <- read.delim("http://phi.med.gunma-u.ac.jp/medstat/it2011-11.txt")
(TBL <- xtabs(~WEALTH+HEALTH, data=x)) # (1)
fisher.test(TBL) # (2)
(T3 <- xtabs(~WEALTH+HEALTH+JOB, data=x)) # (3)の一部「JOBで層別」
fisher.test(T3[,,"working"]) # (3)の一部「有職者での検定」
fisher.test(T3[,,"retired"]) # (3)の一部「退職者での検定」
chisq.test(TBL) # (4)の一部「層別しないカイ二乗検定」
library(vcd) # (4)の一部「Woolfの検定を実行するためのvcdライブラリ読み込み」
woolf_test(T3) # (4)の一部「Woolfの検定により3次の交互作用がないという帰無仮説を検定」
mantelhaen.test(T3) # (4)の一部マンテル=ヘンツェルの要約カイ二乗検定
解答(考察)

(1)の結果は下記。

      HEALTH
WEALTH bad good
  poor  59   29
  rich  46   46

(2)の結果,p値は0.02371と5%より小さいので帰無仮説は棄却され,主観的裕福さと主観的健康状態には統計的に有意な関連があるといえる。

(3)の結果,有職者のp値は0.2949,退職者のp値は0.06547と,ともに5%より大きいので,有意な関連があるとはいえない。しかしサンプルサイズが小さいためかもしれないので,これだけではJOBが交絡といえるかどうかわからない。

(4)JOBで層別しないで主観的豊かさと主観的健康状態に関連が無いという帰無仮説をカイ二乗検定した結果のp値は0.03019である。Woolfの検定のp値は0.9683なので3次の交互作用がないという帰無仮説は棄却されない。そこで,「主観的豊かさと主観的健康状態の関連が有職者と退職者で共通していない」を帰無仮説とするマンテル=ヘンツェル要約カイ二乗検定を実行すると,p値は0.03111であり,有意水準である5%より小さいので帰無仮説は棄却される。したがって主観的豊かさと主観的健康状態にはJOBによらず共通した関連があることになり,p値も層別しない場合とほとんど変わらないので,JOBの有無は主観的豊かさと主観的健康状態の関連に影響していないと考えられる。つまりJOBの有無は,この関連に対して交絡因子ではない。

主なコメント・質問への回答

交絡の判断がよくわからなかった。
前回の講義スライドpdfと上の解答例を参考にしてください。
Rのコードを書いているとどこかに不具合があり,完璧に作らないと動かないところが難しい
プログラムとはそういうものなので仕方ありません。エラーメッセージを良く読むと,どのように間違っているのかがわかるようになります。
Aクラスの人がシャットダウンでなく再起動にしてくれていると助かる
それでも不都合はないと思うので,そうしましょうか。
クロス集計がよくわかりません
前回の講義スライドの前半に必要なことは全部書いてあるので,復習してください。
xtabs()とtable()の書き方の非互換性の思想がわからない
そうですね。RはCore Teamが方向付けしていますが,多くの開発者による共同作業で作られているので,同じ機能を実現する複数の関数が別々の開発者によって作られていることが時々あります。好きな方を使うことにしたらいいと思います。
mantelhaen.test()で層別因子を明示的に指定する方法は?
3次元の表を与える場合は3次元目が層別因子です。3つのカテゴリ変数のベクトルを与えることもできて,その場合は,z=が層別変数になります。
課題をやっても,結局何を言いたいための検定なのかがわからない
講義中に言っていますし,資料にも書いてありますので復習してください。
層別解析では層別の基準がポイントとなるはずなので,そこの説明が欲しい
大変重要な指摘だと思いますが,すべての場合に通用する簡単な規則のようなものはありません。先行研究を参考にしたり,層別に使う可能性がある変数について度数分布や,他の変数とのクロス集計表を求めてみて,地道に検討してください。

リンクと引用について