東京大学 | 大学院医学系研究科 | 国際保健学専攻 | 人類生態学教室TOP | 2nd

社会統計学第9回
「カテゴリカルデータの解析(5)」(2001年11月22日)

トップ | 更新情報 | 研究と教育 | 業績 | 計算機 | 写真 | 枕草子 | 著者 | 目安箱 | 書評 | 社会統計学目次

最終更新: 2001年11月29日 木曜日 04時25分

全部を一括して読む | 前回へ


講義概要

前回までは,主に2×2のクロス集計表を扱った。今回は,(1)2変数のどちらか,あるいは両方ともカテゴリ数が3つ以上の場合,(2)カテゴリカル変数が3つ以上の場合,への拡張を扱う。

カテゴリ数が3つ以上の場合のクロス集計表の解析
▼第7回にinfertのデータでやったが,カテゴリ数が3つ以上あるカテゴリカル変数AとBの間の独立性の検定は,2×2クロス集計表と同じく,chisq.test(A,B)あるいはfisher.test(A,B)で実行できる。データ数が多すぎなければ,fisher.test(A,B)を使う方が望ましい。
▼3つ以上の水準があってそれらの間に順序のあるカテゴリカル変数Aとカテゴリ数2つのカテゴリカル変数Bの間の関連を調べるには,コクラン=アーミテイジ検定という方法を使うことができる。Rでは,prop.trend.test(変数Aの各カテゴリで変数Bのカテゴリが「あり」であった人数のベクトル,変数Aの各カテゴリ人数のベクトル,変数Aの各カテゴリに割り付ける順序のベクトル)
カテゴリカル変数が3つ以上の場合
▼3つ以上のカテゴリカル変数間の関係を調べたい場合には,2通りが考えられる。1つは,2つのカテゴリカル変数間の関係に関心があって,それが第3のカテゴリカル変数がどのような値であっても変わらないかどうかを確かめたい場合である。この場合,第3のカテゴリカル変数は注目している2つのカテゴリカル変数の関係に影響を与えるかもしれない要因(交絡要因,あるいは撹乱要因ともいう)であり,その影響を排除した解析を行いたいわけである。この場合の常套手段は,第3のカテゴリカル変数で層別したクロス集計表を複数作って,それを併合することである。
▼一方,あるカテゴリカル変数の値と,それ以外の複数のカテゴリカル変数の関係を同時に見たい場合もある。この場合の常套手段は,ロジスティック回帰分析を行うことである。ロジスティック回帰分析については次回扱う。
層別したクロス集計表〜なぜ層別するか?
▼なぜ層別しなくてはいけない場合があるかといえば,「シンプソンのパラドックス」と呼ばれる現象が有名。
▼シンプソンのパラドックスとは,層別した各層のクロス集計表で見られる関係が,すべてを合計したクロス集計表で見られる関係と違っている場合をいう。例えば,飲酒と心筋梗塞の関係について,喫煙の有無が交絡要因になっているとして,喫煙者と非喫煙者を別々にクロス集計表を作ったら,下表のようになったとしよう。
喫煙者心筋梗塞非喫煙者心筋梗塞
飲酒ありなし飲酒ありなし
あり816あり6336
なし2244なし74
▼喫煙者と非喫煙者を別々に,飲酒と心筋梗塞の独立性の検定をすると,どちらの層でもカイ二乗値が0に近い値(連続性の補正をしなければちょうど0)になり,飲酒と心筋梗塞には関連がないという帰無仮説は棄却されない。ところが,喫煙の有無で層別しなければ,クロス集計表は下のようになる。
心筋梗塞
飲酒ありなし
あり7152
なし2948
▼この表でカイ二乗検定をすると,χ2=6.84 (p=0.0089)となって,飲酒と心筋梗塞には関連がないという帰無仮説は棄却されてしまう。しかし,上でやった層別の解析からわかるように,この関連は,喫煙が飲酒とも心筋梗塞とも関連をもっていることによる見せかけである。
▼Rでこの解析を行うには,smoker<-matrix(c(8,22,16,44),nc=2); nonsmoker<-matrix(c(63,7,36,4),nc=2); chisq.test(smoker); chisq.test(nonsmoker); total<-smoker+nonsmoker; chisq.test(total)とすればよい。
▼上の例とは逆に,各層では関連が見られるのに,交絡要因である第3の変数を無視して合計すると関連が見えなくなってしまったり,各層で見られたのとは逆の関連になってしまう場合もある。
層別したクロス集計表〜どの層でも同じ関係が見られるかどうか?
▼「どの層でも関連がない」を帰無仮説,「すべての層で同じ向きの関連がある」を対立仮説として検定を行う。コクラン=マンテル=ヘンツェルのカイ二乗検定という方法を用いる。Rでは,mantelhaen.test(A,B,層別変数)またはmantelhaen.test(3次元の表)で計算できる。
▼2×2の場合,マンテル=ヘンツェル要約オッズ比というものがよく使われる。これは,k層でのオッズ比ORk=(akdk)/(bkck)であるときに,層別変数の影響を調整した共通オッズ比ORMHが,ORMH=(Σ(akdk/Nk))/(Σ(bkck/Nk))として推定できるという理論である。ORMHの信頼区間は,Pk=(ak+dk)/Nk,Rk=(akdk)/Nk,Qk=(bk+ck)/Nk,Sk=(bkck)/Nkと書くと,VFRBG=(1/2)[(Σ(PkRk))/((ΣRk)^2) + (Σ(QkRk+PkSk))/((ΣRk)(ΣSk)) + (Σ(QkSk))/((ΣSk)^2)]として,95%信頼区間の下限がORMHL=ORMH*exp(-qnorm(0.975)*sqrt(VFRBG)),95%信頼区間の上限がORMHU=ORMH*exp(qnorm(0.975)*sqrt(VFRBG))となる。
▼上のシンプソンのパラドックスの例についてRを使ってコクラン=マンテル=ヘンツェルのカイ二乗検定をするには,上のプログラムに続けて,mix<-matrix(c(smoker,nonsmoker)); dim(mix)<-c(2,2,2); mantelhaen.test(mix)とすればよい。χCMH2=0 (p=1)となって,帰無仮説は全然棄却されないことがわかる。シンプソンのパラドックスの例は2×2なので,自動的にマンテル=ヘンツェル要約オッズ比も計算され,それが1である(95%信頼区間が[0.4552028, 2.1968231])とわかる。

