mcdonohue / longpower

longpower: Sample Size Calculations for Longitudinal Data
2 stars 4 forks source link

lmmpower not working if argument n is provided #6

Open t-haehnel opened 1 year ago

t-haehnel commented 1 year ago

When calling lmmpower(), it is required that "exactly one of 'n', 'delta', 'power', and 'sig.level' must be NULL".

When calling lmmpower with n not null, an error occurs when calculating the confidence interval.

The error is in the following code snippet from lmmpower.R:

  if(!is.null(results$delta.CI)){
    n.upper <- switch(method,
      hu = hu.mackey.thomas.linear.power(n=NULL, results$delta.CI[1], t=t, 
        sig2.i=sig2.i, cor.s.i=cor.s.i, sig2.s=sig2.s, sig2.e=sig2.e, 
        p=p, sig.level=sig.level, power=power,
        alternative=alternative, tol=tol,...)$n,
      edland = edland.linear.power(n=NULL, results$delta.CI[1], t=t, 
        sig2.int=sig2.i, sig2.s=sig2.s, sig2.e=sig2.e, 
        sig.level=sig.level,
        power=power,
        alternative=alternative,tol=tol,...)$n,
      diggle = diggle.linear.power(n=NULL, results$delta.CI[1], t=t, R=R, 
        sig.level=sig.level,
        power=power,
        alternative=alternative,tol=tol,...)$n,
      liuliang = liu.liang.linear.power(N=NULL, results$delta.CI[1], u=u, v=v, R=R, 
        sig.level=sig.level,
        power=power,tol=tol,...)$n)
    n.lower <- switch(method,
      hu = hu.mackey.thomas.linear.power(n=NULL, results$delta.CI[2], t=t, 
        sig2.i=sig2.i, cor.s.i=cor.s.i, sig2.s=sig2.s, sig2.e=sig2.e, 
        p=p, sig.level=sig.level, power=power,
        alternative=alternative,tol=tol,...)$n,
      edland = edland.linear.power(n=NULL, results$delta.CI[2], t=t, 
        sig2.int=sig2.i, sig2.s=sig2.s, sig2.e=sig2.e, 
        sig.level=sig.level, power=power,
        alternative=alternative,tol=tol,...)$n,
      diggle = diggle.linear.power(n=NULL, results$delta.CI[2], t=t, R=R, 
        sig.level=sig.level,
        power=power,tol=tol,...)$n,
      liuliang = liu.liang.linear.power(N=NULL, results$delta.CI[2], u=u, v=v, R=R, 
        sig.level=sig.level,
        power=power,tol=tol,...)$n)

n=NULL and N=null needs to be replaced with n=n for the code to work.

eremingt commented 3 months ago

I think I'm encountering a related issue. When I specify n instead of power, I get the error

Error in diggle.linear.power(n = NULL, results$delta.CI[1], t = t, R = R, : exactly one of 'delta', 'sigma2', 'power', and 'sig.level' must be NULL

But I haven't specified any of the other arguments in the first place (passing in an lme4 object).