【发布时间】:2019-03-25 19:53:48
【问题描述】:
我正在尝试编写一个函数来计算 R 中的样本大小。
该函数使用了几个较小的函数。我想使用点将参数传递给较小的函数。到目前为止,这是我的功能:
log_reg_var<-function(p){
if(p<=0|p>=1) stop('p must be between 0 and 1')
var<-1/(p*(1-p))
return(var)
}
samplesize<-function(method_name, beta, sigma_x, mult_cor, power= 0.8,fpr = 0.05,...){
if(method_name=='linear regression'){
var_func <- lin_reg_var
}
else if(method_name=='logistic regression'){
var_func <- log_reg_var
}
else if(method_name=='cox regression'){
var_func <- cox_reg_var
}
else if(method_name=='poisson regression'){
var_func <- pois_reg_var
}
else{
stop('method_name not recognized. method_name accepts one of: "linear regression",
"logistic regression","cox regression", or "poisson regression"')
}
top = (qnorm(1-fpr/2) + qnorm(power))^2
bottom = (beta*sigma_x)^2*(1-mult_cor)
n = (top/bottom)*var_func(...)
return(ceiling(n))
}
我应该可以的
samplesize(method_name = 'logreg',1,1,0,p=0.5)
>>>32
但是我却抛出了以下错误:
Error in var_func(...) : argument "p" is missing, with no default
显然,我通过点传递p 有问题,但我不确定是什么问题。
我的问题是什么?
【问题讨论】:
-
是
log_reg_var()函数中的p应该是power函数中power参数中的power? -
没有。
p应该被传递给log_reg_var()。power参数,如果未指定,应为 0.8。清楚吗?
标签: r