Rによる「カイ二乗検定」(1)
大國 晃
1
導入:「カイ二乗検定」とは(1)
• 「カイ二乗検定、またはχ2検定とは、帰無仮説
が正しければ検定統計量がカイ二乗分布に従
うような統計学的検定法の総称である。」
(Wikipedia より)
• 簡単には、
「検定統計量がカイ二乗分布に(近似的に)従う
ことを利用した統計的検定(※)の総称」
と言ってよい
• ※以下では単に「検定」と表現
2
導入:「カイ二乗検定」とは(2)
• 「検定統計量がカイ二乗分布に従うことを利用した検定」の例
– 最も基本的なもの(→後述)
• 適合度の検定
• 独立性の検定 (←分割表の解析)
– カテゴリカルデータの解析 (・・・カイ二乗使うこと多い)
• コクラン・マンテル・ヘンツェル(CMH)検定、マクネマー検定、・・・
– 生存時間解析
• ログランク検定、一般化ウィルコクソン検定、・・・
– 一般化線形モデル (・・・ロジスティックとかポアソンとか)
• ワルド検定、尤度比検定、スコア検定、・・・
– いわゆるノンパラメトリック検定各種
• クラスカル・ウォリス検定、フリードマン検定、・・・
3
導入:「カイ二乗検定」とは(3)
• R でいろいろな「カイ二乗検定」を実行してみる
– 最も基本的なもの
• 適合度の検定
• 独立性の検定(分割表の解析)
– その他(→別資料で)
• クラスカル・ウォリス検定(分布の位置の群間比較)
• ログランク検定(生存関数の群間比較)
本資料ではこの二つを取り上げる
東京大学教養学部統計学教室編(1991)
『統計学入門』, 東京大学出版会
(↑参考文献[1]) の第12章より
4
適合度の検定
5
R による「カイ二乗検定」の実行例:
適合度の検定(1/6)
• 適合度の検定
– 本文p.245より
「仮定された理論上の確率分布に対して、標本から
求められた度数が適合するかどうか否かを検証す
るのが、適合度のカイ二乗検定 χ2 - test of
goodness of fit である。」
– 表12.5;
メンデルのエンドウ豆データ
6
R による「カイ二乗検定」の実行例:
適合度の検定(2/6)
• 適合度の検定
– 注意(※念のため)
• 帰無仮説:「各特質を持ったエンドウ豆の個数が理論分
布に適合している」
• 得たい結果
– “理論分布に適合している”こと
or
– “理論分布に適合していないとは言えない”こと
• つまり、“帰無仮説が棄却されない”ことを期待している点
に注意が必要
– 適合度の検定が行われる場合はこうしたケースが多い
– そうではない、帰無仮説を棄却する“より普通の検定”のケースも
たまにある
7
R による「カイ二乗検定」の実行例:
適合度の検定(3/6)
• 適合度の検定:スクリプト全文
#=====================================================
# 適合度の検定
#=====================================================
#元データの作成(表12.5;メンデルのエンドウ豆データ)
o.num <- c( 315, 101, 108, 32) #観測度数
th.prob <- c(9/16, 3/16, 3/16, 1/16) #理論確率
#理論度数(あるいは期待度数 Expected frequency)
(e.num <- sum(o.num) * th.prob)
#観測度数と期待度数の差
(oe.gap <- o.num - e.num)
#表(データ・フレーム)を作成してデータを確認
(tbl.0 <- data.frame(o.num, th.prob, e.num, oe.gap))
colnames(tbl.0) <- c("観測度数", "確率", "期待度数", "両度数の差")
col.sum <- colSums(tbl.0)
tbl.12.5 <- rbind(tbl.0, col.sum)
rownames(tbl.12.5) <- c("黄・丸い", "黄・しわ", "緑・丸い", "緑・しわ", "計")
tbl.12.5
#適合度の検定統計量の各要素の計算
# (chsq0 <- oe.gap^2 / e.num)と同じだが、
# 原理の理解のためには下記の式の方が分かりやすい。
(chsq0 <- (o.num - e.num)^2 / e.num)
#適合度の検定統計量(カイ二乗値)の算出
(chisq1 <- sum(chsq0))
#カイ二乗検定の実行
pchisq(chisq1, length(chsq0) - 1, lower.tail = F)
(1)データの作成
(2)見やすさのための整形
※検定の実行には関係ない
(3)検定の実行
8
R による「カイ二乗検定」の実行例:
適合度の検定(4/6)
• 適合度の検定:(1)データの作成
– 帰無仮説:
「各特質を持ったエンドウ豆の個数が理論分布に適合している」
• 各特質 ・・・ 黄・丸い, 黄・しわ, 緑・丸い, 緑・しわ
• 理論分布 ・・・ 9/16, 3/16, 3/16, 1/16
> #元データの作成(表12.5;メンデルのエンドウ豆データ)
> o.num <- c( 315, 101, 108, 32) #観測度数
> th.prob <- c(9/16, 3/16, 3/16, 1/16) #理論確率
>
> #理論度数(あるいは期待度数 Expected frequency)
> (e.num <- sum(o.num) * th.prob)
[1] 312.75 104.25 104.25 34.75
>
> #観測度数と期待度数の差
> (oe.gap <- o.num - e.num)
[1] 2.25 -3.25 3.75 -2.75
期待度数の算出
→全体のデータ件数×各要素の理論確率
◆コンソールへの出力
9
R による「カイ二乗検定」の実行例:
適合度の検定(5/6)
• 適合度の検定:(2)見やすさのための整形
> #表(データ・フレーム)を作成してデータを確認
> (tbl.0 <- data.frame(o.num, th.prob, e.num, oe.gap))
o.num th.prob e.num oe.gap
1 315 0.5625 312.75 2.25
2 101 0.1875 104.25 -3.25
3 108 0.1875 104.25 3.75
4 32 0.0625 34.75 -2.75
> colnames(tbl.0) <- c("観測度数", "確率", "期待度数", "両度数の差")
> col.sum <- colSums(tbl.0)
> tbl.12.5 <- rbind(tbl.0, col.sum)
> rownames(tbl.12.5) <- c("黄・丸い", "黄・しわ", "緑・丸い", "緑・しわ", "計")
> tbl.12.5
観測度数 確率 期待度数 両度数の差
黄・丸い 315 0.5625 312.75 2.25
黄・しわ 101 0.1875 104.25 -3.25
緑・丸い 108 0.1875 104.25 3.75
緑・しわ 32 0.0625 34.75 -2.75
計 556 1.0000 556.00 0.00
◆コンソールへの出力
個別に作成していたベクトルを
まとめてデータ・フレームとする
表形式にして見やすくするため
(だけ)に行っている
テキストの「表12.5」と同じ内容
行と列は入れ替えている
10
R による「カイ二乗検定」の実行例:
適合度の検定(6/6)
• 適合度の検定:(3)検定の実行
> #適合度の検定統計量の各要素の計算
> # (chsq0 <- oe.gap^2 / e.num)と同じだが、
> # 原理の理解のためには下記の式の方が分かりやすい。
> (chsq0 <- (o.num - e.num)^2 / e.num)
[1] 0.01618705 0.10131894 0.13489209 0.21762590
>
> #適合度の検定統計量(カイ二乗値)の算出
> (chisq1 <- sum(chsq0))
[1] 0.470024
>
> #カイ二乗検定の実行
> pchisq(chisq1, length(chsq0) - 1, lower.tail = F)
[1] 0.9254259
◆コンソールへの出力
「(観測 - 期待)^2
/ 期待」を要素ごと
に計算
pchisq(検定統計量, 自由度)
• 検定統計量に基づくp値の算出
• 自由度→ここでは“区分数 - 1”となる
• “lower.tail = F” ・・・ 上側確率の指定
要素ごとに算出された「(観測 - 期待)^2 / 期待」
を合計
⇒検定統計量であるカイ二乗値となる
「理論分布に適合している」という
帰無仮説は棄却されない
⇒“理論に適合”(望みどおり)
11
独立性の検定
12
R による「カイ二乗検定」の実行例:
独立性の検定(1/10)
• 独立性の検定
– 分割表(クロス集計表)の解析の基本の“キ”
• 二つの変数の間に関連があるか?
二つの変数が独立かどうか?
• “二群の割合(比率)の差の検定”と同義
– 表12.9;ある大学の工学部の期末試験の成績
– 注意点
– 注意点1:
非常に小さい標本の場合は、検定結果はやや疑わしくなる
– 注意点2:
大標本の場合、単に検定を行うだけではほとんど意味が無い
– 注意点3:
順序のあるカテゴリの場合は、より適切な検定方法を採ることで検出力
が向上する
13
R による「カイ二乗検定」の実行例:
独立性の検定(2/10)
• 独立性の検定:スクリプト全文(方法1)
#===============================================
# 分割表と独立性の検定
#===============================================
#元データの作成(表12.9;ある大学の工学部の期末試験の成績)
(mat0 <- matrix(c(4, 2, 3, 8, 4, 6, 6, 3, 6),
nrow = 3, ncol = 3, byrow = T))
mat.12.9 <- addmargins(mat0)
rownames(mat.12.9) <- c("代数:優", "代数:良", "代数:可", "計")
colnames(mat.12.9) <- c("解析:優", "解析:良", "解析:可", "計")
mat.12.9
#----------
#方法1:
#関数「chisq.test」を利用して「カイ二乗検定」(独立性の検定)を実行
#----------
#(頻度が5以下のセルがあるため、Warning message が出力される)
chi.out <- chisq.test(mat0)
str(chi.out)
(1)データの作成
(2)「chisq.test」
による検定の実行
14
R による「カイ二乗検定」の実行例:
独立性の検定(3/10)
• 独立性の検定:スクリプト全文(方法2)
#----------
#方法2:
#一つ一つ計算して「カイ二乗検定」を実行
#----------
#周辺確率分布の算出
(all.sum <- sum(mat0))
(p.row <- apply(mat0, 1, function(r, sum = all.sum){sum(r) / sum}))
(p.col <- apply(mat0, 2, function(c, sum = all.sum){sum(c) / sum}))
#期待度数の算出(期待度数=全体のケース数と周辺確率の積)
(e.mat0 <- sum(mat0) * p.row %*% t(p.col))
#カイ二乗検定の実行
(chisq.mat0 <- (mat0 - e.mat0)^2 / e.mat0) #検定統計量の各要素の計算
(chisq2 <- sum(chisq.mat0)) #上記を全てのセルで足し合わせる
(DF <- (nrow(mat0) - 1) * (ncol(mat0) - 1)) #自由度 = (行数 - 1) * (列数 - 1)
pchisq(chisq2, DF, lower.tail = F)
#おまけ(残差分析:調整済み標準化残差の算出)
(r.std <- (mat0 - e.mat0) / sqrt(e.mat0)) #標準化残差(残差)
r.var <- (1 - p.row) %*% t(1 - p.col) #残差分散
(r.std.adj <- (mat0 - e.mat0) / sqrt(e.mat0 * r.var)) #調整済み標準化残差(標準化残差)
15
R による「カイ二乗検定」の実行例:
独立性の検定(4/10)
• 独立性の検定:(1)データの作成
– 表12.9;ある大学の工学部の期末試験の成績
– 帰無仮説:
「代数の成績と解析の成績には関連があるか/独立か?」
「代数の成績が良い(悪い)と解析の成績も良い(悪い)と言えるか?」
> #================================================================
> # 分割表と独立性の検定
> #================================================================
> #元データの作成(表12.9;ある大学の工学部の期末試験の成績)
> (mat0 <- matrix(c(4, 2, 3, 8, 4, 6, 6, 3, 6),
+ nrow = 3, ncol = 3, byrow = T))
[,1] [,2] [,3]
[1,] 4 2 3
[2,] 8 4 6
[3,] 6 3 6
◆コンソールへの出力
16
R による「カイ二乗検定」の実行例:
独立性の検定(5/10)
• 独立性の検定:(1)データの作成
– 表12.9;ある大学の工学部の期末試験の成績
– 帰無仮説:
「代数の成績と解析の成績には関連があるか/独立か?」
「代数の成績が良い(悪い)と解析の成績も良い(悪い)と言えるか?」
> mat.12.9 <- addmargins(mat0)
> rownames(mat.12.9) <- c("代数:優", "代数:良", "代数:可", "計")
> colnames(mat.12.9) <- c("解析:優", "解析:良", "解析:可", "計")
> mat.12.9
解析:優 解析:良 解析:可 計
代数:優 4 2 3 9
代数:良 8 4 6 18
代数:可 6 3 6 15
計 18 9 15 42
◆コンソールへの出力
17
R による「カイ二乗検定」の実行例:
独立性の検定(6/10)
• 独立性の検定:(2)「chisq.test」による検定の実行
– 頻度が5以下のセルがある場合、Warning message が出力
される
→注意点1参照
> #----------
> #方法1:
> #関数「chisq.test」を利用して「カイ二乗検定」(独立性の検定)を実行
> #----------
> #(頻度が5以下のセルがあるため、Warning message が出力される)
> chi.out <- chisq.test(mat0)
Warning message:
In chisq.test(mat0) : Chi-squared approximation may be incorrect
◆コンソールへの出力
18
R による「カイ二乗検定」の実行例:
独立性の検定(7/10)
• 独立性の検定:(2)「chisq.test」による検定の実行
> str(chi.out)
List of 9
$ statistic: Named num 0.187
..- attr(*, "names")= chr "X-squared"
$ parameter: Named int 4
..- attr(*, "names")= chr "df"
$ p.value : num 0.996
$ method : chr "Pearson's Chi-squared test"
$ data.name: chr "mat0"
$ observed : num [1:3, 1:3] 4 8 6 2 4 3 3 6 6
$ expected : num [1:3, 1:3] 3.86 7.71 6.43 1.93 3.86 ...
$ residuals: num [1:3, 1:3] 0.0727 0.1029 -0.169 0.0514 0.0727 ...
$ stdres : num [1:3, 1:3] 0.1086 0.18 -0.2789 0.0655 0.1086 ...
- attr(*, "class")= chr "htest"
◆コンソールへの出力 「chisq.test」の出力内容
(リスト)の内容を確認
→右記参照
★主な出力内容
•statistics:
• カイ二乗統計量
(※名前付き)
•parameter
• 自由度(※名前付き)
•p.value
• p値
•observed
• 観測度数
•expected
• 期待度数
•residuals
• 標準化残差
(or 残差)
•stdres
• 調整済み標準化残差
(or 標準化残差)
19
R による「カイ二乗検定」の実行例:
独立性の検定(8/10)
• 独立性の検定:(3)方法2(期待度数の算出)
> #----------
> #方法2:
> #一つ一つ計算して「カイ二乗検定」を実行
> #----------
> #周辺確率分布の算出
> (all.sum <- sum(mat0))
[1] 42
> (p.row <- apply(mat0, 1, function(r, sum = all.sum){sum(r) / sum}))
[1] 0.2142857 0.4285714 0.3571429
> (p.col <- apply(mat0, 2, function(c, sum = all.sum){sum(c) / sum}))
[1] 0.4285714 0.2142857 0.3571429
>
> #期待度数の算出(期待度数=全体のケース数と周辺確率の積)
> (e.mat0 <- sum(mat0) * p.row %*% t(p.col))
[,1] [,2] [,3]
[1,] 3.857143 1.928571 3.214286
[2,] 7.714286 3.857143 6.428571
[3,] 6.428571 3.214286 5.357143
◆コンソールへの出力
行方向の周辺確率分布
(=行和/総ケース数)
列方向の周辺確率分布
(=列和/総ケース数)
20
R による「カイ二乗検定」の実行例:
独立性の検定(9/10)
• 独立性の検定:(3)方法2(「カイ二乗検定」の実行)
> #「カイ二乗検定」の実行
> (chisq.mat0 <- (mat0 - e.mat0)^2 / e.mat0) #検定統計量の各要素の計算
[,1] [,2] [,3]
[1,] 0.005291005 0.002645503 0.01428571
[2,] 0.010582011 0.005291005 0.02857143
[3,] 0.028571429 0.014285714 0.07714286
> (chisq2 <- sum(chisq.mat0)) #上記を全てのセルで足し合わせる
[1] 0.1866667
> (DF <- (nrow(mat0) - 1) * (ncol(mat0) - 1)) #自由度 = (行数 - 1) * (列数 - 1)
[1] 4
> pchisq(chisq2, DF, lower.tail = F)
[1] 0.9959062
◆コンソールへの出力
「代数の成績と解析の成績には関連があるか/独立か?」
「代数の成績が良い(悪い)と解析の成績も良い(悪い)と言えるか?」
という帰無仮説は棄却されない
⇒「代数の成績が良く(悪く)ても、必ずしも解析の成績も良い(悪い)わけではない」
(むしろ、この二つには全く関連が無く“独立”だという可能性が高い数値)
⇒独立性の検定においては、通常は“望みどおりではない”
(※この調査ではどうだったかは分からない)
21
R による「カイ二乗検定」の実行例:
独立性の検定(10/10)
• 独立性の検定:(3)方法2(おまけ・・・残差分析)
> #おまけ(残差分析:調整済み標準化残差の算出)
> (r.std <- (mat0 - e.mat0) / sqrt(e.mat0)) #標準化残差(残差)
[,1] [,2] [,3]
[1,] 0.0727393 0.05143445 -0.1195229
[2,] 0.1028689 0.07273930 -0.1690309
[3,] -0.1690309 -0.11952286 0.2777460
> r.var <- (1 - p.row) %*% t(1 - p.col) #残差分散
> (r.std.adj <- (mat0 - e.mat0) / sqrt(e.mat0 * r.var)) #調整済み標準化残差(標準化残差)
[,1] [,2] [,3]
[1,] 0.1085565 0.06546203 -0.1681750
[2,] 0.1800206 0.10855649 -0.2788867
[3,] -0.2788867 -0.16817499 0.4320494
◆コンソールへの出力
「chisq.test」では
「residuals」として出力
「chisq.test」では
「stdres」として出力
(二つの変数間に連関がある/独立であるという前提で、)「調整済み標準化残差」による
分析(残差分析)により、 “どのカテゴリー間にどの程度の連関があるのか”が分かる
「二つの変数は連関がある/独立でない」という結論が得られていない(→帰無仮説が
棄却されていない)場合は、上記の残差分析は意味が無い
参考文献[2]等参照
22
参考文献
[1]東京大学教養学部統計学教室編(1991),
『統計学入門』, 東京大学出版会
[2]Agresti, A.(1996), An Introduction to
Categorical Data Analysis, John Wiley &
Sons (渡邉ら訳(2003), 『カテゴリカルデータ
解析入門』, サイエンティスト社)
[3]芝・南風原(1990), 『行動科学における統計解
析法』, 東京大学出版会

More Related Content

PDF
テンソル多重線形ランクの推定法について(Estimation of Multi-linear Tensor Rank)
PDF
統計勉強会 分割表とカイ二乗検定
PDF
ImageJを使った画像解析実習〜起動・終了とファイルの入出力〜
PDF
ImageJを使った画像解析実習〜2値化・領域抽出〜
PDF
Autoencoderの実装と愉快な仲間との比較
PDF
DARM勉強会第3回 (missing data analysis)
PDF
ディープラーニングでラーメン二郎(全店舗)を識別してみた
PDF
星野「調査観察データの統計科学」第3章
テンソル多重線形ランクの推定法について(Estimation of Multi-linear Tensor Rank)
統計勉強会 分割表とカイ二乗検定
ImageJを使った画像解析実習〜起動・終了とファイルの入出力〜
ImageJを使った画像解析実習〜2値化・領域抽出〜
Autoencoderの実装と愉快な仲間との比較
DARM勉強会第3回 (missing data analysis)
ディープラーニングでラーメン二郎(全店舗)を識別してみた
星野「調査観察データの統計科学」第3章

What's hot (20)

PDF
10分でわかったつもりになるLean Analytics_10min lean analytics
PDF
{tidytext}と{RMeCab}によるモダンな日本語テキスト分析
PDF
機械学習のためのベイズ最適化入門
PDF
セミパラメトリック推論の基礎
PDF
能動学習セミナー
PDF
Tech-Circle #18 Pythonではじめる強化学習 OpenAI Gym 体験ハンズオン
PDF
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
PDF
MixMatch: A Holistic Approach to Semi- Supervised Learning
PPTX
充足可能性問題のいろいろ
PDF
【DL輪読会】RLCD: Reinforcement Learning from Contrast Distillation for Language M...
PPT
100614 構造方程式モデリング基本の「き」
PDF
多重代入法の書き方 公開用
PDF
決定木学習
PPTX
馬に蹴られるモデリング
PDF
Re永続データ構造が分からない人のためのスライド
PDF
リーンスタートアップを理解する
PDF
チュートリアル:細胞画像を使った初めてのディープラーニング
PDF
解説#81 ロジスティック回帰
PDF
目で見る過学習と正則化
PDF
R を起動するその前に
10分でわかったつもりになるLean Analytics_10min lean analytics
{tidytext}と{RMeCab}によるモダンな日本語テキスト分析
機械学習のためのベイズ最適化入門
セミパラメトリック推論の基礎
能動学習セミナー
Tech-Circle #18 Pythonではじめる強化学習 OpenAI Gym 体験ハンズオン
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
MixMatch: A Holistic Approach to Semi- Supervised Learning
充足可能性問題のいろいろ
【DL輪読会】RLCD: Reinforcement Learning from Contrast Distillation for Language M...
100614 構造方程式モデリング基本の「き」
多重代入法の書き方 公開用
決定木学習
馬に蹴られるモデリング
Re永続データ構造が分からない人のためのスライド
リーンスタートアップを理解する
チュートリアル:細胞画像を使った初めてのディープラーニング
解説#81 ロジスティック回帰
目で見る過学習と正則化
R を起動するその前に
Ad

Viewers also liked (20)

PDF
ICML2013読み会 開会宣言
PDF
(道具としての)データサイエンティストのつかい方
PDF
離散時間ロジスティック回帰モデル解説
PDF
R実践 機械学習による異常検知 01
PDF
ビッグデータはどこまで効率化できるか?
PDF
Tokyo r15 異常検知入門
PDF
R実践 機械学習による異常検知 02
PDF
異常検知と変化検知 第4章 近傍法による異常検知
PDF
Chainer GTC 2016
PPTX
さらば!データサイエンティスト
PDF
Software for Edge Heavy Computing @ INTEROP 2016 Tokyo
PDF
NIPS2015概要資料
PDF
Jubatus Casual Talks #2 異常検知入門
PDF
データサイエンティストのつくり方
PPTX
機械学習を用いた異常検知入門
PDF
How AI revolutionizes robotics and automotive industries
PDF
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
PDF
FIT2012招待講演「異常検知技術のビジネス応用最前線」
PDF
時系列分析による異常検知入門
PDF
エクセルで統計分析 統計プログラムHADについて
ICML2013読み会 開会宣言
(道具としての)データサイエンティストのつかい方
離散時間ロジスティック回帰モデル解説
R実践 機械学習による異常検知 01
ビッグデータはどこまで効率化できるか?
Tokyo r15 異常検知入門
R実践 機械学習による異常検知 02
異常検知と変化検知 第4章 近傍法による異常検知
Chainer GTC 2016
さらば!データサイエンティスト
Software for Edge Heavy Computing @ INTEROP 2016 Tokyo
NIPS2015概要資料
Jubatus Casual Talks #2 異常検知入門
データサイエンティストのつくり方
機械学習を用いた異常検知入門
How AI revolutionizes robotics and automotive industries
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
FIT2012招待講演「異常検知技術のビジネス応用最前線」
時系列分析による異常検知入門
エクセルで統計分析 統計プログラムHADについて
Ad

