===== Analytic Power Analysis =====
==== Analytic Power and Sample Size Calculation for Case Control Studies ====
=== LOGIT model ===
== Basic example ==
To calculate power at given sample size assuming equal case control samples (1000 cases, 1000 controls), at an effect size of odds ratio equals 2 for rare variants, 1 for common variants, evaluated at \(\alpha=0.05\):
spower LOGIT KIT.gdat -a 2 --sample_size 2000 --alpha 0.05 -v2 -o K1AP
\\
To calculate sample size assuming equal case control samples given 80% power and using the same setup as above:
spower LOGIT KIT.gdat -a 2 --power 0.8 --alpha 0.05 -v2 -o K1AS
\\
To view results
spower show K1AP.csv power*
spower show K1AS.csv sample_size*
\\
== Adjust effect size ==
A variable effect model below will assign to rare variants odds ratio \(\in(1,3)\) depending on the MAF of rare variants:
spower LOGIT KIT.gdat -a 1 -A 3 --sample_size 2000 --alpha 0.05 -v2 -o K1AP
\\
Adding effects for common variants, fixed to odds ratio 1.2:
spower LOGIT KIT.gdat -a 1 -A 3 -c 1.2 --sample_size 2000 --alpha 0.05 -v2 -o K1AP
spower LOGIT KIT.gdat -a 1 -A 3 -c 1.2 --power 0.8 --alpha 0.05 -v2 -o K1AS
\\
== Adjust variant properties and analysis filters ==
Now based on the basic example, we change definition for rare variants to MAF > 5%:
spower LOGIT KIT.gdat -a 2 --def_rare 0.05 --sample_size 2000 --alpha 0.05 -v2 -o K1AP
\\
Power of the test boosts significantly, although it is not a reasonable setup to apply aggregated rare variant analysis to high frequency variants like in this example. There is usually adequate power to detect common variants association when analyzed individually.
== Set a random proportion of non-causal variants ==
It is often the case that not all functional rare variants are directly causal to the phenotype. To add such non-causal "noise" to data and evaluate the impact on power / sample size, we can set a random set of 50% variants to be non-causal (''-P'' option) and be included in analysis. Since the assignment of non-causal variant is random, the final estimate should be based on the average of multiple replicates, for example 100 replicates:
spower LOGIT KIT.gdat -a 2 --def_valid_locus 3 1000 --sample_size 2000 --alpha 0.05 -P 0.5 -r 100 -v2 -o K1APP
spower LOGIT KIT.gdat -a 2 --def_valid_locus 3 1000 --power 0.8 --alpha 0.05 -P 0.5 -r 100 -v2 -o K1APS
spower show K1APP.csv power power_std
\\
Note that standard deviation for the 100 replicates is also calculated and can be displayed.
=== PAR model ===
== Basic example ==
To calculate power at given sample size assuming equal case control samples (1000 cases, 1000 controls), at an effect size of PAR equals 5% for rare variants, 1% for common variants, evaluated at \(\alpha=0.05\):
spower PAR KIT.gdat -a 0.05 -c 0.01 --sample_size 2000 --alpha 0.05 -v2 -o K1AP
\\
To calculate sample size assuming equal case control samples given 80% power and using the same setup as above:
spower PAR KIT.gdat -a 0.05 -c 0.01 --power 0.8 --alpha 0.05 -v2 -o K1AS
\\
To view results
spower show K1AP.csv power*
spower show K1AS.csv sample_size*
\\
== Adjust effect size ==
A variable effect model below will assign site specific PAR to deleterious rare variants depending on the MAF of rare variants:
spower PAR KIT.gdat -a 0.05 --PAR_variable --sample_size 2000 --alpha 0.05 -v2 -o K1AP
spower PAR KIT.gdat -a 0.05 --PAR_variable --power 0.8 --alpha 0.05 -v2 -o K1AS
\\
== Set a random proportion of non-causal variants ==
The use of ''-P'' and ''-r'' options to model the effect of non-causal variants was previously introduced in logit model. The same idea applies to PAR model. See section above for details.
==== Analytic Power and Sample Size Calculation for Quantitative Traits Analysis ====
=== Linear QT mean shift model ===
== Basic example ==
To calculate power at given sample size for randomly ascertained QT samples of 2000 unrelated individuals, at an effect size of [[http://bioinformatics.org/spower/simtraits#quantitative_traits|\(0.25\sigma\)]], evaluated at \(\alpha=0.05\):
spower LNR KIT.gdat -a 0.25 --sample_size 2000 --alpha 0.05 -v2 -o K1AP # power 0.22
\\
To calculate sample size assuming equal case control samples given 80% power and using the same setup as above:
spower LNR KIT.gdat -a 0.25 --power 0.8 --alpha 0.05 -v2 -o K1AS # sample size 10806
\\
== Adjust effect size ==
A variable effect model below will assign to rare variants mean shift \(\in(0.1, 0.5)\) depending on the MAF of rare variants:
spower LNR KIT.gdat -a 0.1 -A 0.5 --sample_size 2000 --alpha 0.05 -v2 -o K1AP # 0.289
\\
Adding effects for common variants, fixed mean shift to 0.15:
spower LNR KIT.gdat -a 0.1 -A 0.5 -c 0.15 --sample_size 2000 --alpha 0.05 -v2 -o K1AP # 0.86
spower LNR KIT.gdat -a 0.1 -A 0.5 -c 0.15 --power 0.8 --alpha 0.05 -v2 -o K1AS # 1966
\\
== Adjust variant properties and analysis filters ==
Now based on the basic example, we change definition for rare variants to MAF > 5%:
spower LNR KIT.gdat -a 0.25 --def_rare 0.05 --sample_size 2000 --alpha 0.05 -v2 -o K1AP # 0.946
\\
Power of the test boosts significantly, although it is not a reasonable setup to apply aggregated rare variant analysis to high frequency variants like in this example. There is usually adequate power to detect common variants association when analyzed individually.
== Set a random proportion of non-causal variants ==
For example we set a random set of 50% variants that would not contribute to the quantitative phenotype, but will be included in analysis as noise and as a result larger sample size is required to achieve the same power. Since each time a random proportion of variants are considered non-causal, the final estimate should be based on average of multiple replicates, for example 100 replicates:
spower LNR KIT.gdat -a 0.5 --def_valid_locus 3 1000 --sample_size 20000 --alpha 0.05 -P 0.5 -r 100 -v2 -o K1APP --jobs 8 # power 0.8632
spower LNR KIT.gdat -a 0.5 --def_valid_locus 3 1000 --power 0.8 --alpha 0.05 -P 0.5 -r 100 -v2 -o K1APS --jobs 8 # sample size 17420.4501268
spower show K1APP.csv power*
spower show K1APS.csv *size*
\\
Note that standard deviation for the 100 replicates is also calculated and can be displayed with wildcard symbol "*" in ''spower show'' command.