from scipy import stats
import numpy as np
from scikits.statsmodels.sandbox.distributions.mixture_rvs import mixture_rvs
from scikits.statsmodels.nonparametric.kde import (kdensity, kdensityfft)
import matplotlib.pyplot as plt

np.random.seed(12345)
obs_dist = mixture_rvs([.25,.75], size=10000, dist=[stats.norm, stats.norm],
                kwargs = (dict(loc=-1,scale=.5),dict(loc=1,scale=.5)))
#obs_dist = mixture_rvs([.25,.75], size=10000, dist=[stats.norm, stats.beta],
#                kwargs = (dict(loc=-1,scale=.5),dict(loc=1,scale=1,args=(1,.5))))


f_hat, grid, bw = kdensityfft(obs_dist, kernel="gauss", bw="scott")

# check the plot

plt.hist(obs_dist, bins=50, normed=True, color='red')
plt.plot(grid, f_hat, lw=2, color='black')
plt.show()

# do some timings
# get bw first because they're not streamlined
from scikits.statsmodels.nonparametric import bandwidths
bw = bandwidths.bw_scott(obs_dist)

#timeit kdensity(obs_dist, kernel="gauss", bw=bw, gridsize=2**10)
#timeit kdensityfft(obs_dist, kernel="gauss", bw=bw, gridsize=2**10)
Example #2
0
from scipy import stats
import numpy as np
from scikits.statsmodels.sandbox.distributions.mixture_rvs import mixture_rvs
from scikits.statsmodels.nonparametric.kde import (kdensity, kdensityfft)
import matplotlib.pyplot as plt

np.random.seed(12345)
obs_dist = mixture_rvs([.25, .75],
                       size=10000,
                       dist=[stats.norm, stats.norm],
                       kwargs=(dict(loc=-1, scale=.5), dict(loc=1, scale=.5)))
#obs_dist = mixture_rvs([.25,.75], size=10000, dist=[stats.norm, stats.beta],
#                kwargs = (dict(loc=-1,scale=.5),dict(loc=1,scale=1,args=(1,.5))))

f_hat, grid, bw = kdensityfft(obs_dist, kernel="gauss", bw="scott")

# check the plot

plt.hist(obs_dist, bins=50, normed=True, color='red')
plt.plot(grid, f_hat, lw=2, color='black')
plt.show()

# do some timings
# get bw first because they're not streamlined
from scikits.statsmodels.nonparametric import bandwidths

bw = bandwidths.bw_scott(obs_dist)

#timeit kdensity(obs_dist, kernel="gauss", bw=bw, gridsize=2**10)
#timeit kdensityfft(obs_dist, kernel="gauss", bw=bw, gridsize=2**10)
Example #3
0
if __name__ == '__main__':

    examples = ['chebyt', 'fourier', 'hermite']  #[2]

    nobs = 10000

    import matplotlib.pyplot as plt
    from scikits.statsmodels.sandbox.distributions.mixture_rvs import (
        mixture_rvs, MixtureDistribution)

    #np.random.seed(12345)
    ##    obs_dist = mixture_rvs([1/3.,2/3.], size=nobs, dist=[stats.norm, stats.norm],
    ##                   kwargs = (dict(loc=-1,scale=.5),dict(loc=1,scale=.75)))
    mix_kwds = (dict(loc=-0.5, scale=.5), dict(loc=1, scale=.2))
    obs_dist = mixture_rvs([1 / 3., 2 / 3.],
                           size=nobs,
                           dist=[stats.norm, stats.norm],
                           kwargs=mix_kwds)
    mix = MixtureDistribution()

    #obs_dist = np.random.randn(nobs)/4. #np.sqrt(2)

    if "chebyt_" in examples:  # needed for Cheby example below
        #obs_dist = np.clip(obs_dist, -2, 2)/2.01
        #chebyt [0,1]
        obs_dist = obs_dist[(obs_dist > -2)
                            & (obs_dist < 2)] / 2.0  #/4. + 2/4.0
        #fourier [0,1]
        #obs_dist = obs_dist[(obs_dist>-2) & (obs_dist<2)]/4. + 2/4.0
        f_hat, grid, coeffs, polys = density_orthopoly(obs_dist,
                                                       ChebyTPoly,
                                                       order=20,
if __name__ == '__main__':

    examples = ['chebyt', 'fourier', 'hermite']#[2]

    nobs = 10000

    import matplotlib.pyplot as plt
    from scikits.statsmodels.sandbox.distributions.mixture_rvs import (
                                                mixture_rvs, MixtureDistribution)

    #np.random.seed(12345)
##    obs_dist = mixture_rvs([1/3.,2/3.], size=nobs, dist=[stats.norm, stats.norm],
##                   kwargs = (dict(loc=-1,scale=.5),dict(loc=1,scale=.75)))
    mix_kwds = (dict(loc=-0.5,scale=.5),dict(loc=1,scale=.2))
    obs_dist = mixture_rvs([1/3.,2/3.], size=nobs, dist=[stats.norm, stats.norm],
                   kwargs=mix_kwds)
    mix = MixtureDistribution()

    #obs_dist = np.random.randn(nobs)/4. #np.sqrt(2)


    if "chebyt_" in examples: # needed for Cheby example below
        #obs_dist = np.clip(obs_dist, -2, 2)/2.01
        #chebyt [0,1]
        obs_dist = obs_dist[(obs_dist>-2) & (obs_dist<2)]/2.0 #/4. + 2/4.0
        #fourier [0,1]
        #obs_dist = obs_dist[(obs_dist>-2) & (obs_dist<2)]/4. + 2/4.0
        f_hat, grid, coeffs, polys = density_orthopoly(obs_dist, ChebyTPoly, order=20, xeval=None)
        #f_hat /= f_hat.sum() * (grid.max() - grid.min())/len(grid)
        f_hat0 = f_hat
        from scipy import integrate