我尝试编写一些函数来使用非中心参数计算 anova 功率和样本大小。
R中有一些非常好的功能,但我的功能是从生物统计学书籍中学习和重现思路......
尽管涉及数学,但我的“nc”和“fpower”函数运行良好,正如预期的那样:
nc <- function(diff,n,sd) {
nonc <- (diff^2/2)*(n/sd^2)
return(nonc)
}
fpower <- function(k,n,diff,sd,alpha=0.05) {
nonc <- nc(diff,n,sd)
dfn <- k - 1
dfd <- k*(n-1)
f1 <- qf(1-alpha,dfn,dfd)
f2 <- pf(f1,dfn,dfd,nonc)
return(1-f2)
}
但是,我的“fsample”只是没有按预期工作。返回 2,即序列中的第一个 n。
fsample <- function(k,diff,sd,alpha=0.05,power=0.9){
for(n in 2:5000){
if ( fpower(k,n,sd,alpha) >= power) break
}
return(n)
}
但是,如果我“手动”在控制台中运行此代码,它会按预期工作!并返回正确的 n 值。
怎么了?