====== 【社会情報処理】第6回 その他の仮説検定 ======
===== 母分散の仮説検定 =====
ここでは母分散の仮説検定を行う。
**母集団は正規分布(正規母集団)**とし、そこから無作為に標本を抽出する。
$\mathrm{N}(\mu,\sigma^{2})$ の正規母集団から $n$ 個の標本 $X_{1},X_{2},\cdots,X_{n}$ を抽出したとする。
母分散の仮説検定に用いる検定統計量は不偏分散 $s^{2}$ を利用する。
\[
s^{2}=\frac{1}{n-1}\sum_{i=1}^{n}(X_{i}-\bar{X})^{2}
\]
----
==== 仮説検定の手順 ====
仮説検定の手順は以下の通り。
=== 1. 仮説の設定 ===
* 右片側検定の場合
* 帰無仮説 $H_{0}:\sigma^{2}=\sigma_{0}^{2}$
* 対立仮説 $H_{1}:\sigma^{2}>\sigma_{0}^{2}$
* 左片側検定の場合
* 帰無仮説 $H_{0}:\sigma^{2}=\sigma_{0}^{2}$
* 対立仮説 $H_{1}:\sigma^{2}<\sigma_{0}^{2}$
* 両側検定の場合
* 帰無仮説 $H_{0}:\sigma^{2}=\sigma_{0}^{2}$
* 対立仮説 $H_{1}:\sigma^{2}\neq\sigma_{0}^{2}$
=== 2. 検定統計量と標本分布の決定 ===
検定統計量は $\chi^{2}$(カイ二乗)である。
\[
\chi^{2}=\frac{(n-1)s^{2}}{\sigma_{0}^{2}}
\]
正規母集団からの標本であれば $\chi^{2}$ は自由度 $n-1$ の $\chi^{2}$ 分布 $\chi^{2}(n-1)$ に従う。
* 検定統計量 $\chi^{2}$
* 標本分布 $\chi^{2}(n-1)$
=== 3. 有意水準と棄却域の決定 ===
有意水準を $\alpha$ とする。
棄却域 $R$ はそれぞれ次のようになる。
* 右片側検定の場合 $R=\{\chi^{2};\chi^{2}>\chi_{\alpha}^{2}\}$
* 左片側検定の場合 $R=\{\chi^{2};\chi^{2}<\chi_{1-\alpha}^{2}\}$
* 両片側検定の場合 $R=\{\chi^{2};\chi^{2}< \chi_{1-\alpha/2}^{2},\chi_{\alpha/2}^{2}<\chi^{2}\}$
$\chi_{\alpha}^{2}$ は $\chi^{2}(n-1)$ の上側確率 $\alpha$ のパーセント点である。
{{ socialip_2021:chisq-test.png?nolink |カイ二乗検定}}
=== 4. 検定の実施 ===
標本から求めた検定統計量が棄却域に入れば帰無仮説を棄却し、対立仮説を採択する。
棄却域に入らなければ帰無仮説は棄却されないので、対立仮説は採択されない。
検定統計量に $\chi^{2}$ を用いる場合を__**カイ二乗検定**__という。
===== 母分散の仮説検定の例 =====
母集団は R のデータセット airquality の Wind とする。
これを正規母集団とみなす。
> var(airquality$Wind) * (1 - 1 / length(airquality$Wind))
[1] 12.33042
このように母分散 $\sigma^{2}=12.33042\mathrm{[mph^{2}]}$ と分かるが、分かっていないものとして仮説検定を行う。
母集団から $n=10$ 個の標本を抽出し、$\sigma_{0}^{2}=4$ の仮説検定を行う。
次のプログラム test_var.R はカイ二乗検定で p 値を計算するプログラムである。
ただし、標本抽出は ''set.seed(1)'' で固定しているので、毎回ランダムにしたければ ''set.seed(1)'' を削除すること。
# 母分散の仮説検定(カイ二乗検定)
# 母集団データ
pdata <- na.omit(airquality$Wind)
# 標本データ
n <- 10
set.seed(1)
sdata <- sample(pdata, n)
# 不偏分散
ssq <- var(sdata)
print(sprintf("標本 : n = %d, s^2 = %g", n, ssq), quote = FALSE)
# 帰無仮説
sigmasq0 <- 4
print(sprintf("帰無仮説 : sigma^2 = %g", sigmasq0), quote = FALSE)
# 検定統計量
chisq.value <- (n - 1) * ssq / sigmasq0
# 右片側検定
chisq.right.p <- pchisq(chisq.value, n - 1, lower.tail = FALSE)
# 左片側検定
chisq.left.p <- pchisq(chisq.value, n - 1)
# 両側検定
if (chisq.right.p > chisq.left.p) {
chisq.twosided.p <- chisq.left.p * 2
} else {
chisq.twosided.p <- chisq.right.p * 2
}
print(sprintf("chi^2 = %g, 右片側 p = %g, 左片側 p = %g, 両側 p = %g",
chisq.value, chisq.right.p, chisq.left.p, chisq.twosided.p),
quote = FALSE)
test_var.R の実行結果
[1] 標本 : n = 10, s^2 = 9.25389
[1] 帰無仮説 : sigma^2 = 4
[1] chi^2 = 20.8213, 右片側 p = 0.0134682, 左片側 p = 0.986532, 両側 p = 0.0269364
----
==== カイ二乗検定の例 ====
airquality の Wind を母集団とする。
この母集団から $n=10$ 個の標本を抽出したところ、不偏分散 $s^{2}=9.25389\mathrm{[mph^{2}]}$ だった。
この標本を使って**母分散は $4 \mathrm{[mph^{2}]}$ より大きい**といえるかを **有意水準 5%** で検定する。
=== 1. 仮説の設定 ===
* 帰無仮説 $H_{0}:\sigma^{2}=4\mathrm{[mph^{2}]}$
* 対立仮説 $H_{1}:\sigma^{2}>4\mathrm{[mph^{2}]}$
これは右片側検定である。
=== 2. 検定統計量と標本分布の決定 ===
検定統計量は $\chi^{2}$ を用いる。
$\chi^{2}$ の標本分布は $\chi^{2}(9)$ である。
=== 3. 有意水準の決定 ===
有意水準 5% なので $\alpha=0.05$ である。
=== 4. 検定の実施 ===
標本から $\chi^{2}=20.8213$ で $p=0.0134682<0.05$ だった。
よって有意水準 5% で帰無仮説は棄却されるので、対立仮説が採択される。
つまり、有意水準 5% で母分散は $4\mathrm{[mph^{2}]}$ より大きいといえる。
===== 小テスト =====
[[KMS>|Moodle Server(非公式)]]で第6回の小テストを受験しなさい。
===== 独立な2群の検定 =====
二つの独立な母集団を対象とした仮説検定を考えよう。
例えば、新しい教育方法の効果を調べる場合、学生を二つのグループに分け、一方のグループに新しい教育方法による授業、もう一方のグループに従来の教育方法による授業を行い、同じ試験の成績の平均に有意な差があるかどうかを検証する。
新しい教育方法のグループを__**処理群**__、従来の教育方法のグループを__**対照群**__もしくは__**制御群**__ということがある。
**母集団は正規分布(正規母集団)**とし、そこから無作為に標本を抽出する。
* $\mathrm{N}(\mu_{1},\sigma_{1}^{2})$ の正規母集団から $m$ 個の標本 $X_{1},X_{2},\cdots,X_{m}$ を抽出する。
* $\mathrm{N}(\mu_{2},\sigma_{2}^{2})$ の正規母集団から $n$ 個の標本 $Y_{1},Y_{2},\cdots,Y_{n}$ を抽出する。
標本平均
\[
\bar{X}=\frac{1}{m}\sum_{i=1}^{m}X_{i}
\]
\[
\bar{Y}=\frac{1}{n}\sum_{j=1}^{n}Y_{j}
\]
不偏分散
\[
s_{1}^{2}=\frac{1}{m-1}\sum_{i=1}^{m}(X_{i}-\bar{X})^{2}
\]
\[
s_{2}^{2}=\frac{1}{n-1}\sum_{j=1}^{n}(Y_{j}-\bar{Y})^{2}
\]
\[
s^{2}=\frac{(m-1)s_{1}^{2}+(n-1)s_{2}^{2}}{m+n-2}
\]
二つの母集団の母平均を比べる場合、母平均の差を検定する。
ただし、母集団の母分散が同じであればこの検定は比較的簡単だが、母分散が異なると難しくなり近似的な方法で検定せざるを得ない。
そこで、まずは母分散が同じかどうかを母分散の比の検定で確かめる。
----
==== 母分散の比の検定 ====
母分散が等しいかどうかを調べるために母分散の比の検定を行う。
=== 1. 仮説の設定 ===
* 帰無仮説 $H_{0}:\sigma_{1}^{2}=\sigma_{2}^{2}$ (もしくは $\frac{\sigma_{1}^{2}}{\sigma_{2}^{2}}=1$)
* 対立仮説 $H_{1}:\sigma_{1}^{2}\neq\sigma_{2}^{2}$ (もしくは $\frac{\sigma_{1}^{2}}{\sigma_{2}^{2}}\neq 1$)
これは両側検定である。
=== 2. 検定統計量と標本分布の決定 ===
検定統計量は__**フィッシャーの分散比**__ $F$ である。
\[
F=\frac{s_{1}^{2}}{s_{2}^{2}}
\]
正規母集団からの標本であれば $F$ は自由度 $(m-1,n-1)$ の F 分布 $F(m-1,n-1)$ に従う。
* 検定統計量 $F$
* 標本分布 $F(m-1,n-1)$
=== 3. 有意水準と棄却域の決定 ===
有意水準を $\alpha$ とする。
棄却域 $R$ は次のようになる。
\[
R=\{F;Ft_{\alpha/2}\}
\]
$t_{\alpha}$ は $t(m+n-2)$ の上側確率 $\alpha$ のパーセント点である。、
=== 4. 検定の実施 ===
標本から求めた検定統計量が棄却域 $R$ に入れば帰無仮説を棄却し、対立仮説を採択する。
棄却域に入らなければ帰無仮説は棄却されないので、対立仮説は採択されない。
----
==== 母平均の差の検定(母分散が異なる場合) ====
母分散が異なる場合は__**ウェルチの検定**__という近似的な検定方法を使う。
詳細は省略する。
===== 独立な2群の検定の関数 =====
F検定については関数 ''var.test()'' がある。
> var.test(データ1, データ2)
平均の差の検定については関数 ''t.test()'' が使える。
> t.test(データ1, データ2, var.equal)
引数 var.equal が ''TRUE'' だと t 検定、''FALSE'' だとウェルチの検定になる。
デフォルトは ''FALSE'' なので、var.equal を省略するとウェルチの検定になる。
===== 独立な2群の検定の例 =====
2015年度の人口増減率について、山形県の市と町村でそれぞれ標本を抽出し、平均に差があるかを検証する。
ここで市と町村のデータはそれぞれ正規母集団だとみなす((正規性の検定(シャピロ・ウィルクの検定など)で市と町村のそれぞれの母集団が正規分布かは検定できる。))。
有意水準5%としよう。
次のプログラム test_diffmean.R は第2回に e-Stat からダウンロードした山形県の市町村データ(ファイル名は yamagata.csv にしている)において、人口増減率の平均の差の検定を行うプログラムである。
library(readr)
# データの読み込み
df <- read_csv("yamagata.csv", locale = locale(encoding = "SHIFT-JIS"))
df$`/項目` <- NULL
df$調査年 <- as.numeric(sapply(df$調査年, gsub, pattern="年度", replacement = ""))
df <- df[order(df$調査年),]
# 市
df1 <- df[grep("市$", df$地域),]
# 町村
df2 <- df[grep("町|村$", df$地域),]
# 2015年度の人口増減率を母集団とする
pdata1 <- df1[df1$調査年 == 2015,][["#A05101_人口増減率【%】"]]
pdata2 <- df2[df2$調査年 == 2015,][["#A05101_人口増減率【%】"]]
# 標本抽出
set.seed(1)
sdata1 <- sample(pdata1, 8)
sdata2 <- sample(pdata2, 10)
# 標本平均と不偏分散
print(sprintf("市 : m = %d, xbar = %g, s1^2 = %g",
length(sdata1), mean(sdata1), var(sdata1)), quote = FALSE)
print(sprintf("町村 : n = %d, ybar = %g, s2^2 = %g",
length(sdata2), mean(sdata2), var(sdata2)), quote = FALSE)
# 分散の比の検定(F検定)
result.var <- var.test(sdata1, sdata2)
print(result.var)
# 平均の差の検定(t検定)
result.t <- t.test(sdata1, sdata2, var.equal = TRUE)
print(result.t)
# 平均の差の検定(ウェルチの検定)
result.welch <- t.test(sdata1, sdata2)
print(result.welch)
* 市と町村のデータは ''grep()'' を使って地域も文字列から抽出している。''grep()'' は文字列を検索するための関数で、正規表現が使用できる。
=== 実行結果(標本平均と不偏分散) ===
[1] 市 : m = 8, xbar = -3.52, s1^2 = 10.55
[1] 町村 : n = 10, ybar = -8.271, s2^2 = 2.53817
* 市の標本 : $m=8$, $\bar{X}=-3.52$, $s_{1}^{2}=10.55$
* 町村の標本 : $n=10$, $\bar{Y}=-8.271$, $s_{2}^{2}=2.53817$
=== 実行結果(F検定) ===
F test to compare two variances
data: sdata1 and sdata2
F = 4.1565, num df = 7, denom df = 9, p-value = 0.05147
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
0.9903473 20.0478658
sample estimates:
ratio of variances
4.156534
* $F=4.1565$, 自由度 $(7, 9)$, $p=0.05147$
* 「''alternative hypothesis: true ratio of variances is not equal to 1''」は「対立仮説 : $\frac{\sigma_{1}^{2}}{\sigma_{2}^{2}}\neq 1$」という意味である。
F検定を行うと $p=0.05147$ となり、有意水準 5%で「母分散は等しい」という帰無仮説は棄却されないので、「母分散は等しくない」という対立仮説が採択されない。
=== 実行結果(t検定) ===
Two Sample t-test
data: sdata1 and sdata2
t = 4.0743, df = 16, p-value = 0.0008829
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
2.279015 7.222985
sample estimates:
mean of x mean of y
-3.520 -8.271
* $t=4.0743$, 自由度 $m+n-2=16$, $p=0.0008829$
* 「''alternative hypothesis: true difference in means is not equal to 0''」は「対立仮説 : $\mu_{1}-\mu_{2}\neq 0$」という意味である。
=== 実行結果(ウェルチの検定) ===
Welch Two Sample t-test
data: sdata1 and sdata2
t = 3.7886, df = 9.6751, p-value = 0.003767
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
1.944101 7.557899
sample estimates:
mean of x mean of y
-3.520 -8.271
* $t=3.7886$, 自由度 $9.6751$, $p=0.003767$
* 「''alternative hypothesis: true difference in means is not equal to 0''」は「対立仮説 : $\mu_{1}-\mu_{2}\neq 0$」という意味である。
F検定によって母分散が等しくないとみなせないため、
t検定を行うと $p=0.0008829$ となり、有意水準 5%で「母平均は等しい」という帰無仮説は棄却されるので、「母平均は等しくない」という対立仮説が採択される。