Analytical and simulation-based power analyses for mixed-design ANOVAs
In this post I show some R-examples on how to perform power analyses for mixed-design ANOVAs. The first example is analytical — adapted from formulas used in G*Power (Faul et al., 2007), and the second example is a Monte Carlo simulation. The source code is embedded at the end of this post.
Both functions require a dataframe, containing the parameters that will be used in the power calculations. Here is an example using three groups and three time-points.
Here is a plot of our hypothetical study design.
Now, we will use this design to perform a power analysis using
anova.pwr.mixed
and anova.pwr.mixed.sim
.
Comparison of analytical and monte carlo power analysis
Now let’s compare the two functions’ results on the time x group-interaction. Hopefully, the two methods will yield the same result.
Luckily, the analytical results are consistent with the Monte Carlo results.
References
Faul, F., Erdfelder, E., Lang, A. G., & Buchner, A. (2007). G* Power 3: A flexible statistical power analysis program for the social, behavioral, and biomedical sciences.Behavior research methods, 39(2), 175-191.
Source code
Written by Kristoffer Magnusson, a researcher in clinical psychology. You should follow him on Twitter and come hang out on the open science discord Git Gud Science.
Published May 22, 2013 (View on GitHub)
Buy Me A Coffee
A huge thanks to the 64 supporters who've bought me a 143 coffees!
SCCT/Psychology bought ☕☕☕ (3) coffees
Keep the visualizations coming!
@noelnguyen16 bought ☕ (1) coffee
Hi Kristoffer, many thanks for making all this great stuff available to the community!
Eran Barzilai bought ☕ (1) coffee
These visualizations are awesome! thank you for creating it
Someone bought ☕ (1) coffee
@elena_bolt bought ☕☕☕ (3) coffees
Thank you so much for your work, Kristoffer. I use your visualizations to explain concepts to my tutoring students and they are a huge help.
A random user bought ☕☕☕ (3) coffees
Thank you for making such useful and pretty tools. It not only helped me understand more about power, effect size, etc, but also made my quanti-method class more engaging and interesting. Thank you and wish you a great 2021!
@hertzpodcast bought ☕☕☕ (3) coffees
We've mentioned your work a few times on our podcast and we recently sent a poster to a listener as prize so we wanted to buy you a few coffees. Thanks for the great work that you do!Dan Quintana and James Heathers - Co-hosts of Everything Hertz
Chris SG bought ☕ (1) coffee
Very nice.
@whlevine bought ☕☕ (2) coffees
Thank you so much for these amazing visualizations. They're a great teaching tool and the allow me to show students things that it would take me weeks or months to program myself.
Someone bought ☕☕ (2) coffees
Cameron Proctor bought ☕☕☕ (3) coffees
Used your vizualization in class today. Thanks!
@Daniel_Brad4d bought ☕☕☕☕☕ (5) coffees
Wonderful work!
Gray Church bought ☕ (1) coffee
Thank you for the visualizations. They are fun and informative.
eshulman@brocku.ca bought ☕☕☕ (3) coffees
My students love these visualizations and so do I! Thanks for helping me make stats more intuitive.
Qamar bought ☕ (1) coffee
Someone bought ☕☕☕ (3) coffees
Adrian Helgå Vestøl bought ☕☕☕ (3) coffees
David Loschelder bought ☕☕☕☕☕ (5) coffees
Terrific work. So very helpful. Thank you very much.
Tanya McGhee bought ☕ (1) coffee
@neilmeigh bought ☕☕☕☕☕ (5) coffees
I am so grateful for your page and can't thank you enough!
@schultemi bought ☕ (1) coffee
@giladfeldman bought ☕☕☕☕☕ (5) coffees
Wonderful work, I use it every semester and it really helps the students (and me) understand things better. Keep going strong.
Dean Norris bought ☕☕☕☕☕ (5) coffees
@misteryosupjoo bought ☕☕☕ (3) coffees
For a high school teacher of psychology, I would be lost without your visualizations. The ability to interact and manipulate allows students to get it in a very sticky manner. Thank you!!!
Sal bought ☕☕☕☕☕ (5) coffees
Really super useful, especially for teaching. Thanks for this!
Neilo bought ☕ (1) coffee
Really helpful visualisations, thanks!
Chi bought ☕☕☕ (3) coffees
You Cohen's d post really helped me explaining the interpretation to people who don't know stats! Thank you!
Someone bought ☕☕☕ (3) coffees
You doing useful work !! thanks !!
@ArtisanalANN bought ☕☕☕ (3) coffees
Enjoy.
Someone bought ☕ (1) coffee
This is amazing stuff. Very slick.
Someone bought ☕ (1) coffee
Sarko bought ☕ (1) coffee
Thanks so much for creating this! Really helpful for being able to explain effect size to a clinician I'm doing an analysis for.
@jsholtes bought ☕☕☕ (3) coffees
Teaching stats to civil engineer undergrads (first time teaching for me, first time for most of them too) and grasping for some good explanations of hypothesis testing, power, and CI's. Love these interactive graphics!
@DominikaSlus bought ☕ (1) coffee
Thank you! This page is super useful. I'll spread the word.
Someone bought ☕ (1) coffee
dde@paxis.org bought ☕☕☕☕☕ (5) coffees
Very helpful to helping teach teachers about the effects of the Good Behavior Game
@notawful bought ☕☕☕ (3) coffees
Thank you for using your stats and programming gifts in such a useful, generous manner. -Jess
Mateu Servera bought ☕☕☕ (3) coffees
A job that must have cost far more coffees than we can afford you ;-). Thank you.
Melinda Rice bought ☕ (1) coffee
Thank you so much for creating these tools! As we face the challenge of teaching statistical concepts online, this is an invaluable resource.
@tmoldwin bought ☕ (1) coffee
Fantastic resource. I think you would be well served to have one page indexing all your visualizations, that would make it more accessible for sharing as a common resource.
@cdrawn bought ☕☕☕ (3) coffees
Thank you! Such a great resource for teaching these concepts, especially CI, Power, correlation.
Someone bought ☕ (1) coffee
Fantastic Visualizations! Amazing way to to demonstrate how n/power/beta/alpha/effect size are all interrelated - especially for visual learners! Thank you for creating this?
@akreutzer82 bought ☕☕☕☕☕ (5) coffees
Amazing visualizations! Thank you!
@rdh_CLE bought ☕☕☕☕☕ (5) coffees
So good!
@jackferd bought ☕ (1) coffee
Incredible visualizations and the best power analysis software on R.
Julia bought ☕☕☕ (3) coffees
Fantastic work with the visualizations!
@felixthoemmes bought ☕☕☕ (3) coffees
@dalejbarr bought ☕☕☕ (3) coffees
Your work is amazing! I use your visualizations often in my teaching. Thank you.
@notawful bought ☕☕ (2) coffees
Thank you for sharing your visualization skills with the rest of us! I use them frequently when teaching intro stats.
Cameron Proctor bought ☕ (1) coffee
Great website!
Someone bought ☕ (1) coffee
Hanah Chapman bought ☕ (1) coffee
Thank you for this work!!
Someone bought ☕ (1) coffee
Jayme bought ☕ (1) coffee
Nice explanation and visual guide of Cohen's d
Bart Comly Boyce bought ☕ (1) coffee
thank you
Dr. Mitchell Earleywine bought ☕ (1) coffee
This site is superb!
Florent bought ☕ (1) coffee
Zampeta bought ☕ (1) coffee
thank you for sharing your work.
Mila bought ☕ (1) coffee
Thank you for the website, made me smile AND smarter :O enjoy your coffee! :)
Deb bought ☕ (1) coffee
Struggling with statistics and your interactive diagram made me smile to see that someone cares enough about us strugglers to make a visual to help us out!😍
Someone bought ☕ (1) coffee
@exerpsysing bought ☕ (1) coffee
Much thanks! Visualizations are key to my learning style!
@PsychoMouse bought ☕☕☕ (3) coffees
Excellent! Well done! SOOOO Useful!😊 🐭
Someone bought ☕ (1) coffee
Sponsors
You can sponsor my open source work using GitHub Sponsors and have your name shown here.
Backers ✨❤️
Questions & Comments
Please use GitHub Discussions for any questions related to this post, or open an issue on GitHub if you've found a bug or wan't to make a feature request.
Webmentions
0 0
There are no webmentions for this page
(Webmentions sent before 2021 will unfortunately not show up here.)
Archived Comments (2)
Hi, Nice post. Could you please provide a bit more detail (and/or a reference) for the computation on the second line below? Thank you.
B <- matrix(stdevs, ncol=4, nrow=4)
sigma <- t(B) * B * rho
That computation is used to construct the covariance matrix based on the given standard deviations and correlation coefficient between each time point (rho). Here's an expanded calculation, hope it helps
First, we have that
$latex \rho_{X,Y}=\mathrm{corr}(X,Y)={\mathrm{cov}(X,Y) \over \sigma_X \sigma_Y} $
and thus we can easily solve for Cov(X,Y).
$latex \mathrm{cov}(X,Y) = \sigma_X \sigma_Y \mathrm{corr}(X,Y)$
And we want our covariance matrix have compound symmetry but allow heterogeneous variances, so that we can explicitly violate the sphericity assumption if we want to. This is usefull if want want to simulate the effects of violating this assumption. However, sphericity can still hold even without compound symmetry. So our covariance matrix will look like this
$latex \Sigma = \begin{pmatrix}
\sigma_1^2 & \sigma_2\sigma_1\rho & \sigma_3\sigma_1\rho \\
\sigma_2\sigma_1\rho & \sigma_2^2 & \sigma_3\sigma_2\rho \\
\sigma_3\sigma_1\rho & \sigma_3\sigma_2\rho & \sigma_3^2
\end{pmatrix}
$
So t(B)*B*rho is just an vectorized implementation of this, i.e:
$latex B = \begin{pmatrix}
\sigma_1 & \sigma_1 & \sigma_1 \\
\sigma_2 & \sigma_2 & \sigma_2 \\
\sigma_3 & \sigma_3 & \sigma_3 \\
\end{pmatrix}
$
and t(B) is
$latex \mathbf{B}^\top = \begin{pmatrix}
\sigma_1 & \sigma_2 & \sigma_3 \\
\sigma_1 & \sigma_2 & \sigma_3 \\
\sigma_1 & \sigma_2 & \sigma_3 \\
\end{pmatrix}
$
and thus t(B) * B is
$latex \mathbf{B}^\top*\mathbf{B} = \begin{pmatrix}
\sigma_1^2 & \sigma_2\sigma_1 & \sigma_3\sigma_1 \\
\sigma_2\sigma_1 & \sigma_2^2 & \sigma_3\sigma_2 \\
\sigma_3\sigma_1 & \sigma_3\sigma_2 & \sigma_3^2
\end{pmatrix}
$
And if we multiply this by the correlation coefficient of the repeated measures, and replace the diagonal since it has also been multiplied with rho, then we have the covariance matrix as described above.