カイ二乗適合度検定
適合度検定とは「観測度数が理論比率に基づいて得られているか」を検証する仮説検定である。
検定統計量は、 \(\displaystyle
\chi_0^2=\sum_{i=1}^{k}\dfrac{(o_i-e_i)^2}{e_i}\)
帰無仮説が真であるとき、 \(\chi_0^2\)
は漸近的に自由度 𝑘 − 𝑟 − 1のカイ二乗分布に従う。 ここで、𝑟
は期待度数を求めるために観測値から推定した未知母数の数である。
注意
分子は残差平方であり、期待度数で割ることで残差がセルの度数に左右されないよう調整している。残差は誤差の実現値であることを考えると、適合度検定のカイ二乗値は標準化残差の平方和であり、カイ二乗分布に収束することは自然なことと言える。
四分表
四分表は適合度検定の k=4 のときの特殊な場合である。特殊の意味は、
各行の比率を推定しているため、
自由度は \(4-2-1=1\)
となることである。統計値の計算は一般の分割法と同様である。 (当サイト分割表の解析
参照。)
分割表の分析では、
久野真矢様
分割表検定の判断の手順 によると、
「どこのセルの人数が有意に多いか・少ないかを調整済み残差で判断する.」
となっている。
カイ二乗検定は乖離度の検定であり、有意であっても関連性の強さは連関係数を算出しなければ評価できない。
χ2 検定で有意と考えられても,連関係数(φ係数など)が 0.2 未満であれば
「連関はほとんどない」と解釈される.
統計科学研究所 分割表の検定 をもとにシミュレーションを行う。
帰無仮説 \(p=\dfrac{a+c}{N}\)
のもとで乖離度の統計量は
\(T=\dfrac{(ad-bc)^2N}{(a+b)(c+d)(a+c)(b+d)}\)
となる。
Tの分布は確率に依存しない。確率の差に依存する。
A群、B群の比率が同じならば自由度1のカイ二乗分布になる。
K=c()
for (i in 1:100) {
A <- rbinom(320, 1, 1/3) # 320回 1セットのうち起こる回数
a <- sum(A) # 320回 1セットのうち起こる回数
b <- (320-sum(A))
B <- rbinom(280, 1, 1/3)
c <- sum(B)
d <- (280-sum(B))
k <- (abs(a*d-b*c))^2*500/((a+b)*(c+d)*(a+c)*(b+d))
K <- c(K,k)
}
hist(K,prob=T)
curve(dchisq(x, 1),add=T)
K:帰無仮説 p=1/3(共通)
L:帰無仮説 p=3/4(共通) を比較
L=c()
for (i in 1:100) {
A <- rbinom(320, 1, 3/4)
a <- sum(A)
b <- (320-sum(A))
B <- rbinom(280, 1, 3/4)
c <- sum(B)
d <- (280-sum(B))
k <- (a*d-b*c)^2*500/((a+b)*(c+d)*(a+c)*(b+d))
L <- c(L,k)
}
par(mfrow = c(1, 2))
hist(K,prob=T,ylim=c(0,0.5),xlim=c(0,12))
curve(dchisq(x, 1),add=T)
hist(L,prob=T,ylim=c(0,0.5),xlim=c(0,12))
curve(dchisq(x, 1),add=T)
sum(L>=3.84)/100#検出力
## [1] 0.02
#curve(dchisq(x, 1),add=T)
A群、B群とも共通のpならば統計量Tの分布は自由度1のカイ二乗分布になる。
(pの値に影響されない)
L=c()
for (i in 1:100) {
A <- rbinom(320, 1, 45/280)
a <- sum(A)
b <- (320-sum(A))
B <- rbinom(280, 1, 27/320)
c <- sum(B)
d <- (280-sum(B))
k <- (a*d-b*c)^2*500/((a+b)*(c+d)*(a+c)*(b+d))
L <- c(L,k)
}
par(mfrow = c(1, 2))
hist(K,prob=T,ylim=c(0,0.5),xlim=c(0,12))
curve(dchisq(x, 1),add=T)
hist(L,prob=T,ylim=c(0,0.5),xlim=c(0,12))
curve(dchisq(x, 1),add=T)
sum(L>=3.84)/100#検出力
## [1] 0.73
#curve(dchisq(x, 1),add=T)
両群:p=72/500
のときKと、A,B群異なる場合のLを比較すると、有意差が出やすいことがわかる。
検出力は高い。
実教出版「情報Ⅰ 」p119の四分表を例にとる。
K:45/280=27/320=0.75
L:2群が等確率でない時
K=c();Phai=c()
for (i in 1:100) {
A <- rbinom(220, 1, 0.75)
a <- sum(A)
b <- (220-sum(A))
B <- rbinom(180, 1, 0.75)
c <- sum(B)
d <- (180-sum(B))
k <- (a*d-b*c)^2*400/((a+b)*(c+d)*(a+c)*(b+d))
phai <- (a*d-b*c)/sqrt((a+b)*(c+d)*(a+c)*(b+d))
K <- c(K,k)
Phai <- c(Phai,phai)
}
L=c();Qhai=c()
for (i in 1:100) {
A <- rbinom(220, 1, 175/220) # 320回 1セットのうち起こる回数
a <- sum(A) # 320回 1セットのうち起こる回数
b <- (220-sum(A))
B <- rbinom(180, 1, 125/180)
c <- sum(B)
d <- (180-sum(B))
l <- (abs(a*d-b*c))^2*400/((a+b)*(c+d)*(a+c)*(b+d))
qhai <- (a*d-b*c)/sqrt((a+b)*(c+d)*(a+c)*(b+d))
L <- c(L,l)
Qhai <- c(Qhai,qhai)
}
par(mfrow = c(1, 2))
hist(K,prob=T,ylim=c(0,0.5),xlim=c(0,12))
curve(dchisq(x, 1),add=T)
hist(L,prob=T,ylim=c(0,0.5),xlim=c(0,12))
curve(dchisq(x, 1),add=T)
sum(L>=3.84)/100#検出力
## [1] 0.66
#hist(Phai,prob=T)
#hist(Qhai,prob=T)
2つの群における比率が異なっている場合、カイ二乗分布とは離れた分布をすることが読み取れる。この場合、統計量は異常値を出力する。
しかし、検出力は高いとは言えない。
関連の強さを評価するのがφ係数などの連関係数である。
par(mfrow = c(1, 2))
hist(Phai,prob=T)
hist(Qhai,prob=T)
mean(Phai)
## [1] -0.001605509
mean(Qhai)
## [1] 0.1200401
偏りがないとき、ファイ係数は0を中心に分布する。
右図の場合でもファイ係数は0.1であり、関連があるとは言えない。
次に示すように、カイ二乗独立検定でも有意とはならない。
vx=matrix(c(175,45,125,55),nrow=2,byrow=T)
chisq.test(vx,correct=F)#補正なし
##
## Pearson's Chi-squared test
##
## data: vx
## X-squared = 5.3872, df = 1, p-value = 0.02028
chisq.test(vx,correct=T)#補正あり
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: vx
## X-squared = 4.862, df = 1, p-value = 0.02746
イエーツの補正を行うと、p値が大きくなり、検定が厳しくなっていることがわかる。
M=c()
for (i in 1:100) {
A <- rbinom(220, 1, 175/220) # 320回 1セットのうち起こる回数
a <- sum(A) # 320回 1セットのうち起こる回数
b <- (220-sum(A))
B <- rbinom(180, 1, 125/180)
c <- sum(B)
d <- (180-sum(B))
m <- (abs(a*d-b*c)-200)^2*400/((a+b)*(c+d)*(a+c)*(b+d))
M <- c(M,m)
}
par(mfrow = c(1, 2))
hist(L,prob=T,ylim=c(0,0.5),xlim=c(0,12))
curve(dchisq(x, 1),add=T)
hist(M,prob=T,ylim=c(0,0.5),xlim=c(0,12))
curve(dchisq(x, 1),add=T)
sum(L>=3.84)/100
## [1] 0.66
sum(M>=3.84)/100#検出力
## [1] 0.6
補正の効果はないように見える。
中澤港 様 参照
2つのカテゴリ変数の関連の強さをみる
カイ二乗検定やフィッシャーの直接確率検定では,関連の強さはわからない。
(帰無仮説とする分布からの乖離度を検定するだけである)
1つのカテゴリ変数をグループ分けを示す変数と考え,もう1つのカテゴリ値の取り方が,グループ間で何倍違うかをみるのが「リスク比,オッズ 比,罹患率比」である。(大小がある)
カテゴリの増減が一致している程度をみる のが、ユールのQ,ファイ係数(四分点相関係数),クラメールの V ,一致係数である。(大小がある)
リスク比(RR))やオッズ比(OR)の分布は サンプル数 が大きくなると正規分布に近づく。しかし右裾を引いているので,対数変換した 方か近似が良い。
対数オッズ比 \(\log OR\)
をロジットという。
帰無仮説のもとで \(N\left(0,\frac{1}{a}+\frac{1}{b}+\frac{1}{c}+\frac{1}{d}\right)\)
に従う。
実際には、\(\log\left(\dfrac{a/b}{c/d}\right)\) を点推定値として \(N\left(\log\left(\dfrac{a/b}{c/d}\right),\frac{1}{a}+\frac{1}{b}+\frac{1}{c}+\frac{1}{d}\right)\) に従うことが確かめられる。
OR=c()
for (i in 1:1000) {
A <- rbinom(320, 1, 1/4) # 320回 1セットのうち起こる回数
a <- sum(A) # 320回 1セットのうち起こる回数
b <- (320-sum(A))
odsA <-a/b
B <- rbinom(280, 1, 1/4)
c <- sum(B)
d <- (280-sum(B))
odsB <-c/d
or <- odsA/odsB
OR <- c(OR,or)
}
hist(log(OR),prob=T)
s=sqrt(1/a+1/b+1/c+1/d)
curve(dnorm(x,0,s),add=T)
mean(OR)
## [1] 1.020115
OR=c()
for (i in 1:1000) {
A <- rbinom(320, 1, 1/4) # 320回 1セットのうち起こる回数
a <- sum(A) # 320回 1セットのうち起こる回数
b <- (320-sum(A))
odsA <-a/b
B <- rbinom(280, 1, 1/2)
c <- sum(B)
d <- (280-sum(B))
odsB <-c/d
or <- odsA/odsB
OR <- c(OR,or)
}
hist(log(OR),prob=T)
s=sqrt(1/a+1/b+1/c+1/d)
curve(dnorm(x,-log(3),s),add=T)
mean(OR)
## [1] 0.3356097
いずれの場合も正規分布で近似できていることがわかる。
対数オッズ比 \(\log OR\)
の分散の導出は、オッズ比の分散を計算する
を参照
デルタ法は、当サイト「統計学実践ワークブック16_20」参照.
対数オッズも対数オッズ比も正規近似ができる。 また、オッズ比は相対リスクの近似値として利用できる。(ワークp260)