Skip to content

Instantly share code, notes, and snippets.

@JimGrange
Last active October 22, 2019 08:09
Show Gist options
  • Save JimGrange/c92d926de04e2d0b8a13aa1d08300c13 to your computer and use it in GitHub Desktop.
Save JimGrange/c92d926de04e2d0b8a13aa1d08300c13 to your computer and use it in GitHub Desktop.
generate table of required sample sizes for various correlation effect sizes and various levels of desired power in a study
# generate table of required sample sizes for various correlation effect sizes
# and various levels of desired power in a study
# you need the pwr package
library(pwr)
# vector of effect sizes to explore
effect_sizes <- seq(from = 0.05, to = 0.95, by = 0.05)
# vector of desired power
power <- seq(from = 0.8, to = 0.95, length.out = 4)
# initialise matrix to store final results in
sim_results <- matrix(0, nrow = length(effect_sizes),
ncol = length(power))
# change the column & row names accordingly
rownames(sim_results) <- effect_sizes
colnames(sim_results) <- power
# sample size determination starts here
# for each effect size...
for(i in 1:nrow(sim_results)){
# for each level of desired power...
for(j in 1:ncol(sim_results)){
# calculate the sample size for current effect size & power
curr_power <- pwr.r.test(r = effect_sizes[i],
power = power[j],
sig.level = 0.05,
alternative = "two.sided")
# store the resulting sample size in the matrix
sim_results[i, j] <- round(curr_power$n, 0)
}
}
# save all to a csv file
write.csv(sim_results, "correlation_power.csv")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment