Rで学ぶ統計講座(初級)

Rによるクロス集計と独立性の検定2

ボーンシュテット&ノーキ「社会統計学」(Bohnstedt & Knoke 1988=1990:88)に紹介されている1984年GSS調査の「信仰する宗教と支持政党」データを用いる(引用元データは百分率クロス集計表なので、サンプルサイズから度数を復元している)。

信仰する宗教と支持政党との度数クロス集計表
宗教民主党支持政党なし共和党合計
プロテスタント329301284914
カトリック16614265373
ユダヤ教910726
無宗教296312104
その他108018
合計5435243681435
1984年GSS調査

このデータから信仰する宗教と支持政党にどのような傾向を読み取れるか。

スクリプト

#直接クロス集計表を作成する。
table.data <- matrix(c(329,301,284,166,142,65,9,10,7,29,63,12,10,8,0), byrow=T, ncol=3)
rownames(table.data) <- c("プロテスタント","カトリック","ユダヤ教","無宗教","その他")
colnames(table.data) <- c("民主党","支持政党なし","共和党")

#集計前データに変換
source("http://kyoto-edu.sakura.ne.jp/weblesson/statistics/socialStatisticsBasic.R", encoding="UTF-8")
data <- convert.weighted.data.to.original(convert.crosstable.to.weighted.data(table.data))

#クロス集計
crossTable <- crosstab(data$var1,data$var2)

#χ2検定他
result <- summary(crossTable)

#結果出力
result

#帯グラフ
barplot(t(result$row.ratio), horiz=T, legend=colnames(result$row.ratio))

#ファイルへの書き出し
write.output(result,"output.crosstable.csv")

convert.crosstable.to.weighted.data関数(socialStatisticsBasic.Rで読み込まれる自作関数)

convert.crosstable.to.weighted.data(matrix)

度数クロス表を重み付きデータに変換する。

  • matrix=クロス集計表(matrix型)

convert.weighted.data.to.original関数(socialStatisticsBasic.Rで読み込まれる自作関数)

convert.weighted.data.to.original(data.frame, freq.name)

重み付きデータから元データを復元する。

  • data.frame=重み付きデータ(data.frame型)
  • freq.name="Freq" 度数変数の項目(変数)名

出力結果

クロス集計表

$crossTable
               共和党 支持政党なし 民主党
カトリック         65          142    166
その他              0            8     10
プロテスタント    284          301    329
ユダヤ教            7           10      9
無宗教             12           63     29

$row.ratio
                  共和党 支持政党なし    民主党
カトリック     0.1742627    0.3806971 0.4450402
その他         0.0000000    0.4444444 0.5555556
プロテスタント 0.3107221    0.3293217 0.3599562
ユダヤ教       0.2692308    0.3846154 0.3461538
無宗教         0.1153846    0.6057692 0.2788462

$column.ratio
                   共和党 支持政党なし     民主党
カトリック     0.17663043   0.27099237 0.30570902
その他         0.00000000   0.01526718 0.01841621
プロテスタント 0.77173913   0.57442748 0.60589319
ユダヤ教       0.01902174   0.01908397 0.01657459
無宗教         0.03260870   0.12022901 0.05340700

比率は$row.ratio(行方向の比率)を見る。

χ2検定

$chisq.test
         chi sq df            P
Peason 62.79974  8 1.312058e-10
Fisher       NA NA 4.997501e-04
$chisq.test
  • Peason→「Pearsonのカイ2乗:漸近有意確率(両側)」
  • Fisher→「Fhisherの直接法:正確な有意確率(両側)」
  • クロス表が2*2ではないのでYates修正は出力されない。

残差分析

$residualAnalysis
                   共和党 支持政党なし     民主党
カトリック     -4.2251998    0.7246084  3.0849080
その他         -2.5073732    0.7030883  1.5595828
プロテスタント  6.2364101   -3.7343606 -1.9078036
ユダヤ教        0.1506593    0.2079675 -0.3421110
無宗教         -3.4206410    5.2917429 -2.1735470

$res.p.value
               共和党 支持政党なし 民主党
カトリック     0.0000       0.4687 0.0020
その他         0.0122       0.4820 0.1189
プロテスタント 0.0000       0.0002 0.0564
ユダヤ教       0.8802       0.8353 0.7323
無宗教         0.0006       0.0000 0.0297

符号に着目。プロテスタントは共和支持が相対的に強く、カトリックは民主支持が強い。無宗教は「支持政党なし」。

効果量Cramer's V

$Cramer
                [,1]
Cramer's V 0.1479238
Cramer's V
Cramer's Vの目安
効果量V効果の目安
0.5
0.3
0.1
0なし

考察例

信仰する宗教と支持政党比率
信仰する宗教と支持政党比率の帯グラフ

信仰する宗教によって支持政党に影響するかどうかをクロス集計表により検証を行った。

クロス集計表はχ2検定(Peason)により1%水準で有意であり(χ2(8)=62.80, p<.01, V=0.15)、信仰する宗教によって支持政党が異なる傾向があると言える。

残差分析より、プロテスタントは共和支持が相対的に強く、カトリックは民主支持が強い。また無宗教は支持政党を持たない傾向が強い。