フォロー

検定をして出てきた数値の有意性などが未だにわからない。どんな数値のときに関連をもつか,もたないのかの区別のつけ方をもう一度説明して欲しい。
▼単純化して言えば,統計的検定は次の手順を踏みます。
R関連の本があったら教えてください。
▼R関連の本は,たぶん日本語では売られていません。でも,S-PLUSという市販ソフトとできることはほとんど同じなので,S-PLUSの参考書が使えます。
▼しかし,Rの入門には,Notes on Rという文書がwebからダウンロードできるので,これを読むのがいいでしょう。日本語と英語があって,日本語版はhttp://isw.main.eng.hokudai.ac.jp/‾yama/R/notes.htmlからダウンロードできます。
エクセルとRではどちらが統計ソフトとしてよく使われている?
▼Excelはもともとが統計ソフトではなく,表計算ソフトです。ツールの分析ツールメニューからいくつかの統計計算はできますし,マクロによる統計パッケージが別に売られていますが,できる統計分析も限られています。しかし,日本の会社などで実務で使われているソフトとしての使われ方は,1,2を争うものだと思いますので,Excelの扱いを覚えておいて損はないでしょう。Rは,フリーですし,S-PLUSやSも含めれば世界的にはかなり使われているものですが,日本の会社で実務でRを使っているケースはほとんどないと思います。しかし,SASやSPSSに匹敵するほど多様な統計処理ができますので,その統計ソフトとしての実力はExcelより遥かに上だと思います。

全部を一括して読む | 次回へ