예제 #1
0
    def test_empty_coeff(self):
        process = wold.ARMAParams()
        assert_equal(process.arcoefs, np.array([]))
        assert_equal(process.macoefs, np.array([]))

        process = wold.ARMAParams([1, -0.8])
        assert_equal(process.arcoefs, np.array([0.8]))
        assert_equal(process.macoefs, np.array([]))

        process = wold.ARMAParams(ma=[1, -0.8])
        assert_equal(process.arcoefs, np.array([]))
        assert_equal(process.macoefs, np.array([-0.8]))
예제 #2
0
    def test_invalid_poly(self):
        # check that passing invalid parameters to ARMAParams raise as expected
        good = np.array([1.0, -0.5])
        bad = np.array([-0.5])

        # smoke check that valid params _dont_ raise
        wold.ARMAParams(good, good)

        for other in [good, bad, None]:
            with pytest.raises(ValueError):
                wold.ARMAParams(other, bad)
            with pytest.raises(ValueError):
                wold.ARMAParams(bad, other)
예제 #3
0
    def test_invalid_shapes_arma(self):
        # check that passing params with invalid shapes to ARMAParams/VARParams
        # raises as expected
        # 1-dimensional case
        good = np.array([1, .34, -.2])

        # Check that correct params dont raise
        wold.ARMAParams(good, None)
        wold.ARMAParams(None, good)

        for bad in [np.array(1), good.reshape(1, 3), good.reshape(3, 1, 1)]:
            with pytest.raises(ValueError):
                wold.ARMAParams(good, bad)
            with pytest.raises(ValueError):
                wold.ARMAParams(bad, good)
예제 #4
0
    def test_from_coeff(self):
        ar = [1.8, -0.9]
        ma = [0.3]
        process = wold.ARMAParams.from_coeffs(np.array(ar), np.array(ma))

        ar.insert(0, -1)
        ma.insert(0, 1)
        ar_p = -1 * np.array(ar)
        ma_p = ma
        process_direct = wold.ARMAParams(ar_p, ma_p)

        assert_equal(process.arcoefs, process_direct.arcoefs)
        assert_equal(process.macoefs, process_direct.macoefs)
        # assert_equal(process.nobs, process_direct.nobs)
        # nobs from upstream deprecated
        assert_equal(process.maroots, process_direct.maroots)
        assert_equal(process.arroots, process_direct.arroots)
        assert_equal(process.isinvertible, process_direct.isinvertible)
        assert_equal(process.isstationary, process_direct.isstationary)
예제 #5
0
    def test_from_model(self):
        from sm2.tsa.arima_model import ARMA

        process = wold.ARMAParams([1, -.8], [1, .3], 1000)
        t = 1000
        rs = np.random.RandomState(12345)
        y = process.generate_sample(t, burnin=100, distrvs=rs.standard_normal)
        res = ARMA(y, (2, 2)).fit(disp=False)
        # upstream uses (1, 1), but we use (2, 2) to smoke-test
        # a few lines in ARMATransparams

        process_model = wold.ARMAParams.from_estimation(res)
        process_coef = wold.ARMAParams.from_coeffs(res.arparams, res.maparams)
        # Note: upstream also passes `t` to from_coeffs above

        assert_equal(process_model.arcoefs, process_coef.arcoefs)
        assert_equal(process_model.macoefs, process_coef.macoefs)
        # assert_equal(process_model.nobs, process_coef.nobs)
        # nobs from upstream deprecated
        assert_equal(process_model.isinvertible, process_coef.isinvertible)
        assert_equal(process_model.isstationary, process_coef.isstationary)
예제 #6
0
 def setup_class(cls):
     # Basic AR(1)
     cls.ar = [1, -0.5]
     cls.ma = [1]
     cls.arma = wold.ARMAParams(cls.ar, cls.ma)
예제 #7
0
 def test_periodogram(self):
     process = wold.ARMAParams()
     pg = process.periodogram()
     assert_almost_equal(pg[0], np.linspace(0, np.pi, 100, False))
     assert_almost_equal(pg[1], np.sqrt(2 / np.pi) / 2 * np.ones(100))