Repository URL to install this package:
|
Version:
0.10.2 ▾
|
# -*- coding: utf-8 -*-
"""
Created on Wed Feb 19 12:39:49 2014
Author: Josef Perktold
"""
import numpy as np
from scipy import stats
from statsmodels.sandbox.distributions.extras import (SkewNorm_gen, skewnorm,
ACSkewT_gen,
NormExpan_gen, pdf_moments,
ExpTransf_gen, LogTransf_gen)
from statsmodels.stats.moment_helpers import mc2mvsk, mnc2mc, mvsk2mnc
def example_n():
print(skewnorm.pdf(1,0), stats.norm.pdf(1), skewnorm.pdf(1,0) - stats.norm.pdf(1))
print(skewnorm.pdf(1,1000), stats.chi.pdf(1,1), skewnorm.pdf(1,1000) - stats.chi.pdf(1,1))
print(skewnorm.pdf(-1,-1000), stats.chi.pdf(1,1), skewnorm.pdf(-1,-1000) - stats.chi.pdf(1,1))
rvs = skewnorm.rvs(0,size=500)
print('sample mean var: ', rvs.mean(), rvs.var())
print('theoretical mean var', skewnorm.stats(0))
rvs = skewnorm.rvs(5,size=500)
print('sample mean var: ', rvs.mean(), rvs.var())
print('theoretical mean var', skewnorm.stats(5))
print(skewnorm.cdf(1,0), stats.norm.cdf(1), skewnorm.cdf(1,0) - stats.norm.cdf(1))
print(skewnorm.cdf(1,1000), stats.chi.cdf(1,1), skewnorm.cdf(1,1000) - stats.chi.cdf(1,1))
print(skewnorm.sf(0.05,1000), stats.chi.sf(0.05,1), skewnorm.sf(0.05,1000) - stats.chi.sf(0.05,1))
def example_T():
skewt = ACSkewT_gen()
rvs = skewt.rvs(10,0,size=500)
print('sample mean var: ', rvs.mean(), rvs.var())
print('theoretical mean var', skewt.stats(10,0))
print('t mean var', stats.t.stats(10))
print(skewt.stats(10,1000)) # -> folded t distribution, as alpha -> inf
rvs = np.abs(stats.t.rvs(10,size=1000))
print(rvs.mean(), rvs.var())
def examples_normexpand():
skewnorm = SkewNorm_gen()
rvs = skewnorm.rvs(5,size=100)
normexpan = NormExpan_gen(rvs, mode='sample')
smvsk = stats.describe(rvs)[2:]
print('sample: mu,sig,sk,kur')
print(smvsk)
dmvsk = normexpan.stats(moments='mvsk')
print('normexpan: mu,sig,sk,kur')
print(dmvsk)
print('mvsk diff distribution - sample')
print(np.array(dmvsk) - np.array(smvsk))
print('normexpan attributes mvsk')
print(mc2mvsk(normexpan.cnt))
print(normexpan.mvsk)
mnc = mvsk2mnc(dmvsk)
mc = mnc2mc(mnc)
print('central moments')
print(mc)
print('non-central moments')
print(mnc)
pdffn = pdf_moments(mc)
print('\npdf approximation from moments')
print('pdf at', mc[0]-1,mc[0]+1)
print(pdffn([mc[0]-1,mc[0]+1]))
print(normexpan.pdf([mc[0]-1,mc[0]+1]))
def examples_transf():
##lognormal = ExpTransf(a=0.0, xa=-10.0, name = 'Log transformed normal')
##print(lognormal.cdf(1))
##print(stats.lognorm.cdf(1,1))
##print(lognormal.stats())
##print(stats.lognorm.stats(1))
##print(lognormal.rvs(size=10))
print('Results for lognormal')
lognormalg = ExpTransf_gen(stats.norm, a=0, name = 'Log transformed normal general')
print(lognormalg.cdf(1))
print(stats.lognorm.cdf(1,1))
print(lognormalg.stats())
print(stats.lognorm.stats(1))
print(lognormalg.rvs(size=5))
##print('Results for loggamma')
##loggammag = ExpTransf_gen(stats.gamma)
##print(loggammag._cdf(1,10))
##print(stats.loggamma.cdf(1,10))
print('Results for expgamma')
loggammaexpg = LogTransf_gen(stats.gamma)
print(loggammaexpg._cdf(1,10))
print(stats.loggamma.cdf(1,10))
print(loggammaexpg._cdf(2,15))
print(stats.loggamma.cdf(2,15))
# this requires change in scipy.stats.distribution
#print(loggammaexpg.cdf(1,10))
print('Results for loglaplace')
loglaplaceg = LogTransf_gen(stats.laplace)
print(loglaplaceg._cdf(2))
print(stats.loglaplace.cdf(2,1))
loglaplaceexpg = ExpTransf_gen(stats.laplace)
print(loglaplaceexpg._cdf(2))
stats.loglaplace.cdf(3,3)
#0.98148148148148151
loglaplaceexpg._cdf(3,0,1./3)
#0.98148148148148151
if __name__ == '__main__':
example_n()
example_T()
examples_normexpand()
examples_transf()