예제 #1
0
    def test_random(self):
        a = (1, 2)
        sigma = .1
        rho = 0
        r = rarlognormal(a, sigma, rho, size=1000)
        assert_array_almost_equal(np.median(r, axis=0), [1, 2], 1)

        rho = .8
        sigma = .1
        r = rarlognormal(1, sigma, rho, size=1000)
        corr = utils.autocorr(np.log(r))
        assert_almost_equal(corr, rho, 1)
        assert_almost_equal(r.std(), sigma / sqrt(1 - rho**2), 1)
예제 #2
0
    def test_random(self):
        a = (1,2)
        sigma = .1
        rho = 0
        r = rarlognormal(a, sigma, rho, size=1000)
        assert_array_almost_equal(np.median(r, axis=0), [1,2],1)

        rho =.8
        sigma = .1
        r = rarlognormal(1, sigma, rho, size=1000)
        corr = utils.autocorr(np.log(r))
        assert_almost_equal(corr, rho, 1)
        assert_almost_equal(r.std(), sigma/sqrt(1-rho**2),1)
예제 #3
0
def iat(x, maxlag=None):
    """Calculate the integrated autocorrelation time (IAT), given the trace from a Stochastic."""
    
    if not maxlag:
        # Calculate maximum lag to which autocorrelation is calculated
        maxlag = _find_max_lag(x)
    
    acr = [autocorr(x, lag) for lag in range(1, maxlag+1)]
    
    # Calculate gamma values
    gammas = [(acr[2*i]+acr[2*i+1]) for i in range(maxlag//2)]
    
    cut = _cut_time(gammas)
    
    if cut+1 == len(gammas):
        print_("Not enough lag to calculate IAT")
    
    return np.sum(2*gammas[:cut+1]) - 1.0
예제 #4
0
파일: diagnostics.py 프로젝트: wqren/pymc
def iat(x, maxlag=None):
    """Calculate the integrated autocorrelation time (IAT), given the trace from a Stochastic."""

    if not maxlag:
        # Calculate maximum lag to which autocorrelation is calculated
        maxlag = _find_max_lag(x)

    acr = [autocorr(x, lag) for lag in range(1, maxlag + 1)]

    # Calculate gamma values
    gammas = [(acr[2 * i] + acr[2 * i + 1]) for i in range(maxlag // 2)]

    cut = _cut_time(gammas)

    if cut + 1 == len(gammas):
        print_("Not enough lag to calculate IAT")

    return np.sum(2 * gammas[:cut + 1]) - 1.0