rpsychologist / powerlmm Goto Github PK
View Code? Open in Web Editor NEWpowerlmm R package for power calculations for two- and three-level longitudinal multilevel/linear mixed models.
powerlmm R package for power calculations for two- and three-level longitudinal multilevel/linear mixed models.
Hello,
I am new to the Powerlmm package and haven't used R for a while. I have tried to update all relevant packages. But when I tested the Powerlmm package with the example provided online, it kept giving me this error message
Error in prettyNum(.Internal(format(x, trim, digits, nsmall, width, 3L, :
invalid value 0 for 'digits' argument
Here was what I tested:
library(powerlmm)
p <- study_parameters(n1 = 11,
n2 = 20,
icc_pre_subject = 0.5,
var_ratio = 0)
get_power(p)
Any feedback or guidance would be much appreciated!
This interaction is often tested by investigators, and would be quite straight-forward to incorporate into powerlmm.
Dear Dr. Magnusson,
I'm trying to install the dev version of your powerlmm package from github. However, I get the following error. Just was wondering if am I missing something? (multiple friends of mine faced the same issue)
library(remotes)
remotes::install_github("rpsychologist/powerlmm", dependencies = TRUE)
Error: Failed to install 'powerlmm' from GitHub:
(converted from warning) installation of package ‘C:/Users/AppData/Local/Temp/RtmpKUee0F/file4ed83f5e3806/
powerlmm_0.4.0.9000.tar.gz’ had non-zero exit status
Dear Kristoffer,
I tried out the shiny app right now, but when I select a 2-level design a power of NaN% is shown (with default values, but also when changing the values).
The 3-level design works.
R shows the following warnings:
Warning in qt(1 - alpha/2, df = df) : NaNs wurden erzeugt
Warning in qt(alpha/2, df = df) : NaNs wurden erzeugt
I'm using powerlmm version 0.4.0.
Best,
Caroline
The following code will give an error.
library(powerlmm)
p <- study_parameters(n1 = 6,
n2 = 5,
n3 = 5,
icc_pre_subject = 0.5,
icc_pre_cluster = NA,
var_ratio = 0.02,
icc_slope = 0.05,
cohend = 0
)
res <- simulate(p, nsim = 5, formula = "y ~ time * treatment + (1 | subject) + (1 | cluster)")
summary(res)
summary
will fail, code will work if icc_pre_cluster = 0
is used instead.
Any chance to get an Update for this package so it is available for R Version 3.6.1?
This is what I get when trying to install the package
Warning in install.packages :
package ‘powerlmm’ is not available (for R version 3.6.1 Patched)
Thanks for any help
Hi, thanks for putting together this great tool.
Is there a way I can input a different t, example: c(0, 1, 3, 9, 12)?
Also, I couldn't figure out how to change the default df.
Thanks!
Hello,
is there any way of simulating a dataset with (for example) 2 cont. predictors measured at different levels of the hierarchy?
What I'm trying to do here is computing simulated power for a continuous fixed effect given c(varying ICC, varying subject number, varying observation per subject).
I'd really appreciate some help with this
All the best!
It would be useful to be able to use a study setup to calculate power for an ANCOVA or t-test, i.e. we use the assumed DGP but fit an ANCOVA/t-test. For instance, power for an ANCOVA should be:
p <- study_parameters(
design = study_design(),
n1 = 2,
n2 = 10,
T_end = 1,
icc_pre_subject = c(0.7),
var_ratio = NA,
sigma_error = 10,
cor_subject = 0,
effect_size = cohend(0.5)
)
n <- p$n2
alpha <- 0.05
delta <- p$effect_size[[1]]$get()$ES
# -1 df added because the covariate
df <- n * 2 - 2 - 1
r <- get_ICC_pre_subjects(p)
sd <- sqrt(1 * (1 - r^2))
lambda <- sqrt(n / 2) * delta / sd
power <- pt(qt(1 - alpha / 2, df = df), df = df, ncp = lambda, lower.tail = FALSE) +
pt(qt(alpha / 2, df = df), df = df, ncp = lambda)
Currently simulate(object, formula = formula)
only allows at most two different formulas, in a named list with the names "correct" or "wrong". It would be better to allow custom names and any number of formulas. eg
f <- list("3_lvl_correct" = "y ~ treatment * time + (1 + time | subject) + (time | cluster)",
"3_lvl_no_cor" = "y ~ treatment * time + (1 + time | subject) + (time || cluster)",
"2_lvl" = "y ~ treatment * time + (1 + time | subject)"
)
Dear Mr Magnusson,
First of all congratulations for this package. It seems that you put a lot of effort on that!
I have some questions about it. I saw the references that you provided, but unfortunately i do not have access to the books. I read the articles and i realized that you use slightly different calculations than what i can find elswhere( i.e. "Effects of study Duration, Frequency of observation, and sample size on Power in Studies of group differences in Polynomial Change"). Especially i observed a difference in the standardized effect and in the variance ratio, which i saw being calculated by using the total variance in the denominator and not only the within variance. And by comparing the results from this package with the PASS software i observed a slight difference in the estimated sample sizes. Can you please provide me with some articles or anything that i can read and understand your calculations ?
Thank you very much for your time.
Kind regards,
John Zavrakidis
Hi, would it be possible to include options for generating non longitudinal multilevel datasets (without cluster groups etc).
What I'm trying to simulate is a 2 level data set with a level 2 predictor (subject level) predicting a level 1 outcome (observation level).
I like the possibility to control all the parameters (like ICCs or ESs) and could use it in the context of purely continuous variables at different levels of measurement.
Or maybe it's already possible, but I can't figure out how?
All the best!
Hi,
Would it be very hard to implement a button in the shiny app, so that one can download the R code generated by the app?
Thank you very much,
Andrea
Dear Kristoffer,
I am very glad to see that you updated the powerlmm package and that you are trying to improve it! Keep up the good work!
To my problem now, I am working on longitudinal models. More precisely, I have 2 level structure with subjects randomized in 2 treatments and they are followed over time. Treatment is the only covariate in the data along with Time and their interaction, where I am most interested in.
I try to simulate some data. When I use the following input, the time and the treatment estimates seem to mess up with each other. In the input I understand that the Time estimate(slope in the control group) is given through the parameter “fixed_slope”, but looking at the results further below, I see that the theta for Time is 0 while the input that I specified(fixed_slope = 0.2) is given to the Treatment theta! And in addition, I see that the mean estimate of the time is 0.20( as it should be)!! Is this a bug or have I misunderstood something here?
P.S. What is the differnece between Power & Power_bw ?
p1 <- study_parameters(n1 = 10, # number of measurements per subject
n2 = 10, # number of subjects per treatment
fixed_intercept = 2.4,
fixed_slope = 0.20,
sigma_subject_intercept = 0.61,
sigma_subject_slope = 0.03,
cor_subject = -0.30,
sigma_error = 0.78,
effect_size = -0.8)
ttt <- simulate(p1, nsim = 5000)
Model: correct
Random effects
parameter M_est theta est_rel_bias prop_zero is_NA
subject_intercept 0.3925 0.3721 0.055 0.0044 0.0000
subject_slope 0.0018 0.0009 1.038 0.0014 0.0000
error 0.6019 0.6084 -0.011 0.0000 0.0000
cor_subject -0.2174 -0.3000 -0.275 0.4922 0.0044
Fixed effects
parameter M_est theta M_se SD_est Power Power_bw Power_satt
(Intercept) 2.4032 2.400 0.242 0.240 1.00 NA NaN
treatment -0.0076 0.200 0.342 0.339 0.06 NA NaN
time 0.2000 0.000 0.030 0.029 1.00 NA NaN
time:treatment -0.0884 -0.089 0.042 0.040 0.54 0.49 NaN
---
Number of simulations: 5000 | alpha: 0.05
Time points (n1): 10
Subjects per cluster (n2 x n3): 10 (treatment)
10 (control)
Thanks,
John
The following model will fail:
p <- study_parameters(n1 = 5,
n2 = 5,
icc_pre_subject = 0.5)
f <- "y ~ 1 + time + (1 | subject)"
res <- simulate(object = p,
nsim = 10,
formula = f,
satterthwaite = TRUE)
Even though it is a custom model, it is probably a good idea to support this type of custom use.
Would need to update:
Before this is supported it would be better to give a more informative error message.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.