Example #1
0
 def test_mixture_rvs_random(self):
     # Test only medium small sample at 1 decimal
     np.random.seed(0)
     mix = MixtureDistribution()
     res = mix.rvs([.75,.25], 1000, dist=[stats.norm, stats.norm], kwargs =
             (dict(loc=-1,scale=.5),dict(loc=1,scale=.5)))
     npt.assert_almost_equal(
             np.array([res.std(),res.mean(),res.var()]),
             np.array([1,-0.5,1]),
             decimal=1)
Example #2
0
 def test_mixture_rvs_random(self):
     # Test only medium small sample at 1 decimal
     np.random.seed(0)
     mix = MixtureDistribution()
     res = mix.rvs([.75,.25], 1000, dist=[stats.norm, stats.norm], kwargs =
             (dict(loc=-1,scale=.5),dict(loc=1,scale=.5)))
     npt.assert_almost_equal(
             np.array([res.std(),res.mean(),res.var()]),
             np.array([1,-0.5,1]),
             decimal=1)
Example #3
0
 def test_mixture_cdf(self):
     mix = MixtureDistribution()
     grid = np.linspace(-4,4, 10)
     res = mix.cdf(grid, [1/3.,2/3.], dist=[stats.norm, stats.norm], kwargs=
                (dict(loc=-1,scale=.25),dict(loc=1,scale=.75)))
     npt.assert_almost_equal(
             res,
             np.array([  8.72261646e-12,   1.40592960e-08,   5.95819161e-06,
                      3.10250226e-02,   3.46993159e-01,   4.86283549e-01,
                      7.81092904e-01,   9.65606734e-01,   9.98373155e-01,
                      9.99978886e-01]))
Example #4
0
 def test_mixture_pdf(self):
     mix = MixtureDistribution()
     grid = np.linspace(-4,4, 10)
     res = mix.pdf(grid, [1/3.,2/3.], dist=[stats.norm, stats.norm], kwargs=
             (dict(loc=-1,scale=.25),dict(loc=1,scale=.75)))
     npt.assert_almost_equal(
             res,
             np.array([  7.92080017e-11,   1.05977272e-07,   3.82368500e-05,
                         2.21485447e-01,   1.00534607e-01,   2.69531536e-01,
                         3.21265627e-01,   9.39899015e-02,   6.74932493e-03,
                         1.18960201e-04]))
Example #5
0
 def test_mixture_cdf(self):
     mix = MixtureDistribution()
     grid = np.linspace(-4,4, 10)
     res = mix.cdf(grid, [1/3.,2/3.], dist=[stats.norm, stats.norm], kwargs=
                (dict(loc=-1,scale=.25),dict(loc=1,scale=.75)))
     npt.assert_almost_equal(
             res,
             np.array([  8.72261646e-12,   1.40592960e-08,   5.95819161e-06,
                      3.10250226e-02,   3.46993159e-01,   4.86283549e-01,
                      7.81092904e-01,   9.65606734e-01,   9.98373155e-01,
                      9.99978886e-01]))
Example #6
0
 def test_mixture_pdf(self):
     mix = MixtureDistribution()
     grid = np.linspace(-4,4, 10)
     res = mix.pdf(grid, [1/3.,2/3.], dist=[stats.norm, stats.norm], kwargs=
             (dict(loc=-1,scale=.25),dict(loc=1,scale=.75)))
     npt.assert_almost_equal(
             res,
             np.array([  7.92080017e-11,   1.05977272e-07,   3.82368500e-05,
                         2.21485447e-01,   1.00534607e-01,   2.69531536e-01,
                         3.21265627e-01,   9.39899015e-02,   6.74932493e-03,
                         1.18960201e-04]))
Example #7
0
 def test_mixture_rvs_fixed(self):
     mix = MixtureDistribution()
     np.random.seed(1234)
     res = mix.rvs([.15,.85], 50, dist=[stats.norm, stats.norm], kwargs =
             (dict(loc=1,scale=.5),dict(loc=-1,scale=.5)))
     npt.assert_almost_equal(
             res,
             np.array([-0.5794956 , -1.72290504, -1.70098664, -1.0504591 ,
                         -1.27412122,-1.07230975, -0.82298983, -1.01775651,
                         -0.71713085,-0.2271706 ,-1.48711817, -1.03517244,
                         -0.84601557, -1.10424938, -0.48309963,-2.20022682,
                         0.01530181,  1.1238961 , -1.57131564, -0.89405831,
                         -0.64763969, -1.39271761,  0.55142161, -0.76897013,
                         -0.64788589,-0.73824602, -1.46312716,  0.00392148,
                         -0.88651873, -1.57632955,-0.68401028, -0.98024366,
                         -0.76780384,  0.93160258,-2.78175833,-0.33944719,
                         -0.92368472, -0.91773523, -1.21504785, -0.61631563,
                         1.0091446 , -0.50754008,  1.37770699, -0.86458208,
                         -0.3040069 ,-0.96007884,  1.10763429, -1.19998229,
                         -1.51392528, -1.29235911]))
Example #8
0
 def test_mixture_rvs_fixed(self):
     mix = MixtureDistribution()
     np.random.seed(1234)
     res = mix.rvs([.15,.85], 50, dist=[stats.norm, stats.norm], kwargs =
             (dict(loc=1,scale=.5),dict(loc=-1,scale=.5)))
     npt.assert_almost_equal(
             res,
             np.array([-0.5794956 , -1.72290504, -1.70098664, -1.0504591 ,
                         -1.27412122,-1.07230975, -0.82298983, -1.01775651,
                         -0.71713085,-0.2271706 ,-1.48711817, -1.03517244,
                         -0.84601557, -1.10424938, -0.48309963,-2.20022682,
                         0.01530181,  1.1238961 , -1.57131564, -0.89405831,
                         -0.64763969, -1.39271761,  0.55142161, -0.76897013,
                         -0.64788589,-0.73824602, -1.46312716,  0.00392148,
                         -0.88651873, -1.57632955,-0.68401028, -0.98024366,
                         -0.76780384,  0.93160258,-2.78175833,-0.33944719,
                         -0.92368472, -0.91773523, -1.21504785, -0.61631563,
                         1.0091446 , -0.50754008,  1.37770699, -0.86458208,
                         -0.3040069 ,-0.96007884,  1.10763429, -1.19998229,
                         -1.51392528, -1.29235911]))
Example #9
0
    examples = ['chebyt', 'fourier', 'hermite']#[2]

    nobs = 10000

    import matplotlib.pyplot as plt
    from statsmodels.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
        fint = integrate.trapz(f_hat, grid)# dx=(grid.max() - grid.min())/len(grid))
        #f_hat -= fint/2.
Example #10
0
    examples = ['chebyt', 'fourier', 'hermite']#[2]

    nobs = 10000

    import matplotlib.pyplot as plt
    from statsmodels.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
        fint = integrate.trapz(f_hat, grid)# dx=(grid.max() - grid.min())/len(grid))