class TestVARResultsLutkepohl(object): """ Verify calculations using results from Lutkepohl's book """ def __init__(self): self.p = 2 if not have_pandas(): return sdata, dates = get_lutkepohl_data('e1') names = sdata.dtype.names data = data_util.struct_to_ndarray(sdata) adj_data = np.diff(np.log(data), axis=0) # est = VAR(adj_data, p=2, dates=dates[1:], names=names) self.model = VAR(adj_data[:-16], dates=dates[1:-16], names=names) self.res = self.model.fit(maxlags=self.p) self.irf = self.res.irf(10) self.lut = E1_Results() def test_approx_mse(self): if not have_pandas(): raise nose.SkipTest # 3.5.18, p. 99 mse2 = np.array([[25.12, .580, 1.300], [.580, 1.581, .586], [1.300, .586, 1.009]]) * 1e-4 assert_almost_equal(mse2, self.res.forecast_cov(3)[1], DECIMAL_3) def test_irf_stderr(self): if not have_pandas(): raise nose.SkipTest irf_stderr = self.irf.stderr(orth=False) for i in range(1, 1 + len(self.lut.irf_stderr)): assert_almost_equal(np.round(irf_stderr[i], 3), self.lut.irf_stderr[i-1]) def test_cum_irf_stderr(self): if not have_pandas(): raise nose.SkipTest stderr = self.irf.cum_effect_stderr(orth=False) for i in range(1, 1 + len(self.lut.cum_irf_stderr)): assert_almost_equal(np.round(stderr[i], 3), self.lut.cum_irf_stderr[i-1]) def test_lr_effect_stderr(self): if not have_pandas(): raise nose.SkipTest stderr = self.irf.lr_effect_stderr(orth=False) orth_stderr = self.irf.lr_effect_stderr(orth=True) assert_almost_equal(np.round(stderr, 3), self.lut.lr_stderr)
def test_select_order(self): result = self.model.fit(10, ic='aic', verbose=True) result = self.model.fit(10, ic='fpe', verbose=True) # bug model = VAR(self.model.endog) model.select_order()
def __init__(self): self.p = 2 if not have_pandas(): return sdata, dates = get_lutkepohl_data('e1') names = sdata.dtype.names data = data_util.struct_to_ndarray(sdata) adj_data = np.diff(np.log(data), axis=0) # est = VAR(adj_data, p=2, dates=dates[1:], names=names) self.model = VAR(adj_data[:-16], dates=dates[1:-16], names=names) self.res = self.model.fit(maxlags=self.p) self.irf = self.res.irf(10) self.lut = E1_Results()
def setupClass(cls): cls.p = 2 cls.data = get_macrodata() cls.model = VAR(cls.data) cls.names = cls.model.names cls.ref = RResults() cls.k = len(cls.ref.names) cls.res = cls.model.fit(maxlags=cls.p) cls.irf = cls.res.irf(cls.ref.nirfs) cls.nahead = cls.ref.nahead cls.fevd = cls.res.fevd()
def test_reorder(self): #manually reorder data = self.data.view((float, 3)) names = self.names data2 = np.append(np.append(data[:, 2, None], data[:, 0, None], axis=1), data[:, 1, None], axis=1) names2 = [] names2.append(names[2]) names2.append(names[0]) names2.append(names[1]) res2 = VAR(data2, names=names2).fit(maxlags=self.p) #use reorder function res3 = self.res.reorder(['realinv', 'realgdp', 'realcons']) #check if the main results match assert_almost_equal(res2.params, res3.params) assert_almost_equal(res2.sigma_u, res3.sigma_u) assert_almost_equal(res2.bic, res3.bic) assert_almost_equal(res2.stderr, res3.stderr)
def test_names(self): assert_equal(self.model.names, self.ref.names) model2 = VAR(self.data, names=self.names) assert_equal(model2.names, self.ref.names)
def test_constructor(self): # make sure this works with no names ndarr = self.data.view((float, 3)) model = VAR(ndarr) res = model.fit(self.p)