<s> '''<STR_LIT>''' <EOL> from statsmodels . compat . python import range <EOL> import numpy as np <EOL> from scipy . misc import comb <EOL> def mc2mnc ( mc ) : <EOL> '''<STR_LIT>''' <EOL> n = len ( mc ) <EOL> mean = mc [ <NUM_LIT:0> ] <EOL> mc = [ <NUM_LIT:1> ] + list ( mc ) <EOL> mc [ <NUM_LIT:1> ] = <NUM_LIT:0> <EOL> mnc = [ <NUM_LIT:1> , mean ] <EOL> for nn , m in enumerate ( mc [ <NUM_LIT:2> : ] ) : <EOL> n = nn + <NUM_LIT:2> <EOL> mnc . append ( <NUM_LIT:0> ) <EOL> for k in range ( n + <NUM_LIT:1> ) : <EOL> mnc [ n ] += comb ( n , k , exact = <NUM_LIT:1> ) * mc [ k ] * mean ** ( n - k ) <EOL> return mnc [ <NUM_LIT:1> : ] <EOL> def mnc2mc ( mnc , wmean = True ) : <EOL> '''<STR_LIT>''' <EOL> n = len ( mnc ) <EOL> mean = mnc [ <NUM_LIT:0> ] <EOL> mnc = [ <NUM_LIT:1> ] + list ( mnc ) <EOL> mu = [ ] <EOL> for n , m in enumerate ( mnc ) : <EOL> mu . append ( <NUM_LIT:0> ) <EOL> for k in range ( n + <NUM_LIT:1> ) : <EOL> mu [ n ] += ( - <NUM_LIT:1> ) ** ( n - k ) * comb ( n , k , exact = <NUM_LIT:1> ) * mnc [ k ] * mean ** ( n - k ) <EOL> if wmean : <EOL> mu [ <NUM_LIT:1> ] = mean <EOL> return mu [ <NUM_LIT:1> : ] <EOL> def cum2mc ( kappa ) : <EOL> '''<STR_LIT>''' <EOL> mc = [ <NUM_LIT:1> , <NUM_LIT:0.0> ] <EOL> kappa0 = kappa [ <NUM_LIT:0> ] <EOL> kappa = [ <NUM_LIT:1> ] + list ( kappa ) <EOL> for nn , m in enumerate ( kappa [ <NUM_LIT:2> : ] ) : <EOL> n = nn + <NUM_LIT:2> <EOL> mc . append ( <NUM_LIT:0> ) <EOL> for k in range ( n - <NUM_LIT:1> ) : <EOL> mc [ n ] += comb ( n - <NUM_LIT:1> , k , exact = <NUM_LIT:1> ) * kappa [ n - k ] * mc [ k ] <EOL> mc [ <NUM_LIT:1> ] = kappa0 <EOL> return mc [ <NUM_LIT:1> : ] <EOL> def mnc2cum ( mnc ) : <EOL> '''<STR_LIT>''' <EOL> mnc = [ <NUM_LIT:1> ] + list ( mnc ) <EOL> kappa = [ <NUM_LIT:1> ] <EOL> for nn , m in enumerate ( mnc [ <NUM_LIT:1> : ] ) : <EOL> n = nn + <NUM_LIT:1> <EOL> kappa . append ( m ) <EOL> for k in range ( <NUM_LIT:1> , n ) : <EOL> kappa [ n ] -= comb ( n - <NUM_LIT:1> , k - <NUM_LIT:1> , exact = <NUM_LIT:1> ) * kappa [ k ] * mnc [ n - k ] <EOL> return kappa [ <NUM_LIT:1> : ] <EOL> def mc2cum ( mc ) : <EOL> '''<STR_LIT>''' <EOL> return mnc2cum ( mc2mnc ( mc ) ) <EOL> def mvsk2mc ( args ) : <EOL> '''<STR_LIT>''' <EOL> mu , sig2 , sk , kur = args <EOL> cnt = [ None ] * <NUM_LIT:4> <EOL> cnt [ <NUM_LIT:0> ] = mu <EOL> cnt [ <NUM_LIT:1> ] = sig2 <EOL> cnt [ <NUM_LIT:2> ] = sk * sig2 ** <NUM_LIT> <EOL> cnt [ <NUM_LIT:3> ] = ( kur + <NUM_LIT> ) * sig2 ** <NUM_LIT> <EOL> return tuple ( cnt ) <EOL> def mvsk2mnc ( args ) : <EOL> '''<STR_LIT>''' <EOL> mc , mc2 , skew , kurt = args <EOL> mnc = mc <EOL> mnc2 = mc2 + mc * mc <EOL> mc3 = skew * ( mc2 ** <NUM_LIT> ) <EOL> mnc3 = mc3 + <NUM_LIT:3> * mc * mc2 + mc ** <NUM_LIT:3> <EOL> mc4 = ( kurt + <NUM_LIT> ) * ( mc2 ** <NUM_LIT> ) <EOL> mnc4 = mc4 + <NUM_LIT:4> * mc * mc3 + <NUM_LIT:6> * mc * mc * mc2 + mc ** <NUM_LIT:4> <EOL> return ( mnc , mnc2 , mnc3 , mnc4 ) <EOL> def mc2mvsk ( args ) : <EOL> '''<STR_LIT>''' <EOL> mc , mc2 , mc3 , mc4 = args <EOL> skew = np . divide ( mc3 , mc2 ** <NUM_LIT> ) <EOL> kurt = np . divide ( mc4 , mc2 ** <NUM_LIT> ) - <NUM_LIT> <EOL> return ( mc , mc2 , skew , kurt ) <EOL> def mnc2mvsk ( args ) : <EOL> '''<STR_LIT>''' <EOL> mnc , mnc2 , mnc3 , mnc4 = args <EOL> mc = mnc <EOL> mc2 = mnc2 - mnc * mnc <EOL> mc3 = mnc3 - ( <NUM_LIT:3> * mc * mc2 + mc ** <NUM_LIT:3> ) <EOL> mc4 = mnc4 - ( <NUM_LIT:4> * mc * mc3 + <NUM_LIT:6> * mc * mc * mc2 + mc ** <NUM_LIT:4> ) <EOL> return mc2mvsk ( ( mc , mc2 , mc3 , mc4 ) ) <EOL> def cov2corr ( cov , return_std = False ) : <EOL> '''<STR_LIT>''' <EOL> cov = np . asanyarray ( cov ) <EOL> std_ = np . sqrt ( np . diag ( cov ) ) <EOL> corr = cov / np . outer ( std_ , std_ ) <EOL> if return_std : <EOL> return corr , std_ <EOL> else : <EOL> return corr <EOL> def corr2cov ( corr , std ) : <EOL> '''<STR_LIT>''' <EOL> corr = np . asanyarray ( corr ) <EOL> std_ = np . asanyarray ( std ) <EOL> cov = corr * np . outer ( std_ , std_ ) <EOL> return cov <EOL> def se_cov ( cov ) : <EOL> '''<STR_LIT>''' <EOL> return np . sqrt ( np . diag ( cov ) ) </s>
