====== 【社会情報処理】第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%で「母平均は等しい」という帰無仮説は棄却されるので、「母平均は等しくない」という対立仮説が採択される。