ライティング実習2A 12組

2024年度 前期 木03 13:30-15:00 瀬田3-B104

Rを用いたクロス集計

本章で用いる実習用ファイル

データを読む:質的データの集計導入問題と同じデータを、Rを使用してクロス集計を行う。

スクリプト

性別×Q1(帰宅時間について両親は厳しいか)
data <- read.csv("https://kyoto-edu.sakura.ne.jp/weblesson/writing/lesson/data.csv")
summary(data)

#クロス集計
source("http://kyoto-edu.sakura.ne.jp/weblesson/statistics/socialStatisticsBasic.R")
crossTable <- crosstab(gender, Q1, data)

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

#結果出力
result

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

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

crosstab関数(socialStatisticsBasic.Rで読み込まれる自作関数)

crosstab(row,column,data)
  • row=行データとなる項目名
  • column=列データとなる項目名
  • data=モデル中の変数を含むデータフレーム(row, columnがおのおの実体を持つ時は省略可)

出力結果

クロス集計表

$crossTable
        1  2  3
female 22 38 40
male   30  8 62

$row.ratio
          1    2    3
female 0.22 0.38 0.40
male   0.30 0.08 0.62

$column.ratio
               1         2         3
female 0.4230769 0.8260870 0.3921569
male   0.5769231 0.1739130 0.6078431

属性によるカテゴリーのサンプルサイズが異なれば、その意識・行動の違いを観測値ベースで比較してもあまり意味がない。

大学1年生の政治意識調査
投票に行く行かない
20以上252550
20未満3070100
5595150

このようなクロス表が得られたとして、20未満の学生は20以上の学生より投票に行く傾向がある、という解釈は端的に間違っている。投票に行くとしているのが、20以上の学生は50%に対して、20未満の学生は30%に過ぎない。つまり比率で比較しなければならない。

というわけで比率計算を行う。

比率計算(部分/全体)は分母となる基準値をどこに置くかによって3種類ある。一般的にクロス集計表で欲しい比率は属性ごとの比率なので、属性を行側に置けば「行方向の比率」を用いる。

行方向の比率
投票に行く行かない
20以上50.00%50.00%100.00%
20未満30.00%70.00%100.00%
36.67%63.33%100.00%
列方向の比率
投票に行く行かない
20以上45.45%26.32%33.33%
20未満54.55%73.68%66.67%
100.00%100.00%100.00%
全体に対する比率
投票に行く行かない
20以上16.67%16.67%33.33%
20未満20.00%46.67%66.67%
36.67%63.33%100.00%

今回は男女における回答傾向の違いを見たいので、男女ごとの比率計算を行っている「$row.ratio」を参照する。

独立性の検定

$chisq.test
         chi sq df            P
Peason 25.54108  2 2.843308e-06
Fisher       NA NA 4.997501e-04
$chisq.test
  • Peason→「Pearsonのカイ2乗:漸近有意確率(両側)」
  • Yates→「連続修正:漸近有意確率(両側)」(※自由度1の時のみ出力)
  • Fisher→「Fhisherの直接法:正確な有意確率(両側)」(※計算量によっては出力されない)

この検定は「期待値と観測値が異なっている」ことを示す両側検定である。ただし観測値 - 期待値を2乗しているので、棄却値はグラフの右側にしか出ない。したがって数式上ではz検定・t検定・F検定の片側検定と同等になる(なおこのクロス表では観測値 - 期待値の符号が確定しないので(セルによって異なる)、片側検定は存在しない)。

一般的にはPeasonを参照すれば良い。

残差分析

独立性の検定はクロス集計全体で行項目と列項目の関係を読み取ることが出来るかどうかを検証するためのものである。個別セルに対する読み取り(男子生徒は帰宅時間について親は「厳しい」と答える傾向がある)の有意性を検証したわけではない。そこでセルごとの傾向とその有意性を改めて検証する。この分析を残差分析と呼ぶ。

$residualAnalysis
               1         2         3
female -1.289652  5.040771 -3.111892
male    1.289652 -5.040771  3.111892

ここで出力されているのは調整済み標準化残差である。この符号からセルごとのズレの方向(男子生徒であることは「厳しい」という回答に対して正の効果を持つ)を読み取る。こうしたセルごとの解釈が統計的有意性を持つかどうかが問題となる。

$res.p.value
            1      2      3
female 0.1972 0.0000 0.0019
male   0.1972 0.0000 0.0019

p値が5%未満の値が有意である。有意なセルに対して標準化残差の符号を読み取ることが出来る。

  • 女子生徒は「どちらとも言えない」と答える傾向が男子生徒より強い
  • 男子生徒は「厳しくない」と答える傾向が女子生徒より強い

効果量Cramer's V

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