Similar to Chisq 01 (20)

PDF
第1回R勉強会@東京
PDF
2011年11月11日
PDF
実践データ分析基礎
PDF
第4回DARM勉強会 (構造方程式モデリング)
PPTX
アンケートデータ集計・分析のためのExcel
PDF
カテゴリカルデータの解析 (Kashiwa.R#3)
PDF
20130716 はじパタ3章前半 ベイズの識別規則
PPT
K030 appstat201203 2variable
PDF
Yamadai.Rデモンストレーションセッション
PPTX
ブートストラップ法とその周辺とR
PDF
Rで実験計画法 前編
PDF
Rm20140702 11key
PPTX
第2回DARM勉強会
PDF
みどりぼん読書会 第4章
PDF
2015-1003 英語コーパス学会ワークショップ使用スライド
PPTX
Analyze by StatsModels or Numpy
PDF
テーマ別勉強会(R言語)#2.pdf
PDF
Tokyor60 r data_science_part1
PDF
JASELE2015-KumamotoWS
PDF
Rで学ぶロバスト推定
第1回R勉強会@東京
2011年11月11日
実践データ分析基礎
第4回DARM勉強会 (構造方程式モデリング)
アンケートデータ集計・分析のためのExcel
カテゴリカルデータの解析 (Kashiwa.R#3)
20130716 はじパタ3章前半 ベイズの識別規則
K030 appstat201203 2variable
Yamadai.Rデモンストレーションセッション
ブートストラップ法とその周辺とR
Rで実験計画法 前編
Rm20140702 11key
第2回DARM勉強会
みどりぼん読書会 第4章
2015-1003 英語コーパス学会ワークショップ使用スライド
Analyze by StatsModels or Numpy
テーマ別勉強会(R言語)#2.pdf
Tokyor60 r data_science_part1
JASELE2015-KumamotoWS
Rで学ぶロバスト推定

Recently uploaded (17)

PDF
3_「本当の『悪者』って何?」鷗友学園女子中学校_福島 雪乃さんinspirehigh.pdf
PDF
「なぜ、好きなことにいつかは飽きるの?」大塚莉子 - My Inspire High Award 2024.pdf
PDF
7_「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」明治大学付属中野八王子中学校宮本ゆりかさん.pdf
PPTX
PPT KANJI IRODORI SHOKYUU 1 BAB 9 (FURIGANA)
PDF
13_「他者と自分、対立を防ぐには?」市原中央高等学校 大野リリinspirehigh.pdf
PDF
11_「なぜ議会への関心が低いのか?」長野県長野西高等学校 片桐 菜々美さん.pdf
PDF
14_「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」公文国際学園高等部古澤琴子.pdf
PDF
8_「世の中の流行はどのようにして生まれるのか」学校法人聖ドミニコ学園竹野はるいpptx.pdf
PDF
12_「家族とは何か」星の杜中学校小倉ももこ『家族ってなに』inspirehigh.pdf
PDF
共同売店から考える沖縄の新しい流通のしくみ2025琉球大学流通原論講義資料.pdf
PDF
6_「老いることは不幸なこと?」植草学園大学附属高等学校森 珠貴さんinspirehigh.pdf
PDF
外国人が日本のテーブルマナーに驚く理由は?_公文国際学園高等部 角田 恵梨佳さん
PDF
9_前田音葉さん:「Yakushima Islandってなんか変じゃない?」.pdf
PDF
My Inspire High Award 2024(岡田秀幸).pptx.pdf
PDF
10_「孤独は敵なのか?」 桜花学園高等学校堀川愛可さんinspirehigh.pdf
PDF
12_星の杜中学校小倉ももこ『家族ってなに』inspirehigh発表物.pdf
PDF
5_「AIと仲良くなるには?」日本大学東北高等学校南梨夢乃さんinspirehigh.pdf
3_「本当の『悪者』って何?」鷗友学園女子中学校_福島 雪乃さんinspirehigh.pdf
「なぜ、好きなことにいつかは飽きるの?」大塚莉子 - My Inspire High Award 2024.pdf
7_「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」明治大学付属中野八王子中学校宮本ゆりかさん.pdf
PPT KANJI IRODORI SHOKYUU 1 BAB 9 (FURIGANA)
13_「他者と自分、対立を防ぐには?」市原中央高等学校 大野リリinspirehigh.pdf
11_「なぜ議会への関心が低いのか?」長野県長野西高等学校 片桐 菜々美さん.pdf
14_「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」公文国際学園高等部古澤琴子.pdf
8_「世の中の流行はどのようにして生まれるのか」学校法人聖ドミニコ学園竹野はるいpptx.pdf
12_「家族とは何か」星の杜中学校小倉ももこ『家族ってなに』inspirehigh.pdf
共同売店から考える沖縄の新しい流通のしくみ2025琉球大学流通原論講義資料.pdf
6_「老いることは不幸なこと?」植草学園大学附属高等学校森 珠貴さんinspirehigh.pdf
外国人が日本のテーブルマナーに驚く理由は?_公文国際学園高等部 角田 恵梨佳さん
9_前田音葉さん:「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024(岡田秀幸).pptx.pdf
10_「孤独は敵なのか?」 桜花学園高等学校堀川愛可さんinspirehigh.pdf
12_星の杜中学校小倉ももこ『家族ってなに』inspirehigh発表物.pdf
5_「AIと仲良くなるには?」日本大学東北高等学校南梨夢乃さんinspirehigh.pdf

Chisq 01

  • 2. 1 導入:「カイ二乗検定」とは(1) • 「カイ二乗検定、またはχ2検定とは、帰無仮説 が正しければ検定統計量がカイ二乗分布に従 うような統計学的検定法の総称である。」 (Wikipedia より) • 簡単には、 「検定統計量がカイ二乗分布に(近似的に)従う ことを利用した統計的検定(※)の総称」 と言ってよい • ※以下では単に「検定」と表現
  • 3. 2 導入:「カイ二乗検定」とは(2) • 「検定統計量がカイ二乗分布に従うことを利用した検定」の例 – 最も基本的なもの(→後述) • 適合度の検定 • 独立性の検定 (←分割表の解析) – カテゴリカルデータの解析 (・・・カイ二乗使うこと多い) • コクラン・マンテル・ヘンツェル(CMH)検定、マクネマー検定、・・・ – 生存時間解析 • ログランク検定、一般化ウィルコクソン検定、・・・ – 一般化線形モデル (・・・ロジスティックとかポアソンとか) • ワルド検定、尤度比検定、スコア検定、・・・ – いわゆるノンパラメトリック検定各種 • クラスカル・ウォリス検定、フリードマン検定、・・・
  • 4. 3 導入:「カイ二乗検定」とは(3) • R でいろいろな「カイ二乗検定」を実行してみる – 最も基本的なもの • 適合度の検定 • 独立性の検定(分割表の解析) – その他(→別資料で) • クラスカル・ウォリス検定(分布の位置の群間比較) • ログランク検定(生存関数の群間比較) 本資料ではこの二つを取り上げる 東京大学教養学部統計学教室編(1991) 『統計学入門』, 東京大学出版会 (↑参考文献[1]) の第12章より
  • 6. 5 R による「カイ二乗検定」の実行例: 適合度の検定(1/6) • 適合度の検定 – 本文p.245より 「仮定された理論上の確率分布に対して、標本から 求められた度数が適合するかどうか否かを検証す るのが、適合度のカイ二乗検定 χ2 - test of goodness of fit である。」 – 表12.5; メンデルのエンドウ豆データ
  • 7. 6 R による「カイ二乗検定」の実行例: 適合度の検定(2/6) • 適合度の検定 – 注意(※念のため) • 帰無仮説:「各特質を持ったエンドウ豆の個数が理論分 布に適合している」 • 得たい結果 – “理論分布に適合している”こと or – “理論分布に適合していないとは言えない”こと • つまり、“帰無仮説が棄却されない”ことを期待している点 に注意が必要 – 適合度の検定が行われる場合はこうしたケースが多い – そうではない、帰無仮説を棄却する“より普通の検定”のケースも たまにある
  • 8. 7 R による「カイ二乗検定」の実行例: 適合度の検定(3/6) • 適合度の検定:スクリプト全文 #===================================================== # 適合度の検定 #===================================================== #元データの作成(表12.5;メンデルのエンドウ豆データ) o.num <- c( 315, 101, 108, 32) #観測度数 th.prob <- c(9/16, 3/16, 3/16, 1/16) #理論確率 #理論度数(あるいは期待度数 Expected frequency) (e.num <- sum(o.num) * th.prob) #観測度数と期待度数の差 (oe.gap <- o.num - e.num) #表(データ・フレーム)を作成してデータを確認 (tbl.0 <- data.frame(o.num, th.prob, e.num, oe.gap)) colnames(tbl.0) <- c("観測度数", "確率", "期待度数", "両度数の差") col.sum <- colSums(tbl.0) tbl.12.5 <- rbind(tbl.0, col.sum) rownames(tbl.12.5) <- c("黄・丸い", "黄・しわ", "緑・丸い", "緑・しわ", "計") tbl.12.5 #適合度の検定統計量の各要素の計算 # (chsq0 <- oe.gap^2 / e.num)と同じだが、 # 原理の理解のためには下記の式の方が分かりやすい。 (chsq0 <- (o.num - e.num)^2 / e.num) #適合度の検定統計量(カイ二乗値)の算出 (chisq1 <- sum(chsq0)) #カイ二乗検定の実行 pchisq(chisq1, length(chsq0) - 1, lower.tail = F) (1)データの作成 (2)見やすさのための整形 ※検定の実行には関係ない (3)検定の実行
  • 9. 8 R による「カイ二乗検定」の実行例: 適合度の検定(4/6) • 適合度の検定:(1)データの作成 – 帰無仮説: 「各特質を持ったエンドウ豆の個数が理論分布に適合している」 • 各特質 ・・・ 黄・丸い, 黄・しわ, 緑・丸い, 緑・しわ • 理論分布 ・・・ 9/16, 3/16, 3/16, 1/16 > #元データの作成(表12.5;メンデルのエンドウ豆データ) > o.num <- c( 315, 101, 108, 32) #観測度数 > th.prob <- c(9/16, 3/16, 3/16, 1/16) #理論確率 > > #理論度数(あるいは期待度数 Expected frequency) > (e.num <- sum(o.num) * th.prob) [1] 312.75 104.25 104.25 34.75 > > #観測度数と期待度数の差 > (oe.gap <- o.num - e.num) [1] 2.25 -3.25 3.75 -2.75 期待度数の算出 →全体のデータ件数×各要素の理論確率 ◆コンソールへの出力
  • 10. 9 R による「カイ二乗検定」の実行例: 適合度の検定(5/6) • 適合度の検定:(2)見やすさのための整形 > #表(データ・フレーム)を作成してデータを確認 > (tbl.0 <- data.frame(o.num, th.prob, e.num, oe.gap)) o.num th.prob e.num oe.gap 1 315 0.5625 312.75 2.25 2 101 0.1875 104.25 -3.25 3 108 0.1875 104.25 3.75 4 32 0.0625 34.75 -2.75 > colnames(tbl.0) <- c("観測度数", "確率", "期待度数", "両度数の差") > col.sum <- colSums(tbl.0) > tbl.12.5 <- rbind(tbl.0, col.sum) > rownames(tbl.12.5) <- c("黄・丸い", "黄・しわ", "緑・丸い", "緑・しわ", "計") > tbl.12.5 観測度数 確率 期待度数 両度数の差 黄・丸い 315 0.5625 312.75 2.25 黄・しわ 101 0.1875 104.25 -3.25 緑・丸い 108 0.1875 104.25 3.75 緑・しわ 32 0.0625 34.75 -2.75 計 556 1.0000 556.00 0.00 ◆コンソールへの出力 個別に作成していたベクトルを まとめてデータ・フレームとする 表形式にして見やすくするため (だけ)に行っている テキストの「表12.5」と同じ内容 行と列は入れ替えている
  • 11. 10 R による「カイ二乗検定」の実行例: 適合度の検定(6/6) • 適合度の検定:(3)検定の実行 > #適合度の検定統計量の各要素の計算 > # (chsq0 <- oe.gap^2 / e.num)と同じだが、 > # 原理の理解のためには下記の式の方が分かりやすい。 > (chsq0 <- (o.num - e.num)^2 / e.num) [1] 0.01618705 0.10131894 0.13489209 0.21762590 > > #適合度の検定統計量(カイ二乗値)の算出 > (chisq1 <- sum(chsq0)) [1] 0.470024 > > #カイ二乗検定の実行 > pchisq(chisq1, length(chsq0) - 1, lower.tail = F) [1] 0.9254259 ◆コンソールへの出力 「(観測 - 期待)^2 / 期待」を要素ごと に計算 pchisq(検定統計量, 自由度) • 検定統計量に基づくp値の算出 • 自由度→ここでは“区分数 - 1”となる • “lower.tail = F” ・・・ 上側確率の指定 要素ごとに算出された「(観測 - 期待)^2 / 期待」 を合計 ⇒検定統計量であるカイ二乗値となる 「理論分布に適合している」という 帰無仮説は棄却されない ⇒“理論に適合”(望みどおり)
  • 13. 12 R による「カイ二乗検定」の実行例: 独立性の検定(1/10) • 独立性の検定 – 分割表(クロス集計表)の解析の基本の“キ” • 二つの変数の間に関連があるか? 二つの変数が独立かどうか? • “二群の割合(比率)の差の検定”と同義 – 表12.9;ある大学の工学部の期末試験の成績 – 注意点 – 注意点1: 非常に小さい標本の場合は、検定結果はやや疑わしくなる – 注意点2: 大標本の場合、単に検定を行うだけではほとんど意味が無い – 注意点3: 順序のあるカテゴリの場合は、より適切な検定方法を採ることで検出力 が向上する
  • 14. 13 R による「カイ二乗検定」の実行例: 独立性の検定(2/10) • 独立性の検定:スクリプト全文(方法1) #=============================================== # 分割表と独立性の検定 #=============================================== #元データの作成(表12.9;ある大学の工学部の期末試験の成績) (mat0 <- matrix(c(4, 2, 3, 8, 4, 6, 6, 3, 6), nrow = 3, ncol = 3, byrow = T)) mat.12.9 <- addmargins(mat0) rownames(mat.12.9) <- c("代数:優", "代数:良", "代数:可", "計") colnames(mat.12.9) <- c("解析:優", "解析:良", "解析:可", "計") mat.12.9 #---------- #方法1: #関数「chisq.test」を利用して「カイ二乗検定」(独立性の検定)を実行 #---------- #(頻度が5以下のセルがあるため、Warning message が出力される) chi.out <- chisq.test(mat0) str(chi.out) (1)データの作成 (2)「chisq.test」 による検定の実行
  • 15. 14 R による「カイ二乗検定」の実行例: 独立性の検定(3/10) • 独立性の検定:スクリプト全文(方法2) #---------- #方法2: #一つ一つ計算して「カイ二乗検定」を実行 #---------- #周辺確率分布の算出 (all.sum <- sum(mat0)) (p.row <- apply(mat0, 1, function(r, sum = all.sum){sum(r) / sum})) (p.col <- apply(mat0, 2, function(c, sum = all.sum){sum(c) / sum})) #期待度数の算出(期待度数=全体のケース数と周辺確率の積) (e.mat0 <- sum(mat0) * p.row %*% t(p.col)) #カイ二乗検定の実行 (chisq.mat0 <- (mat0 - e.mat0)^2 / e.mat0) #検定統計量の各要素の計算 (chisq2 <- sum(chisq.mat0)) #上記を全てのセルで足し合わせる (DF <- (nrow(mat0) - 1) * (ncol(mat0) - 1)) #自由度 = (行数 - 1) * (列数 - 1) pchisq(chisq2, DF, lower.tail = F) #おまけ(残差分析:調整済み標準化残差の算出) (r.std <- (mat0 - e.mat0) / sqrt(e.mat0)) #標準化残差(残差) r.var <- (1 - p.row) %*% t(1 - p.col) #残差分散 (r.std.adj <- (mat0 - e.mat0) / sqrt(e.mat0 * r.var)) #調整済み標準化残差(標準化残差)
  • 16. 15 R による「カイ二乗検定」の実行例: 独立性の検定(4/10) • 独立性の検定:(1)データの作成 – 表12.9;ある大学の工学部の期末試験の成績 – 帰無仮説: 「代数の成績と解析の成績には関連があるか/独立か?」 「代数の成績が良い(悪い)と解析の成績も良い(悪い)と言えるか?」 > #================================================================ > # 分割表と独立性の検定 > #================================================================ > #元データの作成(表12.9;ある大学の工学部の期末試験の成績) > (mat0 <- matrix(c(4, 2, 3, 8, 4, 6, 6, 3, 6), + nrow = 3, ncol = 3, byrow = T)) [,1] [,2] [,3] [1,] 4 2 3 [2,] 8 4 6 [3,] 6 3 6 ◆コンソールへの出力
  • 17. 16 R による「カイ二乗検定」の実行例: 独立性の検定(5/10) • 独立性の検定:(1)データの作成 – 表12.9;ある大学の工学部の期末試験の成績 – 帰無仮説: 「代数の成績と解析の成績には関連があるか/独立か?」 「代数の成績が良い(悪い)と解析の成績も良い(悪い)と言えるか?」 > mat.12.9 <- addmargins(mat0) > rownames(mat.12.9) <- c("代数:優", "代数:良", "代数:可", "計") > colnames(mat.12.9) <- c("解析:優", "解析:良", "解析:可", "計") > mat.12.9 解析:優 解析:良 解析:可 計 代数:優 4 2 3 9 代数:良 8 4 6 18 代数:可 6 3 6 15 計 18 9 15 42 ◆コンソールへの出力
  • 18. 17 R による「カイ二乗検定」の実行例: 独立性の検定(6/10) • 独立性の検定:(2)「chisq.test」による検定の実行 – 頻度が5以下のセルがある場合、Warning message が出力 される →注意点1参照 > #---------- > #方法1: > #関数「chisq.test」を利用して「カイ二乗検定」(独立性の検定)を実行 > #---------- > #(頻度が5以下のセルがあるため、Warning message が出力される) > chi.out <- chisq.test(mat0) Warning message: In chisq.test(mat0) : Chi-squared approximation may be incorrect ◆コンソールへの出力
  • 19. 18 R による「カイ二乗検定」の実行例: 独立性の検定(7/10) • 独立性の検定:(2)「chisq.test」による検定の実行 > str(chi.out) List of 9 $ statistic: Named num 0.187 ..- attr(*, "names")= chr "X-squared" $ parameter: Named int 4 ..- attr(*, "names")= chr "df" $ p.value : num 0.996 $ method : chr "Pearson's Chi-squared test" $ data.name: chr "mat0" $ observed : num [1:3, 1:3] 4 8 6 2 4 3 3 6 6 $ expected : num [1:3, 1:3] 3.86 7.71 6.43 1.93 3.86 ... $ residuals: num [1:3, 1:3] 0.0727 0.1029 -0.169 0.0514 0.0727 ... $ stdres : num [1:3, 1:3] 0.1086 0.18 -0.2789 0.0655 0.1086 ... - attr(*, "class")= chr "htest" ◆コンソールへの出力 「chisq.test」の出力内容 (リスト)の内容を確認 →右記参照 ★主な出力内容 •statistics: • カイ二乗統計量 (※名前付き) •parameter • 自由度(※名前付き) •p.value • p値 •observed • 観測度数 •expected • 期待度数 •residuals • 標準化残差 (or 残差) •stdres • 調整済み標準化残差 (or 標準化残差)
  • 20. 19 R による「カイ二乗検定」の実行例: 独立性の検定(8/10) • 独立性の検定:(3)方法2(期待度数の算出) > #---------- > #方法2: > #一つ一つ計算して「カイ二乗検定」を実行 > #---------- > #周辺確率分布の算出 > (all.sum <- sum(mat0)) [1] 42 > (p.row <- apply(mat0, 1, function(r, sum = all.sum){sum(r) / sum})) [1] 0.2142857 0.4285714 0.3571429 > (p.col <- apply(mat0, 2, function(c, sum = all.sum){sum(c) / sum})) [1] 0.4285714 0.2142857 0.3571429 > > #期待度数の算出(期待度数=全体のケース数と周辺確率の積) > (e.mat0 <- sum(mat0) * p.row %*% t(p.col)) [,1] [,2] [,3] [1,] 3.857143 1.928571 3.214286 [2,] 7.714286 3.857143 6.428571 [3,] 6.428571 3.214286 5.357143 ◆コンソールへの出力 行方向の周辺確率分布 (=行和/総ケース数) 列方向の周辺確率分布 (=列和/総ケース数)
  • 21. 20 R による「カイ二乗検定」の実行例: 独立性の検定(9/10) • 独立性の検定:(3)方法2(「カイ二乗検定」の実行) > #「カイ二乗検定」の実行 > (chisq.mat0 <- (mat0 - e.mat0)^2 / e.mat0) #検定統計量の各要素の計算 [,1] [,2] [,3] [1,] 0.005291005 0.002645503 0.01428571 [2,] 0.010582011 0.005291005 0.02857143 [3,] 0.028571429 0.014285714 0.07714286 > (chisq2 <- sum(chisq.mat0)) #上記を全てのセルで足し合わせる [1] 0.1866667 > (DF <- (nrow(mat0) - 1) * (ncol(mat0) - 1)) #自由度 = (行数 - 1) * (列数 - 1) [1] 4 > pchisq(chisq2, DF, lower.tail = F) [1] 0.9959062 ◆コンソールへの出力 「代数の成績と解析の成績には関連があるか/独立か?」 「代数の成績が良い(悪い)と解析の成績も良い(悪い)と言えるか?」 という帰無仮説は棄却されない ⇒「代数の成績が良く(悪く)ても、必ずしも解析の成績も良い(悪い)わけではない」 (むしろ、この二つには全く関連が無く“独立”だという可能性が高い数値) ⇒独立性の検定においては、通常は“望みどおりではない” (※この調査ではどうだったかは分からない)
  • 22. 21 R による「カイ二乗検定」の実行例: 独立性の検定(10/10) • 独立性の検定:(3)方法2(おまけ・・・残差分析) > #おまけ(残差分析:調整済み標準化残差の算出) > (r.std <- (mat0 - e.mat0) / sqrt(e.mat0)) #標準化残差(残差) [,1] [,2] [,3] [1,] 0.0727393 0.05143445 -0.1195229 [2,] 0.1028689 0.07273930 -0.1690309 [3,] -0.1690309 -0.11952286 0.2777460 > r.var <- (1 - p.row) %*% t(1 - p.col) #残差分散 > (r.std.adj <- (mat0 - e.mat0) / sqrt(e.mat0 * r.var)) #調整済み標準化残差(標準化残差) [,1] [,2] [,3] [1,] 0.1085565 0.06546203 -0.1681750 [2,] 0.1800206 0.10855649 -0.2788867 [3,] -0.2788867 -0.16817499 0.4320494 ◆コンソールへの出力 「chisq.test」では 「residuals」として出力 「chisq.test」では 「stdres」として出力 (二つの変数間に連関がある/独立であるという前提で、)「調整済み標準化残差」による 分析(残差分析)により、 “どのカテゴリー間にどの程度の連関があるのか”が分かる 「二つの変数は連関がある/独立でない」という結論が得られていない(→帰無仮説が 棄却されていない)場合は、上記の残差分析は意味が無い 参考文献[2]等参照
  • 23. 22 参考文献 [1]東京大学教養学部統計学教室編(1991), 『統計学入門』, 東京大学出版会 [2]Agresti, A.(1996), An Introduction to Categorical Data Analysis, John Wiley & Sons (渡邉ら訳(2003), 『カテゴリカルデータ 解析入門』, サイエンティスト社) [3]芝・南風原(1990), 『行動科学における統計解 析法』, 東京大学出版会