gpt4 book ai didi

r - 我的函数在 R 控制台中有效,但在 R 脚本中无效

转载 作者:行者123 更新时间:2023-12-04 05:31:48 24 4
gpt4 key购买 nike

我尝试编写一些函数来使用非中心参数计算方差分析功率和样本大小。

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,seq 中的第一个 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 值。

怎么了?

最佳答案

您没有通过 diff论据 fpower ,因此参数与您认为的顺序不同。 fsample应该是:

fsample <- function(k,diff,sd,alpha=0.05,power=0.9){
for(n in 2:5000){
if ( fpower(k,n,diff,sd,alpha) >= power) break
}
return(n)
}

请注意,如果您在调用 fpower 时已命名参数,则这不会成为问题。因为你会收到关于 diff 的错误丢失且没有默认值:
# this will error
fsample <- function(k,diff,sd,alpha=0.05,power=0.9){
for(n in 2:5000){
if ( fpower(k=k,n=n,sd=sd,alpha=alpha) >= power) break
}
return(n)
}

此外,您可能希望避免为数据对象提供与函数相同的名称(例如 diffsdpower 也是函数),否则您可能会混淆自己。

关于r - 我的函数在 R 控制台中有效,但在 R 脚本中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12483298/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com