lapply(X = c("dplyr", "pwr", "ggplot2", "scales"), require, character.only = T)
Rで確率・統計:サンプルサイズの決定:t検定の場合(2群、対応なし、異なるサンプルサイズ)
Rでデータサイエンス
サンプルサイズの決定:t検定の場合(2群、対応なし、異なるサンプルサイズ)
t検定(2群、対応なし、異なるサンプルサイズ)の例
購入時期の違う同仕様の部品Z製造装置が2つ(AとB)がある。Aで製造した\(n_1\)個のZの長さの平均値(\(\mu_A\))とBで製造した\(n_2\)個のZの長さの平均値(\(\mu_B\))について、
- \(\textrm{H}_0\):\(\mu_A\)と\(\mu_B\)に差はない。
- \(\textrm{H}_1\):\(\mu_A\)と\(\mu_B\)に差がある(\(\mu_A\)の方が\(\mu_B\)より長い又はその逆の両側検定)。
効果量、有意水準、サンプルサイズが与えられた場合の検定力算出
\[d=\dfrac{\mu_A-\mu_B}{\sigma}\]
# 効果量の目安
<- sapply(c("small", "medium", "large"), function(x) {
effect_size cohen.ES(test = "t", size = x)$effect.size
}) effect_size
small medium large
0.2 0.5 0.8
# 検定力算出コードは関数から引用
# 効果量(Effect size)
# 標準偏差に対する平均値の差の寄与が 0.5
<- 0.5
d # 有意水準
<- 0.05
sig.level # サンプルサイズ
<- 40
n1 <- 60
n2 # 検定タイプ
<- "two.sided"
alternative <- 2
tsample <- switch(alternative, less = 1, two.sided = 2, greater = 3)
ttside <- switch(alternative, less = 1, two.sided = 2, greater = 1) tside
# 自由度
<- n1 + n2 - 2
nu nu
[1] 98
# 自由度 nu のt分布における、境界点(両側) sig.level/2 に対応するt値
<- qt(p = sig.level/tside, df = nu, lower = FALSE)
qu qu
[1] 1.984467
# 自由度 nu の非心t分布における検定統計量(qu)に対する上側確率
<- pt(qu, nu, ncp = d * (1/sqrt(1/n1 + 1/n2)), lower = FALSE)
p_upper p_upper
[1] 0.6792001
# 自由度 nu の非心t分布における検定統計量(-qu)に対する下側確率
<- pt(-qu, nu, ncp = d * (1/sqrt(1/n1 + 1/n2)), lower = TRUE)
p_lower p_lower
[1] 0.000005778559
# 両者の合計
<- p_upper + p_lower
power power
[1] 0.6792059
よって、対立仮説が正しく、かつ帰無仮説が棄却される確率は67.921`%
# 改めて関数で検定力を確認
<- pwr.t2n.test(n1 = n1, n2 = n2, d = d, sig.level = sig.level, alternative = alternative)
result
result%>%
result plot()
t test power calculation
n1 = 40
n2 = 60
d = 0.5
sig.level = 0.05
power = 0.6792059
alternative = two.sided
なお、pwr.t2n.test 関数では効果量、有意水準および検定力が与えられた場合、サンプルサイズ n1 および n2 を 2 + 1e-10 から 1e+09 の範囲として求めた検定力と与えられた検定力との差がゼロになる n1 および n2 をニュートン法により求めている。
# n1 <- uniroot(function(n1) eval(p.body) - power, c(2 + 1e-10, 1e+09))$root n2 <- uniroot(function(n2) eval(p.body) - power, c(2 + 1e-10, 1e+09))$root
参考引用資料
- Jacob Cohen(1988),『Statistical Power Analysis for the Behavioral Sciences Second Edition』,Lawrence Erlbaum Associates,pp.19-74
- https://cran.r-project.org/web/packages/pwr/pwr.pdf
- http://www.cis.kit.ac.jp/~tomaru/pukiwiki/?power_analysis#g00da329
- https://www.mizumot.com/method/mizumoto-takeuchi.pdf
最終更新
Sys.time()
[1] "2024-04-20 08:20:52 JST"
R、Quarto、Package
R.Version()$version.string
[1] "R version 4.3.3 (2024-02-29 ucrt)"
::quarto_version() quarto
[1] '1.4.553'
packageVersion(pkg = "tidyverse")
[1] '2.0.0'