【解説】統計検定 2019年準1級 問3-1(片側検定)
問題本文
問題本文は公式サイト又は公式問題集を参照してください。
問題解説(1)
問題要約
帰無仮説がp=0.05, 対立仮説がp>0.05の片側検定を行う。この時、母比率の推定量が0.0733以上になる確率を求めよ。
なお、症例数は475件とする。
【ヒント】
症例数が十分に大きい為、推定量は近似的に正規分布に従うと仮定する。
【選択肢】
① 0.01 ② 0.025 ③ 0.05 ④ 0.1 ⑤ 0.2
回答
0.01
解説
本問では片側検定の知識が問われています。
本問に正解する為には以下の流れで解答する必要があります。
与えられた条件からZスコアを求める
計算したZスコアから発生確率を求める
1. 与えられた条件からZスコアを求める
まずは本問で与えられた条件を確認しましょう。
以上の条件からZスコアを求めます。
Zスコアに関する説明は割愛しますが、以下の数式が不明瞭な方は『Zスコア』で検索してください。
2. 計算したZスコアから発生確率を求める
付表の『標準正規分布の上側確率』からZスコアが2.33の点を探します。
手元に付表がない方は『標準正規分布の上側確率』で検索してください。
付表からZスコアの2.33の上側確率は0.0099だと分かります。
ここから選択肢で最も近い0.01が正解となります。
問題解説(2)
問題要約
帰無仮説 p=0.05, 対立仮説 p=0.1 に対して有意水準2.5%の片側検定を行う。
この時、検出力が90%となる症例数を求めよ。
【選択肢】
① 114 ② 164 ③ 214 ④ 264 ⑤ 314
回答
264
解説
本問では検定に関する知識が問われています。
以下の流れで解説を行います。
解答までの具体的なイメージを掴む
Zスコアを求める
帰無仮説と対立仮説の等式から症例数を求める
1. 解答までの具体的なイメージを掴む
本問の解説に入る前に、まずはグラフを見ながら解答までの具体的なイメージを掴んでいきましょう。
まず、本問では帰無仮説がp=0.05, 有意水準がα=0.025となります。
これをグラフで表すと以下の通りとなります。
帰無仮説に対して、対立仮説はp=0.1, 検出力が(1-β)=0.9となります。
これをグラフで表すと以下の通りとなります。
帰無仮説と対立仮説のグラフは症例数が変化することで分散も変化する為、それに応じてグラフの形も変化します。
症例数の違いによるグラフの変化は以下の通りです。
上のグラフを見て分かる通り、症例数が不足するとどちらの仮説も正しくなり、症例数が過剰だとどちらの仮説も誤りとなる範囲が存在します。
それでは正しく検定が行えない為、帰無仮説と対立仮説の閾値が同じとなる症例数を求めることが本問の目的となります。
2. Zスコアを求める
(1)の問題ではZスコアから上側確率を求めましたが、本問では上側(下側)確率からZスコアを求めます。
付表の『標準正規分布の上側確率』から帰無仮説と対立仮説のZスコアは以下の通りとなります。
帰無仮説: α = 0.025 = Q(1.96)
対立仮説: β = 0.1 = Q(1.28)
注意点として、対立仮説から見て帰無仮説は下側(左側)にある為、対立仮説なZスコアは -1.28 となります。
3. 帰無仮説と対立仮説の等式から症例数を求める
まずは与えられた条件と先ほど求めたZスコアを用いて、帰無仮説と対立仮説の式を設けます。
帰無仮説: p0 = 0.05, Z0 = 1.96
対立仮説: p1 = 0.1, Z1 = -1.28
上で組み立てた式から以下の通り症例数を求めます。
以上の結果から必要症例数は264件になります。
補足
グラフ生成したコード(R言語)
# ライブラリ
# library(tidyverse)
# 環境定数
LOWER_LIMIT <- 0
UPPER_LIMIT <- 0.18
BREAKS <- 0.05
TRANSPARENCY <- 0.3
COLOUR_NULL <- 'deeppink'
COLOUR_ALTER <- 'dodgerblue3'
# 問題定数
N <- 264
PROBABILITY_NULL <- 0.05
PROBABILITY_ALTER <- 0.1
ALPHA <- 0.025
BETA <- 0.1
# 関数
calc_sd <- function(n, p) sqrt((p * (1-p)) / n)
# プロット
sd0 <- calc_sd(N, PROBABILITY_NULL)
sd1 <- calc_sd(N, PROBABILITY_ALTER)
args0 <- list(mean = PROBABILITY_NULL, sd = sd0)
args1 <- list(mean = PROBABILITY_ALTER, sd = sd1)
shader_area0 <- c(qnorm(1 - ALPHA, PROBABILITY_NULL, sd0), UPPER_LIMIT)
shader_area1 <- c(LOWER_LIMIT, qnorm(BETA, PROBABILITY_ALTER, sd1))
g1 <- data.frame(x = c(LOWER_LIMIT, UPPER_LIMIT)) %>%
ggplot(aes(x = x)) +
stat_function(fun = dnorm, args = args0, geom = 'path', colour = COLOUR_NULL) +
stat_function(fun = dnorm, args = args1, geom = 'path', colour = COLOUR_ALTER) +
stat_function(fun = dnorm, args = args0, geom = 'area', xlim = shader_area0, fill = COLOUR_NULL, alpha = TRANSPARENCY) +
stat_function(fun = dnorm, args = args1, geom = 'area', xlim = shader_area1, fill = COLOUR_ALTER, alpha = TRANSPARENCY) +
scale_x_continuous(breaks = seq(LOWER_LIMIT, UPPER_LIMIT, BREAKS), limits = c(LOWER_LIMIT, UPPER_LIMIT)) +
scale_y_continuous() +
labs(x = 'Probability', y = 'Frequency') +
theme_bw()
g1
# 三分割グラフ作成用
# gridExtra::grid.arrange(g1, g2, g3, nrow = 3)