Skip to content

AleAnsani/plssempower

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PLS-SEM-power

Stressed about sample size in your Partial Least Squares Structural Equation Model? Planning a PLS-SEM, but unsure how many participants you need? Worried that your expected effect size is small and your sample might be...even smaller? Still relying on vague heuristics like the “10-times rule”? We’ve all been there. Well, not exactly "all", to be fair...

Say hello to plssempower, an R package designed to make power analysis for PLS-SEM models fast, transparent, and reproducible. Using the inverse square root method introduced by Kock and Hadaya (2018), this package allows you to:

  • Compute the required sample size for a given effect size (a priori)
  • Compute the Minimum Detectable Effect Size (MDES) for a given sample (sensitivity)
  • Visualise your results with clear, (slightly) customisable graphs.

All in one function. No more guessing. No more excuses.

⚙️ Install from GitHub

The installation is pretty easy. Make sure to run this code:

# install.packages("devtools") # run this line if you don't have devtools (you need to remove the first # to do it)
# install plssempower
devtools::install_github("AleAnsani/plssempower")

What?! You still don't use R?! Ok, ok, I can get that...no biggie, we're inclusive here. Make sure you scroll down and you'll find a surprise just for you...

🚀 What does this package do?

plssempower is an R package for computing power and sensitivity analyses in Partial Least Squares Structural Equation Modelling (PLS-SEM) using the inverse square root method.

This package provides two simple functions:

  • pls_sem_power() – Computes either the minimum sample size needed for a given Minimum Detectable Effect Size (MDES), or the MDES for a given sample size, based on the formula proposed by Kock & Hadaya (2018, equation 5).
  • pls_sem_power_graph() – Generates ggplot2 graphs showing the relationship between MDES and sample size, including reference lines for the user’s input.

📊 Methodology

The package is based on the inverse square root method, introduced by Kock & Hadaya (2018), which is a practical approach for determining sample sizes in PLS-SEM. The key formula used is: N = (pα / pmin)²

Where:

  • is a constant depending on the significance level (α = 0.01, 0.05, 0.10),
  • pmin is the path coefficient with minimum magnitude expected to be significant.

🔧 Usage

# Compute the required sample size for a given MDES
pls_sem_power(method = "a priori", MDES = 0.2, alpha = 0.05)

# Compute MDES for a given sample size
pls_sem_power(method = "sensitivity", N = 63, alpha = 0.05)

# Generate graph (a priori)
pls_sem_power_graph(method = "a priori", MDES = 0.2, alpha = 0.05)

# Generate graph (sensitivity)
pls_sem_power_graph(method = "sensitivity", N = 63, alpha = 0.05)

Notes:

  • The alpha argument accepts only three values: 0.01, 0.05, and 0.10.
  • When using pls_sem_power_graph, you can set theme = "min" to apply a minimal white background, which may improve readability in certain contexts. The graphs use Okabe and Ito’s (2008) colour-blind-friendly colour palette.

📜 Examples

A priori

Let's assume that you need to collect your sample and you're interested in one particular path of your PLS-SEM, whose effect size you estimate to be around 0.5.

In this case, you would conduct an a priori power analysis to assess the minimum required sample size to observe such an effect with 80% power.

All you need to run is

pls_sem_power_graph(method = "a priori", MDES = 0.5, alpha = 0.05)

This graph will appear, clearly showing that you would need at least 25 participants to observe such an effect with 80% power image

If you're not interested in the graph, but you just need to have the computation done, then you simply need to run

pls_sem_power(method = "a priori", MDES = 0.5, alpha = 0.05)

And you'll receive this message

To detect an effect of 0.5 with 80% power at alpha = 0.05 you need at least 25 observations.

Sensitivity

Let's now assume that you have already collected your sample, prior to any power analysis (Aargh! Naughty researcher!). You have painstakingly gathered 68 participants, and you're starting to wonder what the smallest effect size is that you could detect with 80% power.

In this case, you would conduct a sensitivity power analysis to assess the Minimum Detectable Effect Size (MDES) with 80% power given your sample size.

All you need to run is

pls_sem_power_graph(method = "sensitivity", N = 68, alpha = 0.05)

Note that the function works identically; you simply need to substitute the method (i.e., sensitivity instead of a priori) and provide the N argument instead of MDES.

This graph will appear, telling you that you can detect effects larger than 0.30 with 80% power image

Again, if you're rushing and don't really care about the graph, then you simply need to type

pls_sem_power(method = "sensitivity", N = 68, alpha = 0.05)

And you'll receive this message

With N = 68 and alpha = 0.05 you can detect effects as small as 0.30 with 80% power

Easy-peasy...isn't it?! And it's all for free! The only thing we ask for is for the package to be cited properly, for instance, like this:

  • Ansani, A., & Rinallo, E. (2025). PLS-SEM-power (Version 1.0.0) [R package / Shiny App].

and the relative preprint:

  • Ansani, A., & Rinallo, E. (2025). PLS-SEM-power: A Shiny App and R package for Computing Required Sample Size and Minimum Detectable Effect Size in PLS-SEMs (Version 1). arXiv. https://doi.org/10.48550/ARXIV.2511.14546

🌐 Shiny App

Woo! What was that?! I was about to forget! plssempower is also available on the internet as a Shiny App. You don't have to download the R package necessarily. You can just run your PLS-SEM power analyses the old-fashioned point-and-clicky way. Here's the link, have fun! https://aleansani.shinyapps.io/pls-sem-power/

Please note: it might take some time to load on the first access, that's entirely normal.

📚 References

Ansani, A., & Rinallo, E. (2025). PLS-SEM-power: A Shiny App and R package for Computing Required Sample Size and Minimum Detectable Effect Size in PLS-SEMs (Version 1). arXiv. https://doi.org/10.48550/ARXIV.2511.14546

Kock, N., & Hadaya, P. (2018). Minimum sample size estimation in PLS‐SEM: The inverse square root and gamma‐exponential methods. Information Systems Journal, 28(1), 227–261. https://cits.tamiu.edu/kock/pubs/journals/2018/Kock_Hadaya_2018_ISJ_SampleSizePLS.pdf

Bloom, H. S. (1995). Minimum Detectable Effects: A Simple Way to Report the Statistical Power of Experimental Designs. Evaluation Review, 19(5), 547–556.

Dong, N., & Maynard, R. (2013). PowerUp!: A Tool for Calculating Minimum Detectable Effect Sizes and Minimum Required Sample Sizes. Journal of Research on Educational Effectiveness, 6(1), 24–67.

Okabe, M., & Ito, K. (2008). Color universal design (CUD): How to make figures and presentations that are friendly to colorblind people. https://jfly.uni-koeln.de/color/#pallet (Original work published 2002)

🆘 Help & Troubleshooting

Both the plssempower R package and the Shiny App are obscenely straightforward. However, we can never rule out things going terribly wrong, can we?! So, should you need some help or, even better, you'd like to suggest some improvements, please feel free to shoot me a message via the issues or discussions tab. My social skills are definitely better than my coding.

About

Power analysis tool for Partial Least Squares Structural Equation Modelling (PLS-SEM): R package + Shiny App

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages