仮説の正当性をデータから検証する
(Press ?
for help, n
and p
for next and previous slide)
村田 昇
2020.06.26
ある現象・母集団に対して仮定された仮説の真偽を データに基づいて統計的に検証する方法
例: 新しい薬の効能が古い薬よりも優れていること(仮説)を 薬の治験結果(データ)から検証したい
帰無仮説
検定統計量の分布を予想するために立てる仮説
対立仮説
“帰無仮説が誤っているときに起こりうるシナリオ”として想定する仮説
帰無分布
帰無仮説が正しい場合に検定統計量が従う分布
棄却域
帰無仮説の下で統計量の取り得るべき範囲の外の領域
サイズ: 第一種過誤が 起きる確率
検出力: 第二種過誤が 起きない確率
有意水準
第一種過誤が起きる確率(サイズ)として許容する上限
可能な限り 検出力を大きく する
帰無分布における検定統計量の評価:
検定統計量の値が棄却域に含まれる有意水準の最小値を考える
\(p\) 値 (有意確率): (検定統計量 \(T\), 棄却域 \(R_{\alpha}\))
帰無仮説の受容の意味:
帰無仮説が正しいと仮定しても矛盾は生じない
帰無仮説の正しさを積極的に支持する結果ではない
第二種過誤:
一般に第二種過誤の起こる確率については何ら仮定がないため, その確率は非常に大きい可能性がある
両側検定
\(\mu_0\) を既知の定数として, 平均 \(\mu\) が真の平均 \(\mu_0\) であるか否かを検定する
対立仮説: \(\mu\neq\mu_0\)
標本平均: (正規分布に従う)
不偏分散: (\(\chi^2\) 分布に従う)
検定統計量:
\(H_0\) の下で以下が成立:
第一種過誤の上限が \(\alpha\) の棄却域:
以下の場合,帰無仮説を棄却:
\(p\) 値を計算: ( \(f(x)\):自由度 \(n{-}1\) の \(t\) 分布の密度)
\(p\) 値が \(\alpha\) 未満なら帰無仮説を棄却:
例: 薬の治験
観測データ \(X_1,X_2,\dotsc,X_n\) (\(n\) 人の被験者の治験結果) に対する仮説:
- 古い薬(高価)と新しい薬(安価)の効能が変わらない (両側検定)
- 古い薬に比べて新しい薬の効能が改善した
片側検定
\(\mu_0\) を既知の定数として, 平均 \(\mu\) が真の平均 \(\mu_0\) より大きいかを検定する
対立仮説: \(\mu>\mu_0\)
\(H_0\) の下で以下が成立:
第一種過誤の上限が \(\alpha\) の棄却域:
以下の場合,帰無仮説を棄却:
\(p\) 値を計算: ( \(f(x)\):自由度 \(n{-}1\) の \(t\) 分布の密度)
反対向きの対立仮説 \(\mu < \mu_0\) を考えた検定
以下の場合,帰無仮説を棄却:
以下の \(p\) 値が \(\alpha\) 未満なら帰無仮説を棄却:
基本書式
t.test(x, # 1標本の場合
alternative = c("two.sided", "less", "greater"),
mu = 0, conf.level = 0.95, ...)
x
: ベクトル.alternative
: 対立仮説 (両側,左片側,右片側)mu
: 検定対象の平均値conf.level
: 信頼区間の水準 (点推定・区間推定も行ってくれる)...
: 他のオプション.詳細は help(t.test)
を参照適当な正規乱数を用いてMonte-Carlo実験を行い, t検定の過誤について調べなさい.
## 例えば適当な数値を指定して以下のような実験を行えばよい
myTrial <- function(n){
result <- t.test(rnorm(n,mean=mu0,sd=sd0),mu=mu0)
return(result$p.value)}
myData <- replicate(mc, myTrial(n))
hist(myData) # p.valueの分布を見る
table(myData<alpha)/mc # alpha以下のデータの数を調べる
ある番組の視聴率が2桁に達したかどうか知りたいとする. \(n\) 人を対象にその番組を観たかどうか確認したところ
という結果が得られたとする. これを検定するにはどうしたらよいか考えてみよ.
## Xの生成は例えば mu1 を真の視聴率として以下のようにすればよい
x <- sample(0:1,n,replace=TRUE,prob=c(1-mu1,mu1))
両側検定
\(\sigma_0^2\) を既知の定数として, 分散 \(\sigma^2\) が \(\sigma_0^2\) であるか否かを検定する
対立仮説: \(\sigma^2\neq\sigma_0^2\)
不偏分散: (\(\chi^2\) 分布に従う)
検定統計量:
\(H_0\) の下で以下が成立:
第一種過誤の上限が \(\alpha\) となる棄却域:
以下の場合,帰無仮説を棄却:
\(p\) 値を計算: ( \(f(x)\): 自由度 \(n{-}1\) の \(\chi^2\) 分布の密度)
対立仮説: \(\sigma^2>\sigma_0^2\)
以下の場合,帰無仮説を棄却:
\(p\) 値を計算: ( \(f(x)\):自由度 \(n{-}1\) の \(\chi^2\) 分布の密度)
chisq.test
はあるが目的が違うので注意以下のように計算できる
x # 観測データ
sigma0 # 帰無仮説で用いる標準偏差
n <- length(x) # データ数
chi2 <- (n-1)*var(x)/sigma0^2 # 検定統計量
p0 <- pchisq(chi2, df=n-1)
2*min(p0, 1-p0) # p値 (両側検定の場合)
東京の気象データの気温の項目を用いて, 6月の気温の分散が, 月毎に計算した気温の分散の平均値より大きいかどうか検定せよ.
myData <- read.csv("data/tokyo_weather.csv",
fileEncoding="utf8")
## 月毎の気温の分散は以下で計算できる
aggregate(気温~月,data=myData,FUN=var)
## この平均値は以下のように計算される
mean(aggregate(気温~月,data=myData,FUN=var)$気温)
2種類のデータの平均が等しいか否かを検定する
\(X_1,\dotsc,X_m\) および \(Y_1,\dotsc,Y_m\) の不偏分散: \(s_1^2\),\(s_2^2\)
\(\chi^2_\nu\) は自由度 \(\nu\) の \(\chi^2\) 分布に従う確率変数
検定統計量:
データの正規性から以下は標準正規分布に従う
\(H_0\) の下で以下は自由度 \(\nu\) の \(t\) 分布に従う
\(\nu\) は未知の分散 \(\sigma_1^2,\sigma_2^2\) を含むので 不偏推定量 \(s_1^2,s_2^2\) で代用して, 次式で与えられる自由度 \(\hat{\nu}\) を用いる:
棄却域:
検定統計量 \(t\) の値を計算し,以下の場合は帰無仮説を棄却:
対応がある観測データの平均の差の検定では 2種類のデータ間の自然な対応を考慮することがある
薬の投薬の例:
- 2種類の薬の効能を比較するために被験者に両方の薬を投与
- 被験者 \(i\) にそれぞれの薬を投与した場合の治験結果: \(X_i,Y_i\)
- \(X_i\) と \(Y_i\) には“同一の被験者に対する治験結果”という意味で対応がある
基本書式
t.test(x, y = NULL, # 2標本の場合
alternative = c("two.sided", "less", "greater"),
mu = 0, paired = FALSE, var.equal = FALSE,
conf.level = 0.95, ...)
x,y
: ベクトル.2標本の場合はyを指定するalternative
: 対立仮説 (両側,左片側,右片側)mu
: 検定対象の平均値paired
: 対応ありの場合は TRUE
var.equal
: 2標本の分散を同じとして良い場合は TRUE
2種類のデータの分散が等しいか否かを検定する
検定統計量:
\(H_0\) の下では以下が成立:
第一種過誤の上限が \(\alpha\) の棄却域:
以下の場合,帰無仮説を棄却
基本書式
var.test(x, y, ratio = 1,
alternative = c("two.sided", "less", "greater"),
conf.level = 0.95, ...)
x,y
: ベクトル.ratio
: 検定する比率(1は同じかどうか)alternative
: 対立仮説 (両側,左片側,右片側)conf.level
: 信頼区間の水準 (点推定・区間推定も行ってくれる)