'Calculate the power of a t-test for two independent sample
Parameters
effect_size : float
standardized effect size, difference between the two means divided
by the standard deviation. effect size has to be positive.
nobs1 : int or float
number of observations of sample 1. The number of observations of
sample two is ratio times the size of sample 1,
i.e. ``nobs2 = nobs1 * ratio``
``ratio`` can be set to zero in order to get the power for a
one sample test.
alpha : float in interval (0,1)
significance level, e.g. 0.05, is the probability of a type I
error, that is wrong rejections if the Null Hypothesis is true.
ratio : float
ratio of the number of observations in sample 2 relative to
sample 1. see description of nobs1
The default for ratio is 1; to solve for ratio given the other
arguments it has to be explicitly set to None.
alternative : string, \'two-sided\' (default), \'larger\', \'smaller\'
extra argument to choose whether the power is calculated for a
two-sided (default) or one sided test. The one-sided test can be
either \'larger\', \'smaller\'.
Returns
power : float
Power of the test, e.g. 0.8, is one minus the probability of a
type II error. Power is the probability that the test correctly
rejects the Null Hypothesis if the Alternative Hypothesis is true.'

def power(self, effect_size, nobs1, alpha, ratio=1, alternative='two-sided'):

    ddof = self.ddof
    if (ratio > 0):
        nobs2 = (nobs1 * ratio)
        nobs = (1.0 / ((1.0 / (nobs1 - ddof)) + (1.0 / (nobs2 - ddof))))
    else:
        nobs = (nobs1 - ddof)
    return normal_power(effect_size, nobs, alpha, alternative=alternative)
