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)