1# -*- coding: utf-8 -*-
2"""
3
4Created on Wed Mar 13 13:06:14 2013
5
6Author: Josef Perktold
7"""
8
9from statsmodels.stats.power import TTestPower, TTestIndPower, tt_solve_power
10
11if __name__ == '__main__':
12    effect_size, alpha, power = 0.5, 0.05, 0.8
13
14    ttest_pow = TTestPower()
15    print('\nroundtrip - root with respect to all variables')
16    print('\n       calculated, desired')
17
18    nobs_p = ttest_pow.solve_power(effect_size=effect_size, nobs=None, alpha=alpha, power=power)
19    print('nobs  ', nobs_p)
20    print('effect', ttest_pow.solve_power(effect_size=None, nobs=nobs_p, alpha=alpha, power=power), effect_size)
21
22    print('alpha ', ttest_pow.solve_power(effect_size=effect_size, nobs=nobs_p, alpha=None, power=power), alpha)
23    print('power  ', ttest_pow.solve_power(effect_size=effect_size, nobs=nobs_p, alpha=alpha, power=None), power)
24
25    print('\nroundtrip - root with respect to all variables')
26    print('\n       calculated, desired')
27
28    print('nobs  ', tt_solve_power(effect_size=effect_size, nobs=None, alpha=alpha, power=power), nobs_p)
29    print('effect', tt_solve_power(effect_size=None, nobs=nobs_p, alpha=alpha, power=power), effect_size)
30
31    print('alpha ', tt_solve_power(effect_size=effect_size, nobs=nobs_p, alpha=None, power=power), alpha)
32    print('power  ', tt_solve_power(effect_size=effect_size, nobs=nobs_p, alpha=alpha, power=None), power)
33
34    print('\none sided')
35    nobs_p1 = tt_solve_power(effect_size=effect_size, nobs=None, alpha=alpha, power=power, alternative='larger')
36    print('nobs  ', nobs_p1)
37    print('effect', tt_solve_power(effect_size=None, nobs=nobs_p1, alpha=alpha, power=power, alternative='larger'), effect_size)
38    print('alpha ', tt_solve_power(effect_size=effect_size, nobs=nobs_p1, alpha=None, power=power, alternative='larger'), alpha)
39    print('power  ', tt_solve_power(effect_size=effect_size, nobs=nobs_p1, alpha=alpha, power=None, alternative='larger'), power)
40
41    #start_ttp = dict(effect_size=0.01, nobs1=10., alpha=0.15, power=0.6)
42
43    ttind_solve_power = TTestIndPower().solve_power
44
45    print('\nroundtrip - root with respect to all variables')
46    print('\n       calculated, desired')
47
48    nobs_p2 = ttind_solve_power(effect_size=effect_size, nobs1=None, alpha=alpha, power=power)
49    print('nobs  ', nobs_p2)
50    print('effect', ttind_solve_power(effect_size=None, nobs1=nobs_p2, alpha=alpha, power=power), effect_size)
51    print('alpha ', ttind_solve_power(effect_size=effect_size, nobs1=nobs_p2, alpha=None, power=power), alpha)
52    print('power  ', ttind_solve_power(effect_size=effect_size, nobs1=nobs_p2, alpha=alpha, power=None), power)
53    print('ratio  ', ttind_solve_power(effect_size=effect_size, nobs1=nobs_p2, alpha=alpha, power=power, ratio=None), 1)
54
55    print('\ncheck ratio')
56    print('smaller power', ttind_solve_power(effect_size=effect_size, nobs1=nobs_p2, alpha=alpha, power=0.7, ratio=None), '< 1')
57    print('larger power ', ttind_solve_power(effect_size=effect_size, nobs1=nobs_p2, alpha=alpha, power=0.9, ratio=None), '> 1')
58