クロス集計

1
データベースとクロス集計(経済統計論特殊講義、荒木)
Excel のデータベース機能
基本用語 フィールド
レコード
各列
各行
たとえば、"喫煙の習慣"というフィールド
たとえば、回答者16のレコード
変数とも言う
標本とも言う
ソート
並べ替え
(1) 分析したいデータ範囲のなかのどこかにセルポインタを置いて、
データ → 並べ替え → 適当に条件を指定 降順・昇順
オートフィルタ
検索・抽出
(1) 分析したいデータ範囲のなかのどこかにセルポインタを置いて、
データ → フィルタ → オートフィルタ
(2) 任意の条件に合致するレコードのみを抽出
(3) 処理がひととおり終わったら、
再び、データ → フィルタ → オートフィルタ として、オートフィルタを解除
練習 売上で降順ソート、100 < 営業利益 < 200 かつ 大阪一部上場 などなど
クロス集計とピボットテーブル
クロス集計 アンケート集計など、質的データの分析に多用される。
質的データどうしの関連性を調べたり、
質的データと量的データとの関連性を調べるのが目的。
性別にみた喫煙習慣
無
女
7
男
6
総計
13
有
(人数)
総計
5
12
12
18
17
30
行和に対する相対頻度
(%)
無
有
総計
女
58.3
41.7
100.0
男
33.3
66.7
100.0
総計
43.3
56.7
100.0 男性には喫煙者が多いようである。
列和に対する相対頻度
無
有
女
男
総計
(%)
総計
総和に対する相対頻度
無
有
女
男
総計
(%)
総計
喫煙者の?%は男性である。
回答者のうち女性の喫煙者は?%。
2
データベースとクロス集計(経済統計論特殊講義、荒木)
ピボットテーブル
(1) 分析したいデータ範囲のなかのどこかにセルポインタを置いて、
データ → ピボットテーブル・・・ → 適当に指定しながら次へ → 完了
(2) フィールド名を表の各欄にドラッグして、クロス表を作成
(3) クロス表の数値を、行和に対する相対頻度に変更するには・・・
クロス表の数字の上で右クリック → フィールドの設定 →
オプション → 計算の種類 → 列方向の比率
※ Excel のバグ? 列方向の比率を指定すると行和比率が表示される。
が、よくあることなので、気にしない。
(4) クロス表の上で右クリック → ピボットグラフ で、クロス表をグラフ化
性別×喫煙
性別×ゲコ
男子のみの 喫煙×ゲコ
女子のみの 喫煙×ゲコ
性別×喫煙×ゲコ
などなどのクロス表をつくってみよう
ところで、血糖値をクロス表に加えたいのだが、これは連続量。クラス分けするにはどうするか?
論理関数 IF ( 条件, 真のときの値, 偽のときの値 )
AND ( 条件1, 条件2, … )
OR ( 条件1, 条件2, … )
論理積(かつ、AND)
論理和(あるいは、OR)
喫煙データのワークシートで試してみよう
= IF( D2="有", 1, 0 )
= IF( AND( D2="有", A2>200 ), 1, 0 )
= IF( OR( D2="有", A2>200 ), 1, 0 )
血糖値150未満をクラスA、150-200 をクラスB、200-250をクラスC、
250以上をクラスD としたい場合は・・・
=IF( F2<150, "A", IF( F2<200, "B", IF( F2<250, "C", "D" ) ) )
血糖値の高さと喫煙習慣の有無・飲酒の有無に関連があるかどうか、クロス表を
作成して調べてみよう。
3
データベースとクロス集計(経済統計論特殊講義、荒木)
さらに、表で漠然とわかる関連性を数量化したい。どういう指標を考えうるか?
相関係数 量的データどうしの関連性の方向・強度をはかるものなので、
いま扱っている質的データには使えない。
そこで・・・
カイ二乗統計量
r
c
χ 2 = ∑∑
(nij − eij ) 2
eij
i =1 j =1
c
r
クロス表の行の数
クロス表の列の数
nij
i 行 j 列の度数
eij
i 行 j 列の期待度数
は、総レコード数(標本数)を n
期待度数 eij
c
eij = n ⋅
として
r
∑n ∑n
k =1
ik
n
⋅
k =1
kj
n
クラメールの連関係数
χ2
C=
n(m − 1)
たとえば・・・ 性別にみた喫煙習慣
無
女
7
男
6
総計
13
r = 2, c = 2, n = 30
n11 =
7
n12 =
5
n21 =
6
n22 =
12
e11 =
5.2
e12 =
6.8
e21 =
7.8
e22 =
10.2
( m は r,c のうち小さい方の値 )
有
=
=
=
=
(人数)
総計
5
12
12
18
17
30
30*(12/30)*(13/30)
30*(12/30)*(17/30)
30*(18/30)*(13/30)
30*(18/30)*(17/30)
x2 = 1.832579 =(7-5.2)^2/5.2+(5-6.8)^2/6.8+(6-7.8)^2/7.8+(12-10.2)^2/10.2
C = 0.061086
データベースとクロス集計(経済統計論特殊講義、荒木)
カイ二乗値とクラメールの連関係数を計算する VBA プログラム
Sub renkan()
'
Dim Rsum(100), Csum(100)
'
R = InputBox("行の数は?")
C = InputBox("列の数は?")
'
For i = 1 To R
Rsum(i) = ActiveCell.Offset( i, C + 1).Value
Next i
For j = 1 To C
Csum(j) = ActiveCell.Offset(R + 1, j ).Value
Next j
N = ActiveCell.Offset(R + 1, C + 1).Value
'
Kai2 = 0
For i = 1 To R
For j = 1 To C
Nij = ActiveCell.Offset(i, j).Value
Eij = N * (Rsum(i) / N) * (Csum(j) / N)
Kai2 = Kai2 + (Nij - Eij) ^ 2 / Eij
Next j
Next i
If R > C Then
M = C
Else
M = R
End If
CR = Kai2 / N / (M - 1)
msg =
MsgBox("カイ二乗値=" & Round(Kai2, 6) & " クラメール連関係数=" & Round(CR,
6))
End Sub
実行
クロス表の左上のセルにセルポインタを置いて・・・
→ ツール → マクロ → マクロ → renkan を実行
→ クロス表の行数と列数を指定
ソースファイルを再編集するには・・・
ツール → マクロ → Visual Basic Editor
4