def setup_class(cls): cls.rng = RandomState(12345) data = macrodata.load().data cls.cpi = log(data['cpi']) cls.realgdp = data['realgdp'] cls.inflation = diff(cls.cpi) cls.inflation_change = diff(cls.inflation)
def setup_class(cls): d2 = macrodata.load().data g_gdp = 400*np.diff(np.log(d2['realgdp'])) g_inv = 400*np.diff(np.log(d2['realinv'])) exogg = add_constant(np.c_[g_gdp, d2['realint'][:-1]], prepend=False) cls.res1 = res_ols = OLS(g_inv, exogg).fit()
def test_hac_simple(): from statsmodels.datasets import macrodata d2 = macrodata.load().data g_gdp = 400*np.diff(np.log(d2['realgdp'])) g_inv = 400*np.diff(np.log(d2['realinv'])) exogg = add_constant(np.c_[g_gdp, d2['realint'][:-1]],prepend=True) res_olsg = OLS(g_inv, exogg).fit() #> NeweyWest(fm, lag = 4, prewhite = FALSE, sandwich = TRUE, verbose=TRUE, adjust=TRUE) #Lag truncation parameter chosen: 4 # (Intercept) ggdp lint cov1_r = [[ 1.40643899878678802, -0.3180328707083329709, -0.060621111216488610], [ -0.31803287070833292, 0.1097308348999818661, 0.000395311760301478], [ -0.06062111121648865, 0.0003953117603014895, 0.087511528912470993]] #> NeweyWest(fm, lag = 4, prewhite = FALSE, sandwich = TRUE, verbose=TRUE, adjust=FALSE) #Lag truncation parameter chosen: 4 # (Intercept) ggdp lint cov2_r = [[ 1.3855512908840137, -0.313309610252268500, -0.059720797683570477], [ -0.3133096102522685, 0.108101169035130618, 0.000389440793564339], [ -0.0597207976835705, 0.000389440793564336, 0.086211852740503622]] cov1, se1 = sw.cov_hac_simple(res_olsg, nlags=4, use_correction=True) cov2, se2 = sw.cov_hac_simple(res_olsg, nlags=4, use_correction=False) assert_almost_equal(cov1, cov1_r, decimal=14) assert_almost_equal(cov2, cov2_r, decimal=14)
def notyet_atst(): d = macrodata.load().data realinv = d['realinv'] realgdp = d['realgdp'] realint = d['realint'] endog = realinv exog = add_constant(np.c_[realgdp, realint],prepend=True) res_ols1 = OLS(endog, exog).fit() #growth rates gs_l_realinv = 400 * np.diff(np.log(d['realinv'])) gs_l_realgdp = 400 * np.diff(np.log(d['realgdp'])) lint = d['realint'][:-1] tbilrate = d['tbilrate'][:-1] endogg = gs_l_realinv exogg = add_constant(np.c_[gs_l_realgdp, lint], prepend=True) exogg2 = add_constant(np.c_[gs_l_realgdp, tbilrate], prepend=True) res_ols = OLS(endogg, exogg).fit() res_ols2 = OLS(endogg, exogg2).fit() #the following were done accidentally with res_ols1 in R, #with original Greene data params = np.array([-272.3986041341653, 0.1779455206941112, 0.2149432424658157]) cov_hac_4 = np.array([1321.569466333051, -0.2318836566017612, 37.01280466875694, -0.2318836566017614, 4.602339488102263e-05, -0.0104687835998635, 37.012804668757, -0.0104687835998635, 21.16037144168061]).reshape(3,3, order='F') cov_hac_10 = np.array([2027.356101193361, -0.3507514463299015, 54.81079621448568, -0.350751446329901, 6.953380432635583e-05, -0.01268990195095196, 54.81079621448564, -0.01268990195095195, 22.92512402151113]).reshape(3,3, order='F') #goldfeld-quandt het_gq_greater = dict(statistic=13.20512768685082, df1=99, df2=98, pvalue=1.246141976112324e-30, distr='f') het_gq_less = dict(statistic=13.20512768685082, df1=99, df2=98, pvalue=1.) het_gq_2sided = dict(statistic=13.20512768685082, df1=99, df2=98, pvalue=1.246141976112324e-30, distr='f') #goldfeld-quandt, fraction = 0.5 het_gq_greater_2 = dict(statistic=87.1328934692124, df1=48, df2=47, pvalue=2.154956842194898e-33, distr='f') gq = smsdia.het_goldfeldquandt(endog, exog, split=0.5) compare_t_est(gq, het_gq_greater, decimal=(13, 14)) assert_equal(gq[-1], 'increasing') harvey_collier = dict(stat=2.28042114041313, df=199, pvalue=0.02364236161988260, distr='t') #hc = harvtest(fm, order.by=ggdp , data = list()) harvey_collier_2 = dict(stat=0.7516918462158783, df=199, pvalue=0.4531244858006127, distr='t')
def test_stata_writer_structured(): buf = BytesIO() dta = macrodata.load().data dtype = dta.dtype dta = dta.astype( np.dtype([('year', int), ('quarter', int)] + dtype.descr[2:])) writer = StataWriter(buf, dta) writer.write_file() buf.seek(0) dta2 = genfromdta(buf) assert_array_equal(dta, dta2)
def setup_class(self): d2 = macrodata.load().data g_gdp = 400 * np.diff(np.log(d2['realgdp'])) g_inv = 400 * np.diff(np.log(d2['realinv'])) exogg = add_constant(np.c_[g_gdp, d2['realint'][:-1]], prepend=False) mod1 = GLSAR(g_inv, exogg, 1) self.res = mod1.iterative_fit(5) from .results.macro_gr_corc_stata import results self.results = results
def test_stata_writer_array(): buf = BytesIO() dta = macrodata.load(as_pandas=False).data dta = DataFrame.from_records(dta) dta.columns = ["v%d" % i for i in range(1, 15)] writer = StataWriter(buf, dta.values) writer.write_file() buf.seek(0) dta2 = genfromdta(buf) dta = dta.to_records(index=False) assert_array_equal(dta, dta2)
def test_stata_writer_structured(): buf = BytesIO() dta = macrodata.load().data dtype = dta.dtype dta = dta.astype(np.dtype([('year', int), ('quarter', int)] + dtype.descr[2:])) writer = StataWriter(buf, dta) writer.write_file() buf.seek(0) dta2 = genfromdta(buf) assert_array_equal(dta, dta2)
def setup_class(self): d2 = macrodata.load().data g_gdp = 400*np.diff(np.log(d2['realgdp'])) g_inv = 400*np.diff(np.log(d2['realinv'])) exogg = add_constant(np.c_[g_gdp, d2['realint'][:-1]], prepend=False) mod1 = GLSAR(g_inv, exogg, 1) self.res = mod1.iterative_fit(5) from results.macro_gr_corc_stata import results self.results = results
def test_stata_writer_array(): buf = BytesIO() dta = macrodata.load().data dta = DataFrame.from_records(dta) dta.columns = ["v%d" % i for i in range(1,15)] writer = StataWriter(buf, dta.values) writer.write_file() buf.seek(0) dta2 = genfromdta(buf) dta = dta.to_records(index=False) assert_array_equal(dta, dta2)
def test_grangercausality(self): # some example data mdata = macrodata.load().data mdata = mdata[['realgdp', 'realcons']] data = mdata.view((float, 2)) data = np.diff(np.log(data), axis=0) #R: lmtest:grangertest r_result = [0.243097, 0.7844328, 195, 2] # f_test gr = grangercausalitytests(data[:, 1::-1], 2, verbose=False) assert_almost_equal(r_result, gr[2][0]['ssr_ftest'], decimal=7) assert_almost_equal(gr[2][0]['params_ftest'], gr[2][0]['ssr_ftest'], decimal=7)
def test_grangercausality(self): # some example data mdata = macrodata.load().data mdata = recarray_select(mdata, ['realgdp', 'realcons']) data = mdata.view((float, 2)) data = np.diff(np.log(data), axis=0) #R: lmtest:grangertest r_result = [0.243097, 0.7844328, 195, 2] # f_test gr = grangercausalitytests(data[:, 1::-1], 2, verbose=False) assert_almost_equal(r_result, gr[2][0]['ssr_ftest'], decimal=7) assert_almost_equal(gr[2][0]['params_ftest'], gr[2][0]['ssr_ftest'], decimal=7)
class CheckCorrGram(object): """ Set up for ACF, PACF tests. """ data = macrodata.load() x = data.data['realgdp'] filename = os.path.dirname(os.path.abspath(__file__))+\ "/results/results_corrgram.csv" results = genfromtxt(open(filename, "rb"), delimiter=",", names=True, dtype=float)
def main(): """ Toy program to test the KPSS autolag method of Hobijn et al (1998). Unit tests using statsmodels data sets verified against SAS 9.3. To use, modify the following lines in main KPSS method: old: if lags is None: # from Kwiatkowski et al. referencing Schwert (1989) lags = int(np.ceil(12. * np.power(nobs / 100., 1 / 4.))) new: if lags is None: # autolag method of Hobijn et al. (1998) lags = _kpss_autolag(resids, nobs) """ print("KPSS autolag method of Hobijn et al. (1998)") # real GDP from macrodata data set with warnings.catch_warnings(record=True) as w: res = kpss(macrodata.load().data['realgdp'], 'c') print(" realgdp('c'): stat =", "{0:0.5f}".format(res[0]), " pval =", "{0:0.5f}".format(res[1]), " lags =", format(res[2])) assert_almost_equal(res[0], 2.06851, decimal=3) assert_equal(res[2], 9) # sunspot activity from sunspots data set with warnings.catch_warnings(record=True) as w: res = kpss(sunspots.load().data['SUNACTIVITY'], 'c') print(" sunactivity('c'): stat =", "{0:0.5f}".format(res[0]), " pval =", "{0:0.5f}".format(res[1]), " lags =", format(res[2])) assert_almost_equal(res[0], 0.66987, decimal=3) assert_equal(res[2], 7) # volumes from nile data set with warnings.catch_warnings(record=True) as w: res = kpss(nile.load().data['volume'], 'c') print(" volume('c'): stat =", "{0:0.5f}".format(res[0]), " pval =", "{0:0.5f}".format(res[1]), " lags =", format(res[2])) assert_almost_equal(res[0], 0.86912, decimal=3) assert_equal(res[2], 5) # log-coinsurance from randhie data set with warnings.catch_warnings(record=True) as w: res = kpss(randhie.load().data['lncoins'], 'ct') print(" lncoins('ct'): stat =", "{0:0.5f}".format(res[0]), " pval =", "{0:0.5f}".format(res[1]), " lags =", format(res[2])) assert_almost_equal(res[0], 0.36762, decimal=3) assert_equal(res[2], 75) # in-vehicle time from modechoice data set with warnings.catch_warnings(record=True) as w: res = kpss(modechoice.load().data['invt'], 'ct') print(" invt('ct'): stat =", "{0:0.5f}".format(res[0]), " pval =", "{0:0.5f}".format(res[1]), " lags =", format(res[2])) assert_almost_equal(res[0], 0.40258, decimal=3) assert_equal(res[2], 18)
def test_stata_writer_structured(): buf = BytesIO() dta = macrodata.load(as_pandas=False).data dtype = dta.dtype dt = [('year', int), ('quarter', int)] + dtype.descr[2:] if not PY3: # Remove unicode dt = [(name.encode('ascii'), typ) for name, typ in dt] dta = dta.astype(np.dtype(dt)) writer = StataWriter(buf, dta) writer.write_file() buf.seek(0) dta2 = genfromdta(buf) assert_array_equal(dta, dta2)
class CheckCoint(object): """ Test Cointegration Test Results for 2-variable system Test values taken from Stata """ levels = ['1%', '5%', '10%'] data = macrodata.load() y1 = data.data['realcons'] y2 = data.data['realgdp'] def test_tstat(self): assert_almost_equal(self.coint_t, self.teststat, DECIMAL_4)
def test_stata_writer_structured(): buf = BytesIO() dta = macrodata.load(as_pandas=False).data dtype = dta.dtype dt = [('year', int), ('quarter', int)] + dtype.descr[2:] if not PY3: # Remove unicode dt = [(name.encode('ascii'), typ) for name, typ in dt] dta = dta.astype(np.dtype(dt)) writer = StataWriter(buf, dta) writer.write_file() buf.seek(0) dta2 = genfromdta(buf) assert_array_equal(dta, dta2)
def test_stata_writer_pandas(): buf = BytesIO() dta = macrodata.load().data dtype = dta.dtype #as of 0.9.0 pandas only supports i8 and f8 dta = dta.astype(np.dtype([('year', 'i8'), ('quarter', 'i8')] + dtype.descr[2:])) dta = DataFrame.from_records(dta) writer = StataWriter(buf, dta) writer.write_file() buf.seek(0) dta2 = genfromdta(buf) ptesting.assert_frame_equal(dta.reset_index(), DataFrame.from_records(dta2))
def test_adf_autolag(): #see issue #246 #this is mostly a unit test d2 = macrodata.load().data for k_trend, tr in enumerate(['nc', 'c', 'ct', 'ctt']): #[None:'nc', 0:'c', 1:'ct', 2:'ctt'] x = np.log(d2['realgdp']) xd = np.diff(x) #check exog adf3 = tsast.adfuller(x, maxlag=None, autolag='aic', regression=tr, store=True, regresults=True) st2 = adf3[-1] assert_equal(len(st2.autolag_results), 15 + 1) #+1 for lagged level for l, res in sorted(iteritems(st2.autolag_results))[:5]: lag = l - k_trend #assert correct design matrices in _autolag assert_equal(res.model.exog[-10:, k_trend], x[-11:-1]) assert_equal(res.model.exog[-1, k_trend + 1:], xd[-lag:-1][::-1]) #min-ic lag of dfgls in Stata is also 2, or 9 for maic with notrend assert_equal(st2.usedlag, 2) #same result with lag fixed at usedlag of autolag adf2 = tsast.adfuller(x, maxlag=2, autolag=None, regression=tr) assert_almost_equal(adf3[:2], adf2[:2], decimal=12) tr = 'c' #check maxlag with autolag adf3 = tsast.adfuller(x, maxlag=5, autolag='aic', regression=tr, store=True, regresults=True) assert_equal(len(adf3[-1].autolag_results), 5 + 1) adf3 = tsast.adfuller(x, maxlag=0, autolag='aic', regression=tr, store=True, regresults=True) assert_equal(len(adf3[-1].autolag_results), 0 + 1)
def test_stata_writer_structured(): buf = BytesIO() dta = macrodata.load(as_pandas=False).data dtype = dta.dtype dt = [('year', int), ('quarter', int)] + dtype.descr[2:] dta = dta.astype(np.dtype(dt)) with pytest.warns(FutureWarning): writer = StataWriter(buf, dta) writer.write_file() buf.seek(0) with pytest.warns(FutureWarning): dta2 = genfromdta(buf) assert_array_equal(dta, dta2)
def setup_class(cls): np.random.seed(12345) t = 1100 y = np.zeros(t) e = np.random.randn(t) y[:2] = e[:2] for i in range(3, t): y[i] = 1.5 * y[i - 1] - 0.8 * y[i - 2] + 0.2 * y[i - 3] + e[i] cls.y = y[100:] cls.x = cls.y.std() * np.random.randn(t, 2) cls.x = cls.x[100:] cls.z = cls.y + cls.x.sum(1) cls.cpi = log(macrodata.load().data['cpi']) cls.inflation = diff(cls.cpi) cls.inflation_change = diff(cls.inflation)
def setup_class(cls): cls.rng = RandomState(12345) t = 1100 y = np.zeros(t) e = cls.rng.randn(t) y[:2] = e[:2] for i in range(3, t): y[i] = 1.5 * y[i - 1] - 0.8 * y[i - 2] + 0.2 * y[i - 3] + e[i] cls.y = y[100:] cls.x = cls.y.std() * cls.rng.randn(t, 2) cls.x = cls.x[100:] cls.z = cls.y + cls.x.sum(1) cls.cpi = log(macrodata.load().data['cpi']) cls.inflation = diff(cls.cpi) cls.inflation_change = diff(cls.inflation)
def test_bking1d(): """ Test Baxter King band-pass filter. Results are taken from Stata """ bking_results = array([7.320813, 2.886914, -6.818976, -13.49436, -13.27936, -9.405913, -5.691091, -5.133076, -7.273468, -9.243364, -8.482916, -4.447764, 2.406559, 10.68433, 19.46414, 28.09749, 34.11066, 33.48468, 24.64598, 9.952399, -4.265528, -12.59471, -13.46714, -9.049501, -3.011248, .5655082, 2.897976, 7.406077, 14.67959, 18.651, 13.05891, -2.945415, -24.08659, -41.86147, -48.68383, -43.32689, -31.66654, -20.38356, -13.76411, -9.978693, -3.7704, 10.27108, 31.02847, 51.87613, 66.93117, 73.51951, 73.4053, 69.17468, 59.8543, 38.23899, -.2604809, -49.0107, -91.1128, -112.1574, -108.3227, -86.51453, -59.91258, -40.01185, -29.70265, -22.76396, -13.08037, 1.913622, 20.44045, 37.32873, 46.79802, 51.95937, 59.67393, 70.50803, 81.27311, 83.53191, 67.72536, 33.78039, -6.509092, -37.31579, -46.05207, -29.81496, 1.416417, 28.31503, 32.90134, 8.949259, -35.41895, -84.65775, -124.4288, -144.6036, -140.2204, -109.2624, -53.6901, 15.07415, 74.44268, 104.0403, 101.0725, 76.58291, 49.27925, 36.15751, 36.48799, 37.60897, 27.75998, 4.216643, -23.20579, -39.33292, -36.6134, -20.90161, -4.143123, 5.48432, 9.270075, 13.69573, 22.16675, 33.01987, 41.93186, 47.12222, 48.62164, 47.30701, 40.20537, 22.37898, -7.133002, -43.3339, -78.51229, -101.3684, -105.2179, -90.97147, -68.30824, -48.10113, -35.60709, -31.15775, -31.82346, -32.49278, -28.22499, -14.42852, 10.1827, 36.64189, 49.43468, 38.75517, 6.447761, -33.15883, -62.60446, -72.87829, -66.54629, -52.61205, -38.06676, -26.19963, -16.51492, -7.007577, .6125674, 7.866972, 14.8123, 22.52388, 30.65265, 39.47801, 49.05027, 59.02925, 72.88999, 95.08865, 125.8983, 154.4283, 160.7638, 130.6092, 67.84406, -7.070272, -68.08128, -99.39944, -104.911, -100.2372, -98.11596, -104.2051, -114.0125, -113.3475, -92.98669, -51.91707, -.7313812, 43.22938, 64.62762, 64.07226, 59.35707, 67.06026, 91.87247, 124.4591, 151.2402, 163.0648, 154.6432]) X = macrodata.load().data['realinv'] Y = bkfilter(X, 6, 32, 12) assert_almost_equal(Y,bking_results,4)
class CheckADF(object): """ Test Augmented Dickey-Fuller Test values taken from Stata. """ levels = ['1%', '5%', '10%'] data = macrodata.load() x = data.data['realgdp'] y = data.data['infl'] def test_teststat(self): assert_almost_equal(self.res1[0], self.teststat, DECIMAL_5) def test_pvalue(self): assert_almost_equal(self.res1[1], self.pvalue, DECIMAL_5) def test_critvalues(self): critvalues = [self.res1[4][lev] for lev in self.levels] assert_almost_equal(critvalues, self.critvalues, DECIMAL_2)
def test_GLSARlag(): #test that results for lag>1 is close to lag=1, and smaller ssr from statsmodels.datasets import macrodata d2 = macrodata.load().data g_gdp = 400*np.diff(np.log(d2['realgdp'])) g_inv = 400*np.diff(np.log(d2['realinv'])) exogg = add_constant(np.c_[g_gdp, d2['realint'][:-1]], prepend=False) mod1 = GLSAR(g_inv, exogg, 1) res1 = mod1.iterative_fit(5) mod4 = GLSAR(g_inv, exogg, 4) res4 = mod4.iterative_fit(10) assert_array_less(np.abs(res1.params / res4.params - 1), 0.03) assert_array_less(res4.ssr, res1.ssr) assert_array_less(np.abs(res4.bse / res1.bse) - 1, 0.015) assert_array_less(np.abs((res4.fittedvalues / res1.fittedvalues - 1).mean()), 0.015) assert_equal(len(mod4.rho), 4)
def test_GLSARlag(): #test that results for lag>1 is close to lag=1, and smaller ssr from statsmodels.datasets import macrodata d2 = macrodata.load().data g_gdp = 400*np.diff(np.log(d2['realgdp'])) g_inv = 400*np.diff(np.log(d2['realinv'])) exogg = add_constant(np.c_[g_gdp, d2['realint'][:-1]], prepend=False) mod1 = GLSAR(g_inv, exogg, 1) res1 = mod1.iterative_fit(5) mod4 = GLSAR(g_inv, exogg, 4) res4 = mod4.iterative_fit(10) assert_array_less(np.abs(res1.params / res4.params - 1), 0.03) assert_array_less(res4.ssr, res1.ssr) assert_array_less(np.abs(res4.bse / res1.bse) - 1, 0.015) assert_array_less(np.abs((res4.fittedvalues / res1.fittedvalues - 1).mean()), 0.015) assert_equal(len(mod4.rho), 4)
def test_hac_simple(): from statsmodels.datasets import macrodata d2 = macrodata.load().data g_gdp = 400 * np.diff(np.log(d2['realgdp'])) g_inv = 400 * np.diff(np.log(d2['realinv'])) exogg = add_constant(np.c_[g_gdp, d2['realint'][:-1]]) res_olsg = OLS(g_inv, exogg).fit() #> NeweyWest(fm, lag = 4, prewhite = FALSE, sandwich = TRUE, verbose=TRUE, adjust=TRUE) #Lag truncation parameter chosen: 4 # (Intercept) ggdp lint cov1_r = [ [1.40643899878678802, -0.3180328707083329709, -0.060621111216488610], [-0.31803287070833292, 0.1097308348999818661, 0.000395311760301478], [-0.06062111121648865, 0.0003953117603014895, 0.087511528912470993] ] #> NeweyWest(fm, lag = 4, prewhite = FALSE, sandwich = TRUE, verbose=TRUE, adjust=FALSE) #Lag truncation parameter chosen: 4 # (Intercept) ggdp lint cov2_r = [ [1.3855512908840137, -0.313309610252268500, -0.059720797683570477], [-0.3133096102522685, 0.108101169035130618, 0.000389440793564339], [-0.0597207976835705, 0.000389440793564336, 0.086211852740503622] ] cov1 = sw.cov_hac_simple(res_olsg, nlags=4, use_correction=True) se1 = sw.se_cov(cov1) cov2 = sw.cov_hac_simple(res_olsg, nlags=4, use_correction=False) se2 = sw.se_cov(cov2) assert_almost_equal(cov1, cov1_r, decimal=14) assert_almost_equal(cov2, cov2_r, decimal=14) # compare default for nlags cov3 = sw.cov_hac_simple(res_olsg, use_correction=False) cov4 = sw.cov_hac_simple(res_olsg, nlags=4, use_correction=False) assert_almost_equal(cov3, cov4, decimal=14)
def __init__(self): d = macrodata.load().data #growth rates gs_l_realinv = 400 * np.diff(np.log(d['realinv'])) gs_l_realgdp = 400 * np.diff(np.log(d['realgdp'])) lint = d['realint'][:-1] tbilrate = d['tbilrate'][:-1] endogg = gs_l_realinv exogg = add_constant(np.c_[gs_l_realgdp, lint], prepend=True) exogg2 = add_constant(np.c_[gs_l_realgdp, tbilrate], prepend=True) exogg3 = add_constant(np.c_[gs_l_realgdp], prepend=True) res_ols = OLS(endogg, exogg).fit() res_ols2 = OLS(endogg, exogg2).fit() res_ols3 = OLS(endogg, exogg3).fit() self.res = res_ols self.res2 = res_ols2 self.res3 = res_ols3 self.endog = self.res.model.endog self.exog = self.res.model.exog
def setup_class(cls): d = macrodata.load().data #growth rates gs_l_realinv = 400 * np.diff(np.log(d['realinv'])) gs_l_realgdp = 400 * np.diff(np.log(d['realgdp'])) lint = d['realint'][:-1] tbilrate = d['tbilrate'][:-1] endogg = gs_l_realinv exogg = add_constant(np.c_[gs_l_realgdp, lint]) exogg2 = add_constant(np.c_[gs_l_realgdp, tbilrate]) exogg3 = add_constant(np.c_[gs_l_realgdp]) res_ols = OLS(endogg, exogg).fit() res_ols2 = OLS(endogg, exogg2).fit() res_ols3 = OLS(endogg, exogg3).fit() cls.res = res_ols cls.res2 = res_ols2 cls.res3 = res_ols3 cls.endog = cls.res.model.endog cls.exog = cls.res.model.exog
def __init__(self): d = macrodata.load().data #growth rates gs_l_realinv = 400 * np.diff(np.log(d['realinv'])) gs_l_realgdp = 400 * np.diff(np.log(d['realgdp'])) lint = d['realint'][:-1] tbilrate = d['tbilrate'][:-1] endogg = gs_l_realinv exogg = add_constant(np.c_[gs_l_realgdp, lint]) exogg2 = add_constant(np.c_[gs_l_realgdp, tbilrate]) exogg3 = add_constant(np.c_[gs_l_realgdp]) res_ols = OLS(endogg, exogg).fit() res_ols2 = OLS(endogg, exogg2).fit() res_ols3 = OLS(endogg, exogg3).fit() self.res = res_ols self.res2 = res_ols2 self.res3 = res_ols3 self.endog = self.res.model.endog self.exog = self.res.model.exog
def setup_class(cls): d = macrodata.load().data #growth rates gs_l_realinv = 400 * np.diff(np.log(d['realinv'])) gs_l_realgdp = 400 * np.diff(np.log(d['realgdp'])) lint = d['realint'][:-1] tbilrate = d['tbilrate'][:-1] endogg = gs_l_realinv exogg = add_constant(np.c_[gs_l_realgdp, lint]) exogg2 = add_constant(np.c_[gs_l_realgdp, tbilrate]) exogg3 = add_constant(np.c_[gs_l_realgdp]) res_ols = OLS(endogg, exogg).fit() res_ols2 = OLS(endogg, exogg2).fit() res_ols3 = OLS(endogg, exogg3).fit() cls.res = res_ols cls.res2 = res_ols2 cls.res3 = res_ols3 cls.endog = cls.res.model.endog cls.exog = cls.res.model.exog
def test_adf_autolag(): #see issue #246 #this is mostly a unit test d2 = macrodata.load().data for k_trend, tr in enumerate(['nc', 'c', 'ct', 'ctt']): #[None:'nc', 0:'c', 1:'ct', 2:'ctt'] x = np.log(d2['realgdp']) xd = np.diff(x) #check exog adf3 = tsast.adfuller(x, maxlag=None, autolag='aic', regression=tr, store=True, regresults=True) st2 = adf3[-1] assert_equal(len(st2.autolag_results), 15 + 1) #+1 for lagged level for l, res in sorted(st2.autolag_results.iteritems())[:5]: lag = l-k_trend #assert correct design matrices in _autolag assert_equal(res.model.exog[-10:,k_trend], x[-11:-1]) assert_equal(res.model.exog[-1,k_trend+1:], xd[-lag:-1][::-1]) #min-ic lag of dfgls in Stata is also 2, or 9 for maic with notrend assert_equal(st2.usedlag, 2) #same result with lag fixed at usedlag of autolag adf2 = tsast.adfuller(x, maxlag=2, autolag=None, regression=tr) assert_almost_equal(adf3[:2], adf2[:2], decimal=12) tr = 'c' #check maxlag with autolag adf3 = tsast.adfuller(x, maxlag=5, autolag='aic', regression=tr, store=True, regresults=True) assert_equal(len(adf3[-1].autolag_results), 5 + 1) adf3 = tsast.adfuller(x, maxlag=0, autolag='aic', regression=tr, store=True, regresults=True) assert_equal(len(adf3[-1].autolag_results), 0 + 1)
def test_stata_writer_pandas(): buf = BytesIO() dta = macrodata.load().data dtype = dta.dtype #as of 0.9.0 pandas only supports i8 and f8 dta = dta.astype( np.dtype([('year', 'i8'), ('quarter', 'i8')] + dtype.descr[2:])) dta4 = dta.astype( np.dtype([('year', 'i4'), ('quarter', 'i4')] + dtype.descr[2:])) dta = DataFrame.from_records(dta) dta4 = DataFrame.from_records(dta4) # dta is int64 'i8' given to Stata writer writer = StataWriter(buf, dta) writer.write_file() buf.seek(0) dta2 = genfromdta(buf) dta5 = DataFrame.from_records(dta2) # dta2 is int32 'i4' returned from Stata reader if dta5.dtypes[1] is np.dtype('int64'): ptesting.assert_frame_equal(dta.reset_index(), dta5) else: # don't check index because it has different size, int32 versus int64 ptesting.assert_frame_equal(dta4, dta5[dta5.columns[1:]])
def test_stata_writer_pandas(): buf = BytesIO() dta = macrodata.load().data dtype = dta.dtype #as of 0.9.0 pandas only supports i8 and f8 dta = dta.astype(np.dtype([('year', 'i8'), ('quarter', 'i8')] + dtype.descr[2:])) dta4 = dta.astype(np.dtype([('year', 'i4'), ('quarter', 'i4')] + dtype.descr[2:])) dta = DataFrame.from_records(dta) dta4 = DataFrame.from_records(dta4) # dta is int64 'i8' given to Stata writer writer = StataWriter(buf, dta) writer.write_file() buf.seek(0) dta2 = genfromdta(buf) dta5 = DataFrame.from_records(dta2) # dta2 is int32 'i4' returned from Stata reader if dta5.dtypes[1] is np.dtype('int64'): ptesting.assert_frame_equal(dta.reset_index(), dta5) else: # don't check index because it has different size, int32 versus int64 ptesting.assert_frame_equal(dta4, dta5[dta5.columns[1:]])
from __future__ import print_function import numpy as np from statsmodels.regression.linear_model import OLS, GLSAR from statsmodels.tools.tools import add_constant from statsmodels.datasets import macrodata import statsmodels.regression.tests.results.results_macro_ols_robust as res d2 = macrodata.load().data g_gdp = 400*np.diff(np.log(d2['realgdp'])) g_inv = 400*np.diff(np.log(d2['realinv'])) exogg = add_constant(np.c_[g_gdp, d2['realint'][:-1]], prepend=False) res_olsg = OLS(g_inv, exogg).fit() print(res_olsg.summary()) res_hc0 = res_olsg.get_robustcov_results('HC1') print('\n\n') print(res_hc0.summary()) print('\n\n') res_hac4 = res_olsg.get_robustcov_results('HAC', maxlags=4, use_correction=True) print(res_hac4.summary()) print('\n\n') tt = res_hac4.t_test(np.eye(len(res_hac4.params))) print(tt.summary()) print('\n\n') print(tt.summary_frame())
def setup_class(cls): cls.cpi = log(macrodata.load().data['cpi']) cls.inflation = diff(cls.cpi) cls.inflation_change = diff(cls.inflation)
def setup_class(cls): cls.rng = RandomState(12345) cls.cpi = log(load().data['cpi']) cls.inflation = diff(cls.cpi)
def test_all(self): d = macrodata.load().data #import datasetswsm.greene as g #d = g.load('5-1') #growth rates gs_l_realinv = 400 * np.diff(np.log(d['realinv'])) gs_l_realgdp = 400 * np.diff(np.log(d['realgdp'])) #simple diff, not growthrate, I want heteroscedasticity later for testing endogd = np.diff(d['realinv']) exogd = add_constant(np.c_[np.diff(d['realgdp']), d['realint'][:-1]]) endogg = gs_l_realinv exogg = add_constant(np.c_[gs_l_realgdp, d['realint'][:-1]]) res_ols = OLS(endogg, exogg).fit() #print res_ols.params mod_g1 = GLSAR(endogg, exogg, rho=-0.108136) res_g1 = mod_g1.fit() #print res_g1.params mod_g2 = GLSAR(endogg, exogg, rho=-0.108136) #-0.1335859) from R res_g2 = mod_g2.iterative_fit(maxiter=5) #print res_g2.params rho = -0.108136 # coefficient std. error t-ratio p-value 95% CONFIDENCE INTERVAL partable = np.array([ [-9.50990, 0.990456, -9.602, 3.65e-018, -11.4631, -7.55670], # *** [ 4.37040, 0.208146, 21.00, 2.93e-052, 3.95993, 4.78086], # *** [-0.579253, 0.268009, -2.161, 0.0319, -1.10777, -0.0507346]]) # ** #Statistics based on the rho-differenced data: result_gretl_g1 = dict( endog_mean = ("Mean dependent var", 3.113973), endog_std = ("S.D. dependent var", 18.67447), ssr = ("Sum squared resid", 22530.90), mse_resid_sqrt = ("S.E. of regression", 10.66735), rsquared = ("R-squared", 0.676973), rsquared_adj = ("Adjusted R-squared", 0.673710), fvalue = ("F(2, 198)", 221.0475), f_pvalue = ("P-value(F)", 3.56e-51), resid_acf1 = ("rho", -0.003481), dw = ("Durbin-Watson", 1.993858)) #fstatistic, p-value, df1, df2 reset_2_3 = [5.219019, 0.00619, 2, 197, "f"] reset_2 = [7.268492, 0.00762, 1, 198, "f"] reset_3 = [5.248951, 0.023, 1, 198, "f"] #LM-statistic, p-value, df arch_4 = [7.30776, 0.120491, 4, "chi2"] #multicollinearity vif = [1.002, 1.002] cond_1norm = 6862.0664 determinant = 1.0296049e+009 reciprocal_condition_number = 0.013819244 #Chi-square(2): test-statistic, pvalue, df normality = [20.2792, 3.94837e-005, 2] #tests res = res_g1 #with rho from Gretl #basic assert_almost_equal(res.params, partable[:,0], 4) assert_almost_equal(res.bse, partable[:,1], 6) assert_almost_equal(res.tvalues, partable[:,2], 2) assert_almost_equal(res.ssr, result_gretl_g1['ssr'][1], decimal=2) #assert_almost_equal(res.llf, result_gretl_g1['llf'][1], decimal=7) #not in gretl #assert_almost_equal(res.rsquared, result_gretl_g1['rsquared'][1], decimal=7) #FAIL #assert_almost_equal(res.rsquared_adj, result_gretl_g1['rsquared_adj'][1], decimal=7) #FAIL assert_almost_equal(np.sqrt(res.mse_resid), result_gretl_g1['mse_resid_sqrt'][1], decimal=5) assert_almost_equal(res.fvalue, result_gretl_g1['fvalue'][1], decimal=4) assert_approx_equal(res.f_pvalue, result_gretl_g1['f_pvalue'][1], significant=2) #assert_almost_equal(res.durbin_watson, result_gretl_g1['dw'][1], decimal=7) #TODO #arch #sm_arch = smsdia.acorr_lm(res.wresid**2, maxlag=4, autolag=None) sm_arch = smsdia.het_arch(res.wresid, maxlag=4) assert_almost_equal(sm_arch[0], arch_4[0], decimal=4) assert_almost_equal(sm_arch[1], arch_4[1], decimal=6) #tests res = res_g2 #with estimated rho #estimated lag coefficient assert_almost_equal(res.model.rho, rho, decimal=3) #basic assert_almost_equal(res.params, partable[:,0], 4) assert_almost_equal(res.bse, partable[:,1], 3) assert_almost_equal(res.tvalues, partable[:,2], 2) assert_almost_equal(res.ssr, result_gretl_g1['ssr'][1], decimal=2) #assert_almost_equal(res.llf, result_gretl_g1['llf'][1], decimal=7) #not in gretl #assert_almost_equal(res.rsquared, result_gretl_g1['rsquared'][1], decimal=7) #FAIL #assert_almost_equal(res.rsquared_adj, result_gretl_g1['rsquared_adj'][1], decimal=7) #FAIL assert_almost_equal(np.sqrt(res.mse_resid), result_gretl_g1['mse_resid_sqrt'][1], decimal=5) assert_almost_equal(res.fvalue, result_gretl_g1['fvalue'][1], decimal=0) assert_almost_equal(res.f_pvalue, result_gretl_g1['f_pvalue'][1], decimal=6) #assert_almost_equal(res.durbin_watson, result_gretl_g1['dw'][1], decimal=7) #TODO c = oi.reset_ramsey(res, degree=2) compare_ftest(c, reset_2, decimal=(2,4)) c = oi.reset_ramsey(res, degree=3) compare_ftest(c, reset_2_3, decimal=(2,4)) #arch #sm_arch = smsdia.acorr_lm(res.wresid**2, maxlag=4, autolag=None) sm_arch = smsdia.het_arch(res.wresid, maxlag=4) assert_almost_equal(sm_arch[0], arch_4[0], decimal=1) assert_almost_equal(sm_arch[1], arch_4[1], decimal=2) ''' Performing iterative calculation of rho... ITER RHO ESS 1 -0.10734 22530.9 2 -0.10814 22530.9 Model 4: Cochrane-Orcutt, using observations 1959:3-2009:3 (T = 201) Dependent variable: ds_l_realinv rho = -0.108136 coefficient std. error t-ratio p-value ------------------------------------------------------------- const -9.50990 0.990456 -9.602 3.65e-018 *** ds_l_realgdp 4.37040 0.208146 21.00 2.93e-052 *** realint_1 -0.579253 0.268009 -2.161 0.0319 ** Statistics based on the rho-differenced data: Mean dependent var 3.113973 S.D. dependent var 18.67447 Sum squared resid 22530.90 S.E. of regression 10.66735 R-squared 0.676973 Adjusted R-squared 0.673710 F(2, 198) 221.0475 P-value(F) 3.56e-51 rho -0.003481 Durbin-Watson 1.993858 ''' ''' RESET test for specification (squares and cubes) Test statistic: F = 5.219019, with p-value = P(F(2,197) > 5.21902) = 0.00619 RESET test for specification (squares only) Test statistic: F = 7.268492, with p-value = P(F(1,198) > 7.26849) = 0.00762 RESET test for specification (cubes only) Test statistic: F = 5.248951, with p-value = P(F(1,198) > 5.24895) = 0.023: ''' ''' Test for ARCH of order 4 coefficient std. error t-ratio p-value -------------------------------------------------------- alpha(0) 97.0386 20.3234 4.775 3.56e-06 *** alpha(1) 0.176114 0.0714698 2.464 0.0146 ** alpha(2) -0.0488339 0.0724981 -0.6736 0.5014 alpha(3) -0.0705413 0.0737058 -0.9571 0.3397 alpha(4) 0.0384531 0.0725763 0.5298 0.5968 Null hypothesis: no ARCH effect is present Test statistic: LM = 7.30776 with p-value = P(Chi-square(4) > 7.30776) = 0.120491: ''' ''' Variance Inflation Factors Minimum possible value = 1.0 Values > 10.0 may indicate a collinearity problem ds_l_realgdp 1.002 realint_1 1.002 VIF(j) = 1/(1 - R(j)^2), where R(j) is the multiple correlation coefficient between variable j and the other independent variables Properties of matrix X'X: 1-norm = 6862.0664 Determinant = 1.0296049e+009 Reciprocal condition number = 0.013819244 ''' ''' Test for ARCH of order 4 - Null hypothesis: no ARCH effect is present Test statistic: LM = 7.30776 with p-value = P(Chi-square(4) > 7.30776) = 0.120491 Test of common factor restriction - Null hypothesis: restriction is acceptable Test statistic: F(2, 195) = 0.426391 with p-value = P(F(2, 195) > 0.426391) = 0.653468 Test for normality of residual - Null hypothesis: error is normally distributed Test statistic: Chi-square(2) = 20.2792 with p-value = 3.94837e-005: ''' #no idea what this is ''' Augmented regression for common factor test OLS, using observations 1959:3-2009:3 (T = 201) Dependent variable: ds_l_realinv coefficient std. error t-ratio p-value --------------------------------------------------------------- const -10.9481 1.35807 -8.062 7.44e-014 *** ds_l_realgdp 4.28893 0.229459 18.69 2.40e-045 *** realint_1 -0.662644 0.334872 -1.979 0.0492 ** ds_l_realinv_1 -0.108892 0.0715042 -1.523 0.1294 ds_l_realgdp_1 0.660443 0.390372 1.692 0.0923 * realint_2 0.0769695 0.341527 0.2254 0.8219 Sum of squared residuals = 22432.8 Test of common factor restriction Test statistic: F(2, 195) = 0.426391, with p-value = 0.653468 ''' ################ with OLS, HAC errors #Model 5: OLS, using observations 1959:2-2009:3 (T = 202) #Dependent variable: ds_l_realinv #HAC standard errors, bandwidth 4 (Bartlett kernel) #coefficient std. error t-ratio p-value 95% CONFIDENCE INTERVAL #for confidence interval t(199, 0.025) = 1.972 partable = np.array([ [-9.48167, 1.17709, -8.055, 7.17e-014, -11.8029, -7.16049], # *** [4.37422, 0.328787, 13.30, 2.62e-029, 3.72587, 5.02258], #*** [-0.613997, 0.293619, -2.091, 0.0378, -1.19300, -0.0349939]]) # ** result_gretl_g1 = dict( endog_mean = ("Mean dependent var", 3.257395), endog_std = ("S.D. dependent var", 18.73915), ssr = ("Sum squared resid", 22799.68), mse_resid_sqrt = ("S.E. of regression", 10.70380), rsquared = ("R-squared", 0.676978), rsquared_adj = ("Adjusted R-squared", 0.673731), fvalue = ("F(2, 199)", 90.79971), f_pvalue = ("P-value(F)", 9.53e-29), llf = ("Log-likelihood", -763.9752), aic = ("Akaike criterion", 1533.950), bic = ("Schwarz criterion", 1543.875), hqic = ("Hannan-Quinn", 1537.966), resid_acf1 = ("rho", -0.107341), dw = ("Durbin-Watson", 2.213805)) linear_logs = [1.68351, 0.430953, 2, "chi2"] #for logs: dropping 70 nan or incomplete observations, T=133 #(res_ols.model.exog <=0).any(1).sum() = 69 ?not 70 linear_squares = [7.52477, 0.0232283, 2, "chi2"] #Autocorrelation, Breusch-Godfrey test for autocorrelation up to order 4 lm_acorr4 = [1.17928, 0.321197, 4, 195, "F"] lm2_acorr4 = [4.771043, 0.312, 4, "chi2"] acorr_ljungbox4 = [5.23587, 0.264, 4, "chi2"] #break cusum_Harvey_Collier = [0.494432, 0.621549, 198, "t"] #stats.t.sf(0.494432, 198)*2 #see cusum results in files break_qlr = [3.01985, 0.1, 3, 196, "maxF"] #TODO check this, max at 2001:4 break_chow = [13.1897, 0.00424384, 3, "chi2"] # break at 1984:1 arch_4 = [3.43473, 0.487871, 4, "chi2"] normality = [23.962, 0.00001, 2, "chi2"] het_white = [33.503723, 0.000003, 5, "chi2"] het_breusch_pagan = [1.302014, 0.521520, 2, "chi2"] #TODO: not available het_breusch_pagan_konker = [0.709924, 0.701200, 2, "chi2"] reset_2_3 = [5.219019, 0.00619, 2, 197, "f"] reset_2 = [7.268492, 0.00762, 1, 198, "f"] reset_3 = [5.248951, 0.023, 1, 198, "f"] #not available cond_1norm = 5984.0525 determinant = 7.1087467e+008 reciprocal_condition_number = 0.013826504 vif = [1.001, 1.001] names = 'date residual leverage influence DFFITS'.split() cur_dir = os.path.abspath(os.path.dirname(__file__)) fpath = os.path.join(cur_dir, 'results/leverage_influence_ols_nostars.txt') lev = np.genfromtxt(fpath, skip_header=3, skip_footer=1, converters={0:lambda s: s}) #either numpy 1.6 or python 3.2 changed behavior if np.isnan(lev[-1]['f1']): lev = np.genfromtxt(fpath, skip_header=3, skip_footer=2, converters={0:lambda s: s}) lev.dtype.names = names res = res_ols #for easier copying cov_hac = sw.cov_hac_simple(res, nlags=4, use_correction=False) bse_hac = sw.se_cov(cov_hac) assert_almost_equal(res.params, partable[:,0], 5) assert_almost_equal(bse_hac, partable[:,1], 5) #TODO assert_almost_equal(res.ssr, result_gretl_g1['ssr'][1], decimal=2) assert_almost_equal(res.llf, result_gretl_g1['llf'][1], decimal=4) #not in gretl assert_almost_equal(res.rsquared, result_gretl_g1['rsquared'][1], decimal=6) #FAIL assert_almost_equal(res.rsquared_adj, result_gretl_g1['rsquared_adj'][1], decimal=6) #FAIL assert_almost_equal(np.sqrt(res.mse_resid), result_gretl_g1['mse_resid_sqrt'][1], decimal=5) #f-value is based on cov_hac I guess #res2 = res.get_robustcov_results(cov_type='HC1') # TODO: fvalue differs from Gretl, trying any of the HCx #assert_almost_equal(res2.fvalue, result_gretl_g1['fvalue'][1], decimal=0) #FAIL #assert_approx_equal(res.f_pvalue, result_gretl_g1['f_pvalue'][1], significant=1) #FAIL #assert_almost_equal(res.durbin_watson, result_gretl_g1['dw'][1], decimal=7) #TODO c = oi.reset_ramsey(res, degree=2) compare_ftest(c, reset_2, decimal=(6,5)) c = oi.reset_ramsey(res, degree=3) compare_ftest(c, reset_2_3, decimal=(6,5)) linear_sq = smsdia.linear_lm(res.resid, res.model.exog) assert_almost_equal(linear_sq[0], linear_squares[0], decimal=6) assert_almost_equal(linear_sq[1], linear_squares[1], decimal=7) hbpk = smsdia.het_breuschpagan(res.resid, res.model.exog) assert_almost_equal(hbpk[0], het_breusch_pagan_konker[0], decimal=6) assert_almost_equal(hbpk[1], het_breusch_pagan_konker[1], decimal=6) hw = smsdia.het_white(res.resid, res.model.exog) assert_almost_equal(hw[:2], het_white[:2], 6) #arch #sm_arch = smsdia.acorr_lm(res.resid**2, maxlag=4, autolag=None) sm_arch = smsdia.het_arch(res.resid, maxlag=4) assert_almost_equal(sm_arch[0], arch_4[0], decimal=5) assert_almost_equal(sm_arch[1], arch_4[1], decimal=6) vif2 = [oi.variance_inflation_factor(res.model.exog, k) for k in [1,2]] infl = oi.OLSInfluence(res_ols) #print np.max(np.abs(lev['DFFITS'] - infl.dffits[0])) #print np.max(np.abs(lev['leverage'] - infl.hat_matrix_diag)) #print np.max(np.abs(lev['influence'] - infl.influence)) #just added this based on Gretl #just rough test, low decimal in Gretl output, assert_almost_equal(lev['residual'], res.resid, decimal=3) assert_almost_equal(lev['DFFITS'], infl.dffits[0], decimal=3) assert_almost_equal(lev['leverage'], infl.hat_matrix_diag, decimal=3) assert_almost_equal(lev['influence'], infl.influence, decimal=4)
def test_bking2d(): """ Test Baxter-King band-pass filter with 2d input """ bking_results = array([[7.320813,-.0374475], [2.886914,-.0430094], [-6.818976,-.053456], [-13.49436,-.0620739], [-13.27936,-.0626929], [-9.405913,-.0603022], [-5.691091,-.0630016], [-5.133076,-.0832268], [-7.273468,-.1186448], [-9.243364,-.1619868], [-8.482916,-.2116604], [-4.447764,-.2670747], [2.406559,-.3209931], [10.68433,-.3583075], [19.46414,-.3626742], [28.09749,-.3294618], [34.11066,-.2773388], [33.48468,-.2436127], [24.64598,-.2605531], [9.952399,-.3305166], [-4.265528,-.4275561], [-12.59471,-.5076068], [-13.46714,-.537573], [-9.049501,-.5205845], [-3.011248,-.481673], [.5655082,-.4403994], [2.897976,-.4039957], [7.406077,-.3537394], [14.67959,-.2687359], [18.651,-.1459743], [13.05891,.0014926], [-2.945415,.1424277], [-24.08659,.2451936], [-41.86147,.288541], [-48.68383,.2727282], [-43.32689,.1959127], [-31.66654,.0644874], [-20.38356,-.1158372], [-13.76411,-.3518627], [-9.978693,-.6557535], [-3.7704,-1.003754], [10.27108,-1.341632], [31.02847,-1.614486], [51.87613,-1.779089], [66.93117,-1.807459], [73.51951,-1.679688], [73.4053,-1.401012], [69.17468,-.9954996], [59.8543,-.511261], [38.23899,-.0146745], [-.2604809,.4261311], [-49.0107,.7452514], [-91.1128,.8879492], [-112.1574,.8282748], [-108.3227,.5851508], [-86.51453,.2351699], [-59.91258,-.1208998], [-40.01185,-.4297895], [-29.70265,-.6821963], [-22.76396,-.9234254], [-13.08037,-1.217539], [1.913622,-1.57367], [20.44045,-1.927008], [37.32873,-2.229565], [46.79802,-2.463154], [51.95937,-2.614697], [59.67393,-2.681357], [70.50803,-2.609654], [81.27311,-2.301618], [83.53191,-1.720974], [67.72536,-.9837123], [33.78039,-.2261613], [-6.509092,.4546985], [-37.31579,1.005751], [-46.05207,1.457224], [-29.81496,1.870815], [1.416417,2.263313], [28.31503,2.599906], [32.90134,2.812282], [8.949259,2.83358], [-35.41895,2.632667], [-84.65775,2.201077], [-124.4288,1.598951], [-144.6036,.9504762], [-140.2204,.4187932], [-109.2624,.1646726], [-53.6901,.2034265], [15.07415,.398165], [74.44268,.5427476], [104.0403,.5454975], [101.0725,.4723354], [76.58291,.4626823], [49.27925,.5840143], [36.15751,.7187981], [36.48799,.6058422], [37.60897,.1221227], [27.75998,-.5891272], [4.216643,-1.249841], [-23.20579,-1.594972], [-39.33292,-1.545968], [-36.6134,-1.275494], [-20.90161,-1.035783], [-4.143123,-.9971732], [5.48432,-1.154264], [9.270075,-1.29987], [13.69573,-1.240559], [22.16675,-.9662656], [33.01987,-.6420301], [41.93186,-.4698712], [47.12222,-.4527797], [48.62164,-.4407153], [47.30701,-.2416076], [40.20537,.2317583], [22.37898,.8710276], [-7.133002,1.426177], [-43.3339,1.652785], [-78.51229,1.488021], [-101.3684,1.072096], [-105.2179,.6496446], [-90.97147,.4193682], [-68.30824,.41847], [-48.10113,.5253419], [-35.60709,.595076], [-31.15775,.5509905], [-31.82346,.3755519], [-32.49278,.1297979], [-28.22499,-.0916165], [-14.42852,-.2531037], [10.1827,-.3220784], [36.64189,-.2660561], [49.43468,-.1358522], [38.75517,-.0279508], [6.447761,.0168735], [-33.15883,.0315687], [-62.60446,.0819507], [-72.87829,.2274033], [-66.54629,.4641401], [-52.61205,.7211093], [-38.06676,.907773], [-26.19963,.9387103], [-16.51492,.7940786], [-7.007577,.5026631], [.6125674,.1224996], [7.866972,-.2714422], [14.8123,-.6273921], [22.52388,-.9124271], [30.65265,-1.108861], [39.47801,-1.199206], [49.05027,-1.19908], [59.02925,-1.139046], [72.88999,-.9775021], [95.08865,-.6592603], [125.8983,-.1609712], [154.4283,.4796201], [160.7638,1.100565], [130.6092,1.447148], [67.84406,1.359608], [-7.070272,.8931825], [-68.08128,.2619787], [-99.39944,-.252208], [-104.911,-.4703874], [-100.2372,-.4430657], [-98.11596,-.390683], [-104.2051,-.5647846], [-114.0125,-.9397582], [-113.3475,-1.341633], [-92.98669,-1.567337], [-51.91707,-1.504943], [-.7313812,-1.30576], [43.22938,-1.17151], [64.62762,-1.136151], [64.07226,-1.050555], [59.35707,-.7308369], [67.06026,-.1766731], [91.87247,.3898467], [124.4591,.8135461], [151.2402,.9644226], [163.0648,.6865934], [154.6432,.0115685]]) X = macrodata.load().data[['realinv','cpi']].view((float,2)) Y = bkfilter(X, 6, 32, 12) assert_almost_equal(Y,bking_results,4)
def setup_class(cls): data = macrodata.load() cls.x = data.data['realgdp'] cls.bc = BoxCox()
def test_cfitz_filter(): """ Test Christiano-Fitzgerald Filter. Results taken from R. """ #NOTE: The Stata mata code and the matlab code it's based on are wrong. cfilt_res = array([[0.712599537179426, 0.439563468233128], [1.06824041304411, 0.352886666575907], [1.19422467791128, 0.257297004260607], [0.970845473140327, 0.114504692143872], [0.467026976628563, -0.070734782329146], [-0.089153511514031, -0.238609685132605], [-0.452339254128573, -0.32376584042956], [-0.513231214461187, -0.314288554228112], [-0.352372578720063, -0.258815055101336], [-0.160282602521333, -0.215076844089567], [-0.0918782593827686, -0.194120745417214], [-0.168083823205437, -0.158327420072693], [-0.291595204965808, -0.0742727139742986], [-0.348638756841307, 0.037008291163602], [-0.304328040874631, 0.108196527328748], [-0.215933150969686, 0.0869231107437175], [-0.165632621390694, -0.0130556619786275], [-0.182326839507151, -0.126570926191824], [-0.223737786804725, -0.205535321806185], [-0.228939291453403, -0.269110078201836], [-0.185518327227038, -0.375976507132174], [-0.143900152461529, -0.53760115656157], [-0.162749541550174, -0.660065018626038], [-0.236263634756884, -0.588542352053736], [-0.275785854309211, -0.236867929421996], [-0.173666515108109, 0.303436335579219], [0.0963135720251639, 0.779772338801993], [0.427070069032285, 0.929108075350647], [0.629034743259998, 0.658330841002647], [0.557941248993624, 0.118500049361018], [0.227866624051603, -0.385048321099911], [-0.179878859883227, -0.582223992561493], [-0.428263000051965, -0.394053702908091], [-0.381640684645912, 0.0445437406977307], [-0.0942745548364887, 0.493997792757968], [0.238132391504895, 0.764519811304315], [0.431293754256291, 0.814755206427316], [0.455010435813661, 0.745567043101108], [0.452800768971269, 0.709401694610443], [0.615754619329312, 0.798293251119636], [1.00256335412457, 0.975856845059388], [1.44841039351691, 1.09097252730799], [1.64651971120370, 0.967823457118036], [1.35534532901802, 0.522397724737059], [0.580492790312048, -0.16941343361609], [-0.410746188031773, -0.90760401289056], [-1.26148406066881, -1.49592867122591], [-1.75784179124566, -1.87404167409849], [-1.94478553960064, -2.14586210891112], [-2.03751202708559, -2.465855239868], [-2.20376059354166, -2.86294187189049], [-2.39722338315852, -3.15004697654831], [-2.38032366161537, -3.01390466643222], [-1.91798022532025, -2.23395210271226], [-0.982318490353716, -0.861346053067472], [0.199047030343412, 0.790266582335616], [1.28582776574786, 2.33731327460104], [2.03565905376430, 3.54085486821911], [2.41201557412526, 4.36519456268955], [2.52011070482927, 4.84810517685452], [2.45618479815452, 4.92906708807477], [2.22272146945388, 4.42591058990048], [1.78307567169034, 3.20962906108388], [1.18234431860844, 1.42568060336985], [0.590069172333348, -0.461896808688991], [0.19662302949837, -1.89020992539465], [0.048307034171166, -2.53490571941987], [-0.0141956981899000, -2.50020338531674], [-0.230505187108187, -2.20625973569823], [-0.700947410386801, -2.06643697511048], [-1.27085123163060, -2.21536883679783], [-1.64082547897928, -2.49016921117735], [-1.62286182971254, -2.63948740221362], [-1.31609762181362, -2.54685250637904], [-1.03085567704873, -2.27157435428923], [-1.01100120380112, -1.90404507430561], [-1.19823958399826, -1.4123209792214], [-1.26398933608383, -0.654000086153317], [-0.904710628949692, 0.447960016248203], [-0.151340093679588, 1.73970411237156], [0.592926881165989, 2.85741581650685], [0.851660587507523, 3.4410446351716], [0.480324393352127, 3.36870271362297], [-0.165153230782417, 2.82003806696544], [-0.459235919375844, 2.12858991660866], [0.0271158842479935, 1.55840980891556], [1.18759188180671, 1.17980298478623], [2.43238266962309, 0.904011534980672], [3.08277213720132, 0.595286911949837], [2.79953663720953, 0.148014782859571], [1.73694442845833, -0.496297332023011], [0.357638079951977, -1.33108149877570], [-0.891418825216945, -2.22650083183366], [-1.77646467793627, -2.89359299718574], [-2.24614790863088, -2.97921619243347], [-2.29048879096607, -2.30003092779280], [-1.87929656465888, -1.05298381273274], [-1.04510101454788, 0.215837488618531], [0.00413338508394524, 0.937866257924888], [0.906870625251025, 0.92664365343019], [1.33869057593416, 0.518564571494679], [1.22659678454440, 0.288096869652890], [0.79380139656044, 0.541053084632774], [0.38029431865832, 1.01905199983437], [0.183929413600038, 1.10529586616777], [0.140045425897033, 0.393618564826736], [0.0337313182352219, -0.86431819007665], [-0.269208622829813, -1.85638085246792], [-0.687276639992166, -1.82275359004533], [-1.00161592325614, -0.692695765071617], [-1.06320089194036, 0.803577361347341], [-0.927152307196776, 1.67366338751788], [-0.786802101366614, 1.42564362251793], [-0.772970884572502, 0.426446388877964], [-0.81275662801789, -0.437721213831647], [-0.686831250382476, -0.504255468075149], [-0.237936463020255, 0.148656301898438], [0.459631879129522, 0.832925905720478], [1.12717379822508, 0.889455302576383], [1.48640453200855, 0.268042676202216], [1.46515245776211, -0.446505038539178], [1.22993484959115, -0.563868578181134], [1.0272100765927, 0.0996849952196907], [0.979191212438404, 1.05053652824665], [1.00733490030391, 1.51658415000556], [0.932192535457706, 1.06262774912638], [0.643374300839414, -0.0865180803476065], [0.186885168954461, -1.24799408923277], [-0.290842337365465, -1.80035611156538], [-0.669446735516495, -1.58847333561510], [-0.928915624595538, -0.932116966867929], [-1.11758635926997, -0.307879396807850], [-1.26832454569756, -0.00856199983957032], [-1.35755577149251, -0.0303537516690989], [-1.34244112665546, -0.196807620887435], [-1.22227976023299, -0.342062643495923], [-1.04601473486818, -0.390474392372016], [-0.85158508717846, -0.322164402093596], [-0.605033439160543, -0.126930141915954], [-0.218304303942818, 0.179551077808122], [0.352173017779006, 0.512327303000081], [1.01389600097229, 0.733397490572755], [1.55149778750607, 0.748740387440165], [1.75499674757591, 0.601759717901009], [1.56636057468633, 0.457705308377562], [1.12239792537274, 0.470849913286519], [0.655802600286141, 0.646142040378738], [0.335285115340180, 0.824103600255079], [0.173454596506888, 0.808068498175582], [0.0666753011315252, 0.521488214487996], [-0.0842367474816212, 0.0583493276173476], [-0.285604762631464, -0.405958418332253], [-0.465735422869919, -0.747800086512926], [-0.563586691231348, -0.94982272350799], [-0.598110322024572, -1.04736894794361], [-0.65216025756061, -1.04858365218822], [-0.789663117801624, -0.924145633093637], [-0.984704045337959, -0.670740724179446], [-1.12449565589348, -0.359476803003931], [-1.07878318723543, -0.092290938944355], [-0.775555435407062, 0.102132527529259], [-0.231610677329856, 0.314409560305622], [0.463192794235131, 0.663523546243286], [1.17416973448423, 1.13156902460931], [1.74112278814906, 1.48967153067024], [2.00320855757084, 1.42571085941843], [1.8529912317336, 0.802460519079555], [1.30747261947211, -0.169219078629572], [0.540237070403222, -1.01621539672694], [-0.177136817092375, -1.3130784867977], [-0.611981468823591, -0.982477824460773], [-0.700240028737747, -0.344919609255406], [-0.572396497740112, 0.125083535035390], [-0.450934466600975, 0.142553112732280], [-0.494020014254326, -0.211429053871656], [-0.701707589094918, -0.599602868825992], [-0.94721339346157, -0.710669870591623], [-1.09297139748946, -0.47846194092245], [-1.08850658866583, -0.082258450179988], [-0.976082880696692, 0.235758921309309], [-0.81885695346771, 0.365298185204303], [-0.63165529525553, 0.384725179378064], [-0.37983149226421, 0.460240196164378], [-0.0375551354277652, 0.68580913832794], [0.361996927427804, 0.984470835955107], [0.739920615366072, 1.13195975020298], [1.03583478061534, 0.88812510421667], [1.25614938962160, 0.172561520611839], [1.45295030231799, -0.804979390544485], [1.64887158748426, -1.55662011197859], [1.78022721495313, -1.52921975346218], [1.71945683859668, -0.462240366424548], [1.36728880239190, 1.31213774341268], [0.740173894315912, 2.88362740582926], [-0.0205364331835904, 3.20319080963167], [-0.725643970956428, 1.75222466531151], [-1.23900506689782, -0.998432917440275], [-1.52651897508678, -3.72752870885448], [-1.62857516631435, -5.00551707196292], [-1.59657420180451, -4.18499132634584], [-1.45489013276495, -1.81759097305637], [-1.21309542313047, 0.722029457352468]]) dta = macrodata.load().data[['tbilrate', 'infl']].view((float, 2))[1:] cyc, trend = cffilter(dta) assert_almost_equal(cyc, cfilt_res, 8) #do 1d cyc, trend = cffilter(dta[:, 1]) assert_almost_equal(cyc, cfilt_res[:, 1], 8)
def test_all(self): d = macrodata.load().data #import datasetswsm.greene as g #d = g.load('5-1') #growth rates gs_l_realinv = 400 * np.diff(np.log(d['realinv'])) gs_l_realgdp = 400 * np.diff(np.log(d['realgdp'])) #simple diff, not growthrate, I want heteroscedasticity later for testing endogd = np.diff(d['realinv']) exogd = add_constant(np.c_[np.diff(d['realgdp']), d['realint'][:-1]], prepend=True) endogg = gs_l_realinv exogg = add_constant(np.c_[gs_l_realgdp, d['realint'][:-1]],prepend=True) res_ols = OLS(endogg, exogg).fit() #print res_ols.params mod_g1 = GLSAR(endogg, exogg, rho=-0.108136) res_g1 = mod_g1.fit() #print res_g1.params mod_g2 = GLSAR(endogg, exogg, rho=-0.108136) #-0.1335859) from R res_g2 = mod_g2.iterative_fit(maxiter=5) #print res_g2.params rho = -0.108136 # coefficient std. error t-ratio p-value 95% CONFIDENCE INTERVAL partable = np.array([ [-9.50990, 0.990456, -9.602, 3.65e-018, -11.4631, -7.55670], # *** [ 4.37040, 0.208146, 21.00, 2.93e-052, 3.95993, 4.78086], # *** [-0.579253, 0.268009, -2.161, 0.0319, -1.10777, -0.0507346]]) # ** #Statistics based on the rho-differenced data: result_gretl_g1 = dict( endog_mean = ("Mean dependent var", 3.113973), endog_std = ("S.D. dependent var", 18.67447), ssr = ("Sum squared resid", 22530.90), mse_resid_sqrt = ("S.E. of regression", 10.66735), rsquared = ("R-squared", 0.676973), rsquared_adj = ("Adjusted R-squared", 0.673710), fvalue = ("F(2, 198)", 221.0475), f_pvalue = ("P-value(F)", 3.56e-51), resid_acf1 = ("rho", -0.003481), dw = ("Durbin-Watson", 1.993858)) #fstatistic, p-value, df1, df2 reset_2_3 = [5.219019, 0.00619, 2, 197, "f"] reset_2 = [7.268492, 0.00762, 1, 198, "f"] reset_3 = [5.248951, 0.023, 1, 198, "f"] #LM-statistic, p-value, df arch_4 = [7.30776, 0.120491, 4, "chi2"] #multicollinearity vif = [1.002, 1.002] cond_1norm = 6862.0664 determinant = 1.0296049e+009 reciprocal_condition_number = 0.013819244 #Chi-square(2): test-statistic, pvalue, df normality = [20.2792, 3.94837e-005, 2] #tests res = res_g1 #with rho from Gretl #basic assert_almost_equal(res.params, partable[:,0], 4) assert_almost_equal(res.bse, partable[:,1], 6) assert_almost_equal(res.tvalues, partable[:,2], 2) assert_almost_equal(res.ssr, result_gretl_g1['ssr'][1], decimal=2) #assert_almost_equal(res.llf, result_gretl_g1['llf'][1], decimal=7) #not in gretl #assert_almost_equal(res.rsquared, result_gretl_g1['rsquared'][1], decimal=7) #FAIL #assert_almost_equal(res.rsquared_adj, result_gretl_g1['rsquared_adj'][1], decimal=7) #FAIL assert_almost_equal(np.sqrt(res.mse_resid), result_gretl_g1['mse_resid_sqrt'][1], decimal=5) assert_almost_equal(res.fvalue, result_gretl_g1['fvalue'][1], decimal=4) assert_approx_equal(res.f_pvalue, result_gretl_g1['f_pvalue'][1], significant=2) #assert_almost_equal(res.durbin_watson, result_gretl_g1['dw'][1], decimal=7) #TODO #arch #sm_arch = smsdia.acorr_lm(res.wresid**2, maxlag=4, autolag=None) sm_arch = smsdia.het_arch(res.wresid, maxlag=4) assert_almost_equal(sm_arch[0], arch_4[0], decimal=4) assert_almost_equal(sm_arch[1], arch_4[1], decimal=6) #tests res = res_g2 #with estimated rho #estimated lag coefficient assert_almost_equal(res.model.rho, rho, decimal=3) #basic assert_almost_equal(res.params, partable[:,0], 4) assert_almost_equal(res.bse, partable[:,1], 3) assert_almost_equal(res.tvalues, partable[:,2], 2) assert_almost_equal(res.ssr, result_gretl_g1['ssr'][1], decimal=2) #assert_almost_equal(res.llf, result_gretl_g1['llf'][1], decimal=7) #not in gretl #assert_almost_equal(res.rsquared, result_gretl_g1['rsquared'][1], decimal=7) #FAIL #assert_almost_equal(res.rsquared_adj, result_gretl_g1['rsquared_adj'][1], decimal=7) #FAIL assert_almost_equal(np.sqrt(res.mse_resid), result_gretl_g1['mse_resid_sqrt'][1], decimal=5) assert_almost_equal(res.fvalue, result_gretl_g1['fvalue'][1], decimal=0) assert_almost_equal(res.f_pvalue, result_gretl_g1['f_pvalue'][1], decimal=6) #assert_almost_equal(res.durbin_watson, result_gretl_g1['dw'][1], decimal=7) #TODO c = oi.reset_ramsey(res, degree=2) compare_ftest(c, reset_2, decimal=(2,4)) c = oi.reset_ramsey(res, degree=3) compare_ftest(c, reset_2_3, decimal=(2,4)) #arch #sm_arch = smsdia.acorr_lm(res.wresid**2, maxlag=4, autolag=None) sm_arch = smsdia.het_arch(res.wresid, maxlag=4) assert_almost_equal(sm_arch[0], arch_4[0], decimal=1) assert_almost_equal(sm_arch[1], arch_4[1], decimal=2) ''' Performing iterative calculation of rho... ITER RHO ESS 1 -0.10734 22530.9 2 -0.10814 22530.9 Model 4: Cochrane-Orcutt, using observations 1959:3-2009:3 (T = 201) Dependent variable: ds_l_realinv rho = -0.108136 coefficient std. error t-ratio p-value ------------------------------------------------------------- const -9.50990 0.990456 -9.602 3.65e-018 *** ds_l_realgdp 4.37040 0.208146 21.00 2.93e-052 *** realint_1 -0.579253 0.268009 -2.161 0.0319 ** Statistics based on the rho-differenced data: Mean dependent var 3.113973 S.D. dependent var 18.67447 Sum squared resid 22530.90 S.E. of regression 10.66735 R-squared 0.676973 Adjusted R-squared 0.673710 F(2, 198) 221.0475 P-value(F) 3.56e-51 rho -0.003481 Durbin-Watson 1.993858 ''' ''' RESET test for specification (squares and cubes) Test statistic: F = 5.219019, with p-value = P(F(2,197) > 5.21902) = 0.00619 RESET test for specification (squares only) Test statistic: F = 7.268492, with p-value = P(F(1,198) > 7.26849) = 0.00762 RESET test for specification (cubes only) Test statistic: F = 5.248951, with p-value = P(F(1,198) > 5.24895) = 0.023: ''' ''' Test for ARCH of order 4 coefficient std. error t-ratio p-value -------------------------------------------------------- alpha(0) 97.0386 20.3234 4.775 3.56e-06 *** alpha(1) 0.176114 0.0714698 2.464 0.0146 ** alpha(2) -0.0488339 0.0724981 -0.6736 0.5014 alpha(3) -0.0705413 0.0737058 -0.9571 0.3397 alpha(4) 0.0384531 0.0725763 0.5298 0.5968 Null hypothesis: no ARCH effect is present Test statistic: LM = 7.30776 with p-value = P(Chi-square(4) > 7.30776) = 0.120491: ''' ''' Variance Inflation Factors Minimum possible value = 1.0 Values > 10.0 may indicate a collinearity problem ds_l_realgdp 1.002 realint_1 1.002 VIF(j) = 1/(1 - R(j)^2), where R(j) is the multiple correlation coefficient between variable j and the other independent variables Properties of matrix X'X: 1-norm = 6862.0664 Determinant = 1.0296049e+009 Reciprocal condition number = 0.013819244 ''' ''' Test for ARCH of order 4 - Null hypothesis: no ARCH effect is present Test statistic: LM = 7.30776 with p-value = P(Chi-square(4) > 7.30776) = 0.120491 Test of common factor restriction - Null hypothesis: restriction is acceptable Test statistic: F(2, 195) = 0.426391 with p-value = P(F(2, 195) > 0.426391) = 0.653468 Test for normality of residual - Null hypothesis: error is normally distributed Test statistic: Chi-square(2) = 20.2792 with p-value = 3.94837e-005: ''' #no idea what this is ''' Augmented regression for common factor test OLS, using observations 1959:3-2009:3 (T = 201) Dependent variable: ds_l_realinv coefficient std. error t-ratio p-value --------------------------------------------------------------- const -10.9481 1.35807 -8.062 7.44e-014 *** ds_l_realgdp 4.28893 0.229459 18.69 2.40e-045 *** realint_1 -0.662644 0.334872 -1.979 0.0492 ** ds_l_realinv_1 -0.108892 0.0715042 -1.523 0.1294 ds_l_realgdp_1 0.660443 0.390372 1.692 0.0923 * realint_2 0.0769695 0.341527 0.2254 0.8219 Sum of squared residuals = 22432.8 Test of common factor restriction Test statistic: F(2, 195) = 0.426391, with p-value = 0.653468 ''' ################ with OLS, HAC errors #Model 5: OLS, using observations 1959:2-2009:3 (T = 202) #Dependent variable: ds_l_realinv #HAC standard errors, bandwidth 4 (Bartlett kernel) #coefficient std. error t-ratio p-value 95% CONFIDENCE INTERVAL #for confidence interval t(199, 0.025) = 1.972 partable = np.array([ [-9.48167, 1.17709, -8.055, 7.17e-014, -11.8029, -7.16049], # *** [4.37422, 0.328787, 13.30, 2.62e-029, 3.72587, 5.02258], #*** [-0.613997, 0.293619, -2.091, 0.0378, -1.19300, -0.0349939]]) # ** result_gretl_g1 = dict( endog_mean = ("Mean dependent var", 3.257395), endog_std = ("S.D. dependent var", 18.73915), ssr = ("Sum squared resid", 22799.68), mse_resid_sqrt = ("S.E. of regression", 10.70380), rsquared = ("R-squared", 0.676978), rsquared_adj = ("Adjusted R-squared", 0.673731), fvalue = ("F(2, 199)", 90.79971), f_pvalue = ("P-value(F)", 9.53e-29), llf = ("Log-likelihood", -763.9752), aic = ("Akaike criterion", 1533.950), bic = ("Schwarz criterion", 1543.875), hqic = ("Hannan-Quinn", 1537.966), resid_acf1 = ("rho", -0.107341), dw = ("Durbin-Watson", 2.213805)) linear_logs = [1.68351, 0.430953, 2, "chi2"] #for logs: dropping 70 nan or incomplete observations, T=133 #(res_ols.model.exog <=0).any(1).sum() = 69 ?not 70 linear_squares = [7.52477, 0.0232283, 2, "chi2"] #Autocorrelation, Breusch-Godfrey test for autocorrelation up to order 4 lm_acorr4 = [1.17928, 0.321197, 4, 195, "F"] lm2_acorr4 = [4.771043, 0.312, 4, "chi2"] acorr_ljungbox4 = [5.23587, 0.264, 4, "chi2"] #break cusum_Harvey_Collier = [0.494432, 0.621549, 198, "t"] #stats.t.sf(0.494432, 198)*2 #see cusum results in files break_qlr = [3.01985, 0.1, 3, 196, "maxF"] #TODO check this, max at 2001:4 break_chow = [13.1897, 0.00424384, 3, "chi2"] # break at 1984:1 arch_4 = [3.43473, 0.487871, 4, "chi2"] normality = [23.962, 0.00001, 2, "chi2"] het_white = [33.503723, 0.000003, 5, "chi2"] het_breush_pagan = [1.302014, 0.521520, 2, "chi2"] #TODO: not available het_breush_pagan_konker = [0.709924, 0.701200, 2, "chi2"] reset_2_3 = [5.219019, 0.00619, 2, 197, "f"] reset_2 = [7.268492, 0.00762, 1, 198, "f"] reset_3 = [5.248951, 0.023, 1, 198, "f"] #not available cond_1norm = 5984.0525 determinant = 7.1087467e+008 reciprocal_condition_number = 0.013826504 vif = [1.001, 1.001] names = 'date residual leverage influence DFFITS'.split() cur_dir = os.path.abspath(os.path.dirname(__file__)) fpath = os.path.join(cur_dir, 'results/leverage_influence_ols_nostars.txt') lev = np.genfromtxt(fpath, skip_header=3, skip_footer=1, converters={0:lambda s: s}) #either numpy 1.6 or python 3.2 changed behavior if np.isnan(lev[-1]['f1']): lev = np.genfromtxt(fpath, skip_header=3, skip_footer=2, converters={0:lambda s: s}) lev.dtype.names = names res = res_ols #for easier copying cov_hac = sw.cov_hac_simple(res, nlags=4, use_correction=False) bse_hac = sw.se_cov(cov_hac) assert_almost_equal(res.params, partable[:,0], 5) assert_almost_equal(bse_hac, partable[:,1], 5) #TODO assert_almost_equal(res.ssr, result_gretl_g1['ssr'][1], decimal=2) #assert_almost_equal(res.llf, result_gretl_g1['llf'][1], decimal=7) #not in gretl assert_almost_equal(res.rsquared, result_gretl_g1['rsquared'][1], decimal=6) #FAIL assert_almost_equal(res.rsquared_adj, result_gretl_g1['rsquared_adj'][1], decimal=6) #FAIL assert_almost_equal(np.sqrt(res.mse_resid), result_gretl_g1['mse_resid_sqrt'][1], decimal=5) #f-value is based on cov_hac I guess #assert_almost_equal(res.fvalue, result_gretl_g1['fvalue'][1], decimal=0) #FAIL #assert_approx_equal(res.f_pvalue, result_gretl_g1['f_pvalue'][1], significant=1) #FAIL #assert_almost_equal(res.durbin_watson, result_gretl_g1['dw'][1], decimal=7) #TODO c = oi.reset_ramsey(res, degree=2) compare_ftest(c, reset_2, decimal=(6,5)) c = oi.reset_ramsey(res, degree=3) compare_ftest(c, reset_2_3, decimal=(6,5)) linear_sq = smsdia.linear_lm(res.resid, res.model.exog) assert_almost_equal(linear_sq[0], linear_squares[0], decimal=6) assert_almost_equal(linear_sq[1], linear_squares[1], decimal=7) hbpk = smsdia.het_breushpagan(res.resid, res.model.exog) assert_almost_equal(hbpk[0], het_breush_pagan_konker[0], decimal=6) assert_almost_equal(hbpk[1], het_breush_pagan_konker[1], decimal=6) hw = smsdia.het_white(res.resid, res.model.exog) assert_almost_equal(hw[:2], het_white[:2], 6) #arch #sm_arch = smsdia.acorr_lm(res.resid**2, maxlag=4, autolag=None) sm_arch = smsdia.het_arch(res.resid, maxlag=4) assert_almost_equal(sm_arch[0], arch_4[0], decimal=5) assert_almost_equal(sm_arch[1], arch_4[1], decimal=6) vif2 = [oi.variance_inflation_factor(res.model.exog, k) for k in [1,2]] infl = oi.OLSInfluence(res_ols) #print np.max(np.abs(lev['DFFITS'] - infl.dffits[0])) #print np.max(np.abs(lev['leverage'] - infl.hat_matrix_diag)) #print np.max(np.abs(lev['influence'] - infl.influence)) #just added this based on Gretl #just rough test, low decimal in Gretl output, assert_almost_equal(lev['residual'], res.resid, decimal=3) assert_almost_equal(lev['DFFITS'], infl.dffits[0], decimal=3) assert_almost_equal(lev['leverage'], infl.hat_matrix_diag, decimal=3) assert_almost_equal(lev['influence'], infl.influence, decimal=4)
def setup_class(cls): from statsmodels.datasets.macrodata import load cls.cpi = log(load().data['cpi']) cls.inflation = diff(cls.cpi)
def notyet_atst(): # FIXME: make this a test or move/remove d = macrodata.load(as_pandas=False).data realinv = d['realinv'] realgdp = d['realgdp'] realint = d['realint'] endog = realinv exog = add_constant(np.c_[realgdp, realint]) res_ols1 = OLS(endog, exog).fit() #growth rates gs_l_realinv = 400 * np.diff(np.log(d['realinv'])) gs_l_realgdp = 400 * np.diff(np.log(d['realgdp'])) lint = d['realint'][:-1] tbilrate = d['tbilrate'][:-1] endogg = gs_l_realinv exogg = add_constant(np.c_[gs_l_realgdp, lint]) exogg2 = add_constant(np.c_[gs_l_realgdp, tbilrate]) res_ols = OLS(endogg, exogg).fit() res_ols2 = OLS(endogg, exogg2).fit() #the following were done accidentally with res_ols1 in R, #with original Greene data params = np.array( [-272.3986041341653, 0.1779455206941112, 0.2149432424658157]) cov_hac_4 = np.array([ 1321.569466333051, -0.2318836566017612, 37.01280466875694, -0.2318836566017614, 4.602339488102263e-05, -0.0104687835998635, 37.012804668757, -0.0104687835998635, 21.16037144168061 ]).reshape(3, 3, order='F') cov_hac_10 = np.array([ 2027.356101193361, -0.3507514463299015, 54.81079621448568, -0.350751446329901, 6.953380432635583e-05, -0.01268990195095196, 54.81079621448564, -0.01268990195095195, 22.92512402151113 ]).reshape(3, 3, order='F') #goldfeld-quandt het_gq_greater = dict(statistic=13.20512768685082, df1=99, df2=98, pvalue=1.246141976112324e-30, distr='f') het_gq_less = dict(statistic=13.20512768685082, df1=99, df2=98, pvalue=1.) het_gq_2sided = dict(statistic=13.20512768685082, df1=99, df2=98, pvalue=1.246141976112324e-30, distr='f') #goldfeld-quandt, fraction = 0.5 het_gq_greater_2 = dict(statistic=87.1328934692124, df1=48, df2=47, pvalue=2.154956842194898e-33, distr='f') gq = smsdia.het_goldfeldquandt(endog, exog, split=0.5) compare_t_est(gq, het_gq_greater, decimal=(13, 14)) assert_equal(gq[-1], 'increasing') harvey_collier = dict(stat=2.28042114041313, df=199, pvalue=0.02364236161988260, distr='t') #hc = harvtest(fm, order.by=ggdp , data = list()) harvey_collier_2 = dict(stat=0.7516918462158783, df=199, pvalue=0.4531244858006127, distr='t')
from __future__ import print_function import numpy as np from statsmodels.regression.linear_model import OLS, GLSAR from statsmodels.tools.tools import add_constant from statsmodels.datasets import macrodata import statsmodels.regression.tests.results.results_macro_ols_robust as res d2 = macrodata.load(as_pandas=False).data g_gdp = 400*np.diff(np.log(d2['realgdp'])) g_inv = 400*np.diff(np.log(d2['realinv'])) exogg = add_constant(np.c_[g_gdp, d2['realint'][:-1]], prepend=False) res_olsg = OLS(g_inv, exogg).fit() print(res_olsg.summary()) res_hc0 = res_olsg.get_robustcov_results('HC1') print('\n\n') print(res_hc0.summary()) print('\n\n') res_hac4 = res_olsg.get_robustcov_results('HAC', maxlags=4, use_correction=True) print(res_hac4.summary()) print('\n\n') tt = res_hac4.t_test(np.eye(len(res_hac4.params))) print(tt.summary()) print('\n\n') print(tt.summary_frame())
def test_cfitz_filter(): """ Test Christiano-Fitzgerald Filter. Results taken from R. """ #NOTE: The Stata mata code and the matlab code it's based on are wrong. cfilt_res = array([[0.712599537179426,0.439563468233128], [1.06824041304411,0.352886666575907], [1.19422467791128,0.257297004260607], [0.970845473140327,0.114504692143872], [0.467026976628563,-0.070734782329146], [-0.089153511514031,-0.238609685132605], [-0.452339254128573,-0.32376584042956], [-0.513231214461187,-0.314288554228112], [-0.352372578720063,-0.258815055101336], [-0.160282602521333,-0.215076844089567], [-0.0918782593827686,-0.194120745417214], [-0.168083823205437,-0.158327420072693], [-0.291595204965808,-0.0742727139742986], [-0.348638756841307,0.037008291163602], [-0.304328040874631,0.108196527328748], [-0.215933150969686,0.0869231107437175], [-0.165632621390694,-0.0130556619786275], [-0.182326839507151,-0.126570926191824], [-0.223737786804725,-0.205535321806185], [-0.228939291453403,-0.269110078201836], [-0.185518327227038,-0.375976507132174], [-0.143900152461529,-0.53760115656157], [-0.162749541550174,-0.660065018626038], [-0.236263634756884,-0.588542352053736], [-0.275785854309211,-0.236867929421996], [-0.173666515108109,0.303436335579219], [0.0963135720251639,0.779772338801993], [0.427070069032285,0.929108075350647], [0.629034743259998,0.658330841002647], [0.557941248993624,0.118500049361018], [0.227866624051603,-0.385048321099911], [-0.179878859883227,-0.582223992561493], [-0.428263000051965,-0.394053702908091], [-0.381640684645912,0.0445437406977307], [-0.0942745548364887,0.493997792757968], [0.238132391504895,0.764519811304315], [0.431293754256291,0.814755206427316], [0.455010435813661,0.745567043101108], [0.452800768971269,0.709401694610443], [0.615754619329312,0.798293251119636], [1.00256335412457,0.975856845059388], [1.44841039351691,1.09097252730799], [1.64651971120370,0.967823457118036], [1.35534532901802,0.522397724737059], [0.580492790312048,-0.16941343361609], [-0.410746188031773,-0.90760401289056], [-1.26148406066881,-1.49592867122591], [-1.75784179124566,-1.87404167409849], [-1.94478553960064,-2.14586210891112], [-2.03751202708559,-2.465855239868], [-2.20376059354166,-2.86294187189049], [-2.39722338315852,-3.15004697654831], [-2.38032366161537,-3.01390466643222], [-1.91798022532025,-2.23395210271226], [-0.982318490353716,-0.861346053067472], [0.199047030343412,0.790266582335616], [1.28582776574786,2.33731327460104], [2.03565905376430,3.54085486821911], [2.41201557412526,4.36519456268955], [2.52011070482927,4.84810517685452], [2.45618479815452,4.92906708807477], [2.22272146945388,4.42591058990048], [1.78307567169034,3.20962906108388], [1.18234431860844,1.42568060336985], [0.590069172333348,-0.461896808688991], [0.19662302949837,-1.89020992539465], [0.048307034171166,-2.53490571941987], [-0.0141956981899000,-2.50020338531674], [-0.230505187108187,-2.20625973569823], [-0.700947410386801,-2.06643697511048], [-1.27085123163060,-2.21536883679783], [-1.64082547897928,-2.49016921117735], [-1.62286182971254,-2.63948740221362], [-1.31609762181362,-2.54685250637904], [-1.03085567704873,-2.27157435428923], [-1.01100120380112,-1.90404507430561], [-1.19823958399826,-1.4123209792214], [-1.26398933608383,-0.654000086153317], [-0.904710628949692,0.447960016248203], [-0.151340093679588,1.73970411237156], [0.592926881165989,2.85741581650685], [0.851660587507523,3.4410446351716], [0.480324393352127,3.36870271362297], [-0.165153230782417,2.82003806696544], [-0.459235919375844,2.12858991660866], [0.0271158842479935,1.55840980891556], [1.18759188180671,1.17980298478623], [2.43238266962309,0.904011534980672], [3.08277213720132,0.595286911949837], [2.79953663720953,0.148014782859571], [1.73694442845833,-0.496297332023011], [0.357638079951977,-1.33108149877570], [-0.891418825216945,-2.22650083183366], [-1.77646467793627,-2.89359299718574], [-2.24614790863088,-2.97921619243347], [-2.29048879096607,-2.30003092779280], [-1.87929656465888,-1.05298381273274], [-1.04510101454788,0.215837488618531], [0.00413338508394524,0.937866257924888], [0.906870625251025,0.92664365343019], [1.33869057593416,0.518564571494679], [1.22659678454440,0.288096869652890], [0.79380139656044,0.541053084632774], [0.38029431865832,1.01905199983437], [0.183929413600038,1.10529586616777], [0.140045425897033,0.393618564826736], [0.0337313182352219,-0.86431819007665], [-0.269208622829813,-1.85638085246792], [-0.687276639992166,-1.82275359004533], [-1.00161592325614,-0.692695765071617], [-1.06320089194036,0.803577361347341], [-0.927152307196776,1.67366338751788], [-0.786802101366614,1.42564362251793], [-0.772970884572502,0.426446388877964], [-0.81275662801789,-0.437721213831647], [-0.686831250382476,-0.504255468075149], [-0.237936463020255,0.148656301898438], [0.459631879129522,0.832925905720478], [1.12717379822508,0.889455302576383], [1.48640453200855,0.268042676202216], [1.46515245776211,-0.446505038539178], [1.22993484959115,-0.563868578181134], [1.0272100765927,0.0996849952196907], [0.979191212438404,1.05053652824665], [1.00733490030391,1.51658415000556], [0.932192535457706,1.06262774912638], [0.643374300839414,-0.0865180803476065], [0.186885168954461,-1.24799408923277], [-0.290842337365465,-1.80035611156538], [-0.669446735516495,-1.58847333561510], [-0.928915624595538,-0.932116966867929], [-1.11758635926997,-0.307879396807850], [-1.26832454569756,-0.00856199983957032], [-1.35755577149251,-0.0303537516690989], [-1.34244112665546,-0.196807620887435], [-1.22227976023299,-0.342062643495923], [-1.04601473486818,-0.390474392372016], [-0.85158508717846,-0.322164402093596], [-0.605033439160543,-0.126930141915954], [-0.218304303942818,0.179551077808122], [0.352173017779006,0.512327303000081], [1.01389600097229,0.733397490572755], [1.55149778750607,0.748740387440165], [1.75499674757591,0.601759717901009], [1.56636057468633,0.457705308377562], [1.12239792537274,0.470849913286519], [0.655802600286141,0.646142040378738], [0.335285115340180,0.824103600255079], [0.173454596506888,0.808068498175582], [0.0666753011315252,0.521488214487996], [-0.0842367474816212,0.0583493276173476], [-0.285604762631464,-0.405958418332253], [-0.465735422869919,-0.747800086512926], [-0.563586691231348,-0.94982272350799], [-0.598110322024572,-1.04736894794361], [-0.65216025756061,-1.04858365218822], [-0.789663117801624,-0.924145633093637], [-0.984704045337959,-0.670740724179446], [-1.12449565589348,-0.359476803003931], [-1.07878318723543,-0.092290938944355], [-0.775555435407062,0.102132527529259], [-0.231610677329856,0.314409560305622], [0.463192794235131,0.663523546243286], [1.17416973448423,1.13156902460931], [1.74112278814906,1.48967153067024], [2.00320855757084,1.42571085941843], [1.8529912317336,0.802460519079555], [1.30747261947211,-0.169219078629572], [0.540237070403222,-1.01621539672694], [-0.177136817092375,-1.3130784867977], [-0.611981468823591,-0.982477824460773], [-0.700240028737747,-0.344919609255406], [-0.572396497740112,0.125083535035390], [-0.450934466600975,0.142553112732280], [-0.494020014254326,-0.211429053871656], [-0.701707589094918,-0.599602868825992], [-0.94721339346157,-0.710669870591623], [-1.09297139748946,-0.47846194092245], [-1.08850658866583,-0.082258450179988], [-0.976082880696692,0.235758921309309], [-0.81885695346771,0.365298185204303], [-0.63165529525553,0.384725179378064], [-0.37983149226421,0.460240196164378], [-0.0375551354277652,0.68580913832794], [0.361996927427804,0.984470835955107], [0.739920615366072,1.13195975020298], [1.03583478061534,0.88812510421667], [1.25614938962160,0.172561520611839], [1.45295030231799,-0.804979390544485], [1.64887158748426,-1.55662011197859], [1.78022721495313,-1.52921975346218], [1.71945683859668,-0.462240366424548], [1.36728880239190,1.31213774341268], [0.740173894315912,2.88362740582926], [-0.0205364331835904,3.20319080963167], [-0.725643970956428,1.75222466531151], [-1.23900506689782,-0.998432917440275], [-1.52651897508678,-3.72752870885448], [-1.62857516631435,-5.00551707196292], [-1.59657420180451,-4.18499132634584], [-1.45489013276495,-1.81759097305637], [-1.21309542313047,0.722029457352468]]) dta = macrodata.load().data[['tbilrate','infl']].view((float,2))[1:] cyc, trend = cffilter(dta) assert_almost_equal(cyc, cfilt_res, 8) #do 1d cyc, trend = cffilter(dta[:,1]) assert_almost_equal(cyc, cfilt_res[:,1], 8)
def setup_class(cls): data = macrodata.load() cls.x = data.data['realgdp'] cls.bc = BoxCox()
# -*- coding: utf-8 -*- """ Created on Sat Jul 06 15:44:57 2013 Author: Josef Perktold """ import numpy as np from numpy.testing import assert_almost_equal from statsmodels.datasets import macrodata import statsmodels.tsa.stattools as tsa_stats # some example data mdata = macrodata.load().data mdata = mdata[['realgdp','realcons']] data = mdata.view((float,2)) data = np.diff(np.log(data), axis=0) #R: lmtest:grangertest r_result = [0.243097, 0.7844328, 195, 2] #f_test gr = tsa_stats.grangercausalitytests(data[:,1::-1], 2, verbose=False) assert_almost_equal(r_result, gr[2][0]['ssr_ftest'], decimal=7) assert_almost_equal(gr[2][0]['params_ftest'], gr[2][0]['ssr_ftest'], decimal=7) lag = 2 print '\nTest Results for %d lags' % lag print print '\n'.join(['%-20s statistic: %f6.4 p-value: %f6.4' % (k, res[0], res[1])
def test_bking2d(): """ Test Baxter-King band-pass filter with 2d input """ bking_results = array([[7.320813, -.0374475], [2.886914, -.0430094], [-6.818976, -.053456], [-13.49436, -.0620739], [-13.27936, -.0626929], [-9.405913, -.0603022], [-5.691091, -.0630016], [-5.133076, -.0832268], [-7.273468, -.1186448], [-9.243364, -.1619868], [-8.482916, -.2116604], [-4.447764, -.2670747], [2.406559, -.3209931], [10.68433, -.3583075], [19.46414, -.3626742], [28.09749, -.3294618], [34.11066, -.2773388], [33.48468, -.2436127], [24.64598, -.2605531], [9.952399, -.3305166], [-4.265528, -.4275561], [-12.59471, -.5076068], [-13.46714, -.537573], [-9.049501, -.5205845], [-3.011248, -.481673], [.5655082, -.4403994], [2.897976, -.4039957], [7.406077, -.3537394], [14.67959, -.2687359], [18.651, -.1459743], [13.05891, .0014926], [-2.945415, .1424277], [-24.08659, .2451936], [-41.86147, .288541], [-48.68383, .2727282], [-43.32689, .1959127], [-31.66654, .0644874], [-20.38356, -.1158372], [-13.76411, -.3518627], [-9.978693, -.6557535], [-3.7704, -1.003754], [10.27108, -1.341632], [31.02847, -1.614486], [51.87613, -1.779089], [66.93117, -1.807459], [73.51951, -1.679688], [73.4053, -1.401012], [69.17468, -.9954996], [59.8543, -.511261], [38.23899, -.0146745], [-.2604809, .4261311], [-49.0107, .7452514], [-91.1128, .8879492], [-112.1574, .8282748], [-108.3227, .5851508], [-86.51453, .2351699], [-59.91258, -.1208998], [-40.01185, -.4297895], [-29.70265, -.6821963], [-22.76396, -.9234254], [-13.08037, -1.217539], [1.913622, -1.57367], [20.44045, -1.927008], [37.32873, -2.229565], [46.79802, -2.463154], [51.95937, -2.614697], [59.67393, -2.681357], [70.50803, -2.609654], [81.27311, -2.301618], [83.53191, -1.720974], [67.72536, -.9837123], [33.78039, -.2261613], [-6.509092, .4546985], [-37.31579, 1.005751], [-46.05207, 1.457224], [-29.81496, 1.870815], [1.416417, 2.263313], [28.31503, 2.599906], [32.90134, 2.812282], [8.949259, 2.83358], [-35.41895, 2.632667], [-84.65775, 2.201077], [-124.4288, 1.598951], [-144.6036, .9504762], [-140.2204, .4187932], [-109.2624, .1646726], [-53.6901, .2034265], [15.07415, .398165], [74.44268, .5427476], [104.0403, .5454975], [101.0725, .4723354], [76.58291, .4626823], [49.27925, .5840143], [36.15751, .7187981], [36.48799, .6058422], [37.60897, .1221227], [27.75998, -.5891272], [4.216643, -1.249841], [-23.20579, -1.594972], [-39.33292, -1.545968], [-36.6134, -1.275494], [-20.90161, -1.035783], [-4.143123, -.9971732], [5.48432, -1.154264], [9.270075, -1.29987], [13.69573, -1.240559], [22.16675, -.9662656], [33.01987, -.6420301], [41.93186, -.4698712], [47.12222, -.4527797], [48.62164, -.4407153], [47.30701, -.2416076], [40.20537, .2317583], [22.37898, .8710276], [-7.133002, 1.426177], [-43.3339, 1.652785], [-78.51229, 1.488021], [-101.3684, 1.072096], [-105.2179, .6496446], [-90.97147, .4193682], [-68.30824, .41847], [-48.10113, .5253419], [-35.60709, .595076], [-31.15775, .5509905], [-31.82346, .3755519], [-32.49278, .1297979], [-28.22499, -.0916165], [-14.42852, -.2531037], [10.1827, -.3220784], [36.64189, -.2660561], [49.43468, -.1358522], [38.75517, -.0279508], [6.447761, .0168735], [-33.15883, .0315687], [-62.60446, .0819507], [-72.87829, .2274033], [-66.54629, .4641401], [-52.61205, .7211093], [-38.06676, .907773], [-26.19963, .9387103], [-16.51492, .7940786], [-7.007577, .5026631], [.6125674, .1224996], [7.866972, -.2714422], [14.8123, -.6273921], [22.52388, -.9124271], [30.65265, -1.108861], [39.47801, -1.199206], [49.05027, -1.19908], [59.02925, -1.139046], [72.88999, -.9775021], [95.08865, -.6592603], [125.8983, -.1609712], [154.4283, .4796201], [160.7638, 1.100565], [130.6092, 1.447148], [67.84406, 1.359608], [-7.070272, .8931825], [-68.08128, .2619787], [-99.39944, -.252208], [-104.911, -.4703874], [-100.2372, -.4430657], [-98.11596, -.390683], [-104.2051, -.5647846], [-114.0125, -.9397582], [-113.3475, -1.341633], [-92.98669, -1.567337], [-51.91707, -1.504943], [-.7313812, -1.30576], [43.22938, -1.17151], [64.62762, -1.136151], [64.07226, -1.050555], [59.35707, -.7308369], [67.06026, -.1766731], [91.87247, .3898467], [124.4591, .8135461], [151.2402, .9644226], [163.0648, .6865934], [154.6432, .0115685]]) X = macrodata.load().data[['realinv', 'cpi']].view((float, 2)) Y = bkfilter(X, 6, 32, 12) assert_almost_equal(Y, bking_results, 4)
import numpy as np from statsmodels.datasets import macrodata from statsmodels.regression.linear_model import OLS from statsmodels.tools.tools import add_constant d2 = macrodata.load().data g_gdp = 400*np.diff(np.log(d2['realgdp'])) g_inv = 400*np.diff(np.log(d2['realinv'])) exogg = add_constant(np.c_[g_gdp, d2['realint'][:-1]], prepend=False) res_olsg = OLS(g_inv, exogg).fit() print(res_olsg.summary()) res_hc0 = res_olsg.get_robustcov_results('HC1') print('\n\n') print(res_hc0.summary()) print('\n\n') res_hac4 = res_olsg.get_robustcov_results('HAC', maxlags=4, use_correction=True) print(res_hac4.summary()) print('\n\n') tt = res_hac4.t_test(np.eye(len(res_hac4.params))) print(tt.summary()) print('\n\n') print(tt.summary_frame()) res_hac4.use_t = False
def setup_class(cls): cls.rng = RandomState(12345) cls.cpi = log(macrodata.load().data['cpi']) cls.inflation = diff(cls.cpi) cls.inflation_change = diff(cls.inflation)
def test_hpfilter(): """ Test Hodrick-Prescott Filter. Results taken from Stata. """ hpfilt_res = array([[3.951191484487844718e+01, 2.670837085155121713e+03], [8.008853245681075350e+01, 2.698712467543189177e+03], [4.887545512195401898e+01, 2.726612544878045810e+03], [3.059193256079834100e+01, 2.754612067439201837e+03], [6.488266733421960453e+01, 2.782816332665780465e+03], [2.304024204546703913e+01, 2.811349757954532834e+03], [-1.355312369487364776e+00, 2.840377312369487299e+03], [-6.746236512580753697e+01, 2.870078365125807522e+03], [-8.136743836853429457e+01, 2.900631438368534418e+03], [-6.016789026443257171e+01, 2.932172890264432681e+03], [-4.636922433138215638e+01, 2.964788224331382025e+03], [-2.069533915570400495e+01, 2.998525339155703932e+03], [-2.162152558595607843e+00, 3.033403152558595593e+03], [-4.718647774311648391e+00, 3.069427647774311481e+03], [-1.355645669169007306e+01, 3.106603456691690099e+03], [-4.436926204475639679e+01, 3.144932262044756499e+03], [-4.332027378211660107e+01, 3.184407273782116590e+03], [-4.454697106352068658e+01, 3.224993971063520803e+03], [-2.629875787765286077e+01, 3.266630757877652741e+03], [-4.426119635629265758e+01, 3.309228196356292756e+03], [-1.443441190762496262e+01, 3.352680411907625057e+03], [-2.026686669186437939e+01, 3.396853866691864368e+03], [-1.913700136208899494e+01, 3.441606001362089046e+03], [-5.482458977940950717e+01, 3.486781589779409387e+03], [-1.596244517937793717e+01, 3.532213445179378141e+03], [-1.374011542874541192e+01, 3.577700115428745448e+03], [1.325482813403914406e+01, 3.623030171865960710e+03], [5.603040174253828809e+01, 3.667983598257461836e+03], [1.030743373627105939e+02, 3.712348662637289181e+03], [7.217534795943993231e+01, 3.755948652040559864e+03], [5.462972503693208637e+01, 3.798671274963067845e+03], [4.407065050666142270e+01, 3.840449349493338559e+03], [3.749016270204992907e+01, 3.881249837297949853e+03], [-1.511244199923112319e+00, 3.921067244199923152e+03], [-9.093507374079763395e+00, 3.959919507374079785e+03], [-1.685361946760258434e+01, 3.997823619467602384e+03], [2.822211031434289907e+01, 4.034790889685657021e+03], [6.117590627896424849e+01, 4.070822093721035344e+03], [5.433135391434370831e+01, 4.105935646085656117e+03], [3.810480376716623141e+01, 4.140188196232833434e+03], [7.042964928802848590e+01, 4.173670350711971878e+03], [4.996346842507591646e+01, 4.206496531574924120e+03], [4.455282059571254649e+01, 4.238825179404287155e+03], [-7.584961950576143863e+00, 4.270845961950576566e+03], [-4.620339247697120300e+01, 4.302776392476971523e+03], [-7.054024364552969928e+01, 4.334829243645529459e+03], [-6.492941099801464588e+01, 4.367188410998014660e+03], [-1.433567024239555394e+02, 4.399993702423955256e+03], [-5.932834493089012540e+01, 4.433344344930889747e+03], [-6.842096758743628016e+01, 4.467249967587436004e+03], [-6.774011924654860195e+01, 4.501683119246548813e+03], [-9.030958565658056614e+01, 4.536573585656580690e+03], [-4.603981499136807543e+01, 4.571808814991368308e+03], [2.588118806672991923e+01, 4.607219811933269739e+03], [3.489419371912299539e+01, 4.642608806280876706e+03], [7.675179642495095322e+01, 4.677794203575049323e+03], [1.635497817724171910e+02, 4.712616218227582976e+03], [1.856079654765617306e+02, 4.746963034523438182e+03], [1.254269446392718237e+02, 4.780825055360728584e+03], [1.387413113837174024e+02, 4.814308688616282780e+03], [6.201826599282230745e+01, 4.847598734007177882e+03], [4.122129542972197669e+01, 4.880966704570278125e+03], [-4.120287475842360436e+01, 4.914722874758424041e+03], [-9.486328233441963675e+01, 4.949203282334419782e+03], [-1.894232132641573116e+02, 4.984718213264157384e+03], [-1.895766639620087517e+02, 5.021518663962008759e+03], [-1.464092413342650616e+02, 5.059737241334265491e+03], [-1.218770668721217589e+02, 5.099388066872122181e+03], [-4.973075629078175552e+01, 5.140393756290781312e+03], [-5.365375213897277717e+01, 5.182600752138972894e+03], [-7.175241524251214287e+01, 5.225824415242512259e+03], [-7.834757283225462743e+01, 5.269846572832254424e+03], [-6.264220687943907251e+01, 5.314404206879438789e+03], [-3.054332122210325906e+00, 5.359185332122210639e+03], [4.808218808024685131e+01, 5.403838811919753425e+03], [2.781399326736391231e+00, 5.448011600673263274e+03], [-2.197570415173231595e+01, 5.491380704151732061e+03], [1.509441335012807031e+02, 5.533624866498719712e+03], [1.658909029574851957e+02, 5.574409097042514986e+03], [2.027292548049981633e+02, 5.613492745195001589e+03], [1.752101578176061594e+02, 5.650738842182393455e+03], [1.452808749847536092e+02, 5.686137125015246056e+03], [1.535481629475025329e+02, 5.719786837052497503e+03], [1.376169777998875361e+02, 5.751878022200112355e+03], [1.257703080340770612e+02, 5.782696691965922582e+03], [-2.524186846895645431e+01, 5.812614868468956047e+03], [-6.546618027042404719e+01, 5.842083180270424236e+03], [1.192352023580315290e+01, 5.871536479764196883e+03], [1.043482970188742911e+02, 5.901368702981125352e+03], [2.581376184768396342e+01, 5.931981238152316109e+03], [6.634330880534071184e+01, 5.963840691194659485e+03], [-4.236780162594641297e+01, 5.997429801625946311e+03], [-1.759397735321817891e+02, 6.033272773532181418e+03], [-1.827933311233055065e+02, 6.071867331123305121e+03], [-2.472312362505917918e+02, 6.113601236250591683e+03], [-2.877470049336488955e+02, 6.158748004933649099e+03], [-2.634066336693540507e+02, 6.207426633669354487e+03], [-1.819572770763625158e+02, 6.259576277076362203e+03], [-1.175034606274621183e+02, 6.314971460627461965e+03], [-4.769898649718379602e+01, 6.373272986497183410e+03], [1.419578280287896632e+01, 6.434068217197121157e+03], [6.267929662760798237e+01, 6.496914703372392069e+03], [6.196413196753746888e+01, 6.561378868032462378e+03], [5.019769125317907310e+01, 6.627066308746821051e+03], [4.665364933213822951e+01, 6.693621350667861407e+03], [3.662430749527266016e+01, 6.760719692504727391e+03], [7.545680850246480986e+01, 6.828066191497535328e+03], [6.052940492147536133e+01, 6.895388595078524304e+03], [6.029518881462354329e+01, 6.962461811185376064e+03], [2.187042136652689805e+01, 7.029098578633473153e+03], [2.380067926824722235e+01, 7.095149320731752596e+03], [-7.119129802169481991e+00, 7.160478129802169860e+03], [-3.194497359120850888e+01, 7.224963973591208742e+03], [-1.897137038934124575e+01, 7.288481370389341464e+03], [-1.832687287845146784e+01, 7.350884872878451461e+03], [4.600482336597542599e+01, 7.412017176634024509e+03], [2.489047706403016491e+01, 7.471709522935970199e+03], [6.305909392127250612e+01, 7.529821906078727807e+03], [4.585212309498183458e+01, 7.586229876905018500e+03], [9.314260180878318351e+01, 7.640848398191216802e+03], [1.129819097095369216e+02, 7.693621090290463144e+03], [1.204662123176703972e+02, 7.744549787682329224e+03], [1.336860614601246198e+02, 7.793706938539875409e+03], [1.034567175813735957e+02, 7.841240282418626521e+03], [1.403118873372050075e+02, 7.887381112662795204e+03], [1.271726169351004501e+02, 7.932425383064899506e+03], [8.271925765282139764e+01, 7.976756742347178260e+03], [-3.197432211752584408e+01, 8.020838322117525422e+03], [-1.150209535194062482e+02, 8.065184953519406008e+03], [-1.064694837456772802e+02, 8.110291483745677397e+03], [-1.190428718925368230e+02, 8.156580871892536379e+03], [-1.353635336292991269e+02, 8.204409533629299403e+03], [-9.644348283027102298e+01, 8.254059482830271008e+03], [-6.143413116116607853e+01, 8.305728131161165948e+03], [-3.019161311097923317e+01, 8.359552613110980019e+03], [1.384333163552582846e+00, 8.415631666836447039e+03], [-4.156016073666614830e+01, 8.474045160736666730e+03], [-4.843882841860977351e+01, 8.534873828418609264e+03], [-6.706442838867042155e+01, 8.598172428388670596e+03], [-2.019644488579979225e+01, 8.663965444885800025e+03], [-4.316446881084630149e+00, 8.732235446881084499e+03], [4.435061943264736328e+01, 8.802952380567352520e+03], [2.820550564155564643e+01, 8.876083494358445023e+03], [5.155624419490777655e+01, 8.951623755805092514e+03], [-4.318760899315748247e+00, 9.029585760899315574e+03], [-6.534632828542271454e+01, 9.110014328285422380e+03], [-7.226757738268497633e+01, 9.192951577382684263e+03], [-9.412378615444868046e+01, 9.278398786154448317e+03], [-1.191240653288368776e+02, 9.366312065328836979e+03], [-4.953669826751865912e+01, 9.456588698267518339e+03], [-6.017251579067487910e+01, 9.549051515790675694e+03], [-5.103438828313483100e+01, 9.643492388283135369e+03], [-7.343057830678117170e+01, 9.739665578306781754e+03], [-2.774245193054957781e+01, 9.837293451930549054e+03], [-3.380481112519191811e+00, 9.936052481112519672e+03], [-2.672779877794346248e+01, 1.003560179877794326e+04], [-3.217342505148371856e+01, 1.013559842505148299e+04], [-4.140567518359966925e+01, 1.023568267518359971e+04], [-6.687756033938057953e+00, 1.033547475603393832e+04], [7.300600408459467872e+01, 1.043456899591540605e+04], [6.862345670680042531e+01, 1.053255554329319966e+04], [5.497882461487461114e+01, 1.062907017538512628e+04], [9.612244093055960548e+01, 1.072379155906944106e+04], [1.978212770103891671e+02, 1.081643272298961165e+04], [1.362772276848754700e+02, 1.090676677231512440e+04], [2.637635494867263333e+02, 1.099469045051327339e+04], [1.876813256815166824e+02, 1.108018567431848351e+04], [1.711447873158413131e+02, 1.116339921268415856e+04], [5.257586460826678376e+01, 1.124459513539173349e+04], [4.710652228531762375e+01, 1.132414447771468258e+04], [-6.237613484241046535e+01, 1.140245113484241119e+04], [-9.982044354035315337e+01, 1.147994844354035376e+04], [-7.916275548997509759e+01, 1.155703075548997549e+04], [-9.526003459472303803e+01, 1.163403003459472347e+04], [-1.147987680369169539e+02, 1.171122876803691724e+04], [-1.900259054765901965e+02, 1.178884990547659072e+04], [-2.212256473439556430e+02, 1.186704464734395515e+04], [-2.071394278781845060e+02, 1.194584542787818464e+04], [-8.968541528904825100e+01, 1.202514641528904758e+04], [-6.189531564415665343e+01, 1.210471231564415575e+04], [-5.662878162551714922e+01, 1.218425178162551674e+04], [-4.961678134413705266e+01, 1.226343478134413635e+04], [-3.836288992144181975e+01, 1.234189588992144127e+04], [-8.956671991456460091e+00, 1.241923867199145570e+04], [3.907028461866866564e+01, 1.249504271538133071e+04], [1.865299000184495526e+01, 1.256888200999815490e+04], [4.279803532226833340e+01, 1.264035496467773191e+04], [3.962735362631610769e+01, 1.270907164637368442e+04], [1.412691291877854383e+02, 1.277466887081221466e+04], [1.256537791844366438e+02, 1.283680822081556289e+04], [7.067642758858892194e+01, 1.289523957241141034e+04], [1.108876647603192396e+02, 1.294979133523968085e+04], [9.956490829291760747e+01, 1.300033609170708223e+04], [1.571612709880937473e+02, 1.304681572901190702e+04], [2.318746375812715996e+02, 1.308923436241872878e+04], [2.635546670125277160e+02, 1.312769433298747208e+04], [2.044220965739259555e+02, 1.316244290342607383e+04], [2.213739418903714977e+02, 1.319389205810962812e+04], [1.020184547767112235e+02, 1.322258154522328914e+04], [-1.072694716663390864e+02, 1.324918947166633916e+04], [-3.490477058718843182e+02, 1.327445770587188417e+04], [-3.975570728533530200e+02, 1.329906107285335383e+04], [-3.331152428080622485e+02, 1.332345624280806260e+04]]) dta = macrodata.load().data['realgdp'] res = column_stack((hpfilter(dta, 1600))) assert_almost_equal(res, hpfilt_res, 6)
def test_hpfilter(): """ Test Hodrick-Prescott Filter. Results taken from Stata. """ hpfilt_res = array([[3.951191484487844718e+01,2.670837085155121713e+03], [8.008853245681075350e+01,2.698712467543189177e+03], [4.887545512195401898e+01,2.726612544878045810e+03], [3.059193256079834100e+01,2.754612067439201837e+03], [6.488266733421960453e+01,2.782816332665780465e+03], [2.304024204546703913e+01,2.811349757954532834e+03], [-1.355312369487364776e+00,2.840377312369487299e+03], [-6.746236512580753697e+01,2.870078365125807522e+03], [-8.136743836853429457e+01,2.900631438368534418e+03], [-6.016789026443257171e+01,2.932172890264432681e+03], [-4.636922433138215638e+01,2.964788224331382025e+03], [-2.069533915570400495e+01,2.998525339155703932e+03], [-2.162152558595607843e+00,3.033403152558595593e+03], [-4.718647774311648391e+00,3.069427647774311481e+03], [-1.355645669169007306e+01,3.106603456691690099e+03], [-4.436926204475639679e+01,3.144932262044756499e+03], [-4.332027378211660107e+01,3.184407273782116590e+03], [-4.454697106352068658e+01,3.224993971063520803e+03], [-2.629875787765286077e+01,3.266630757877652741e+03], [-4.426119635629265758e+01,3.309228196356292756e+03], [-1.443441190762496262e+01,3.352680411907625057e+03], [-2.026686669186437939e+01,3.396853866691864368e+03], [-1.913700136208899494e+01,3.441606001362089046e+03], [-5.482458977940950717e+01,3.486781589779409387e+03], [-1.596244517937793717e+01,3.532213445179378141e+03], [-1.374011542874541192e+01,3.577700115428745448e+03], [1.325482813403914406e+01,3.623030171865960710e+03], [5.603040174253828809e+01,3.667983598257461836e+03], [1.030743373627105939e+02,3.712348662637289181e+03], [7.217534795943993231e+01,3.755948652040559864e+03], [5.462972503693208637e+01,3.798671274963067845e+03], [4.407065050666142270e+01,3.840449349493338559e+03], [3.749016270204992907e+01,3.881249837297949853e+03], [-1.511244199923112319e+00,3.921067244199923152e+03], [-9.093507374079763395e+00,3.959919507374079785e+03], [-1.685361946760258434e+01,3.997823619467602384e+03], [2.822211031434289907e+01,4.034790889685657021e+03], [6.117590627896424849e+01,4.070822093721035344e+03], [5.433135391434370831e+01,4.105935646085656117e+03], [3.810480376716623141e+01,4.140188196232833434e+03], [7.042964928802848590e+01,4.173670350711971878e+03], [4.996346842507591646e+01,4.206496531574924120e+03], [4.455282059571254649e+01,4.238825179404287155e+03], [-7.584961950576143863e+00,4.270845961950576566e+03], [-4.620339247697120300e+01,4.302776392476971523e+03], [-7.054024364552969928e+01,4.334829243645529459e+03], [-6.492941099801464588e+01,4.367188410998014660e+03], [-1.433567024239555394e+02,4.399993702423955256e+03], [-5.932834493089012540e+01,4.433344344930889747e+03], [-6.842096758743628016e+01,4.467249967587436004e+03], [-6.774011924654860195e+01,4.501683119246548813e+03], [-9.030958565658056614e+01,4.536573585656580690e+03], [-4.603981499136807543e+01,4.571808814991368308e+03], [2.588118806672991923e+01,4.607219811933269739e+03], [3.489419371912299539e+01,4.642608806280876706e+03], [7.675179642495095322e+01,4.677794203575049323e+03], [1.635497817724171910e+02,4.712616218227582976e+03], [1.856079654765617306e+02,4.746963034523438182e+03], [1.254269446392718237e+02,4.780825055360728584e+03], [1.387413113837174024e+02,4.814308688616282780e+03], [6.201826599282230745e+01,4.847598734007177882e+03], [4.122129542972197669e+01,4.880966704570278125e+03], [-4.120287475842360436e+01,4.914722874758424041e+03], [-9.486328233441963675e+01,4.949203282334419782e+03], [-1.894232132641573116e+02,4.984718213264157384e+03], [-1.895766639620087517e+02,5.021518663962008759e+03], [-1.464092413342650616e+02,5.059737241334265491e+03], [-1.218770668721217589e+02,5.099388066872122181e+03], [-4.973075629078175552e+01,5.140393756290781312e+03], [-5.365375213897277717e+01,5.182600752138972894e+03], [-7.175241524251214287e+01,5.225824415242512259e+03], [-7.834757283225462743e+01,5.269846572832254424e+03], [-6.264220687943907251e+01,5.314404206879438789e+03], [-3.054332122210325906e+00,5.359185332122210639e+03], [4.808218808024685131e+01,5.403838811919753425e+03], [2.781399326736391231e+00,5.448011600673263274e+03], [-2.197570415173231595e+01,5.491380704151732061e+03], [1.509441335012807031e+02,5.533624866498719712e+03], [1.658909029574851957e+02,5.574409097042514986e+03], [2.027292548049981633e+02,5.613492745195001589e+03], [1.752101578176061594e+02,5.650738842182393455e+03], [1.452808749847536092e+02,5.686137125015246056e+03], [1.535481629475025329e+02,5.719786837052497503e+03], [1.376169777998875361e+02,5.751878022200112355e+03], [1.257703080340770612e+02,5.782696691965922582e+03], [-2.524186846895645431e+01,5.812614868468956047e+03], [-6.546618027042404719e+01,5.842083180270424236e+03], [1.192352023580315290e+01,5.871536479764196883e+03], [1.043482970188742911e+02,5.901368702981125352e+03], [2.581376184768396342e+01,5.931981238152316109e+03], [6.634330880534071184e+01,5.963840691194659485e+03], [-4.236780162594641297e+01,5.997429801625946311e+03], [-1.759397735321817891e+02,6.033272773532181418e+03], [-1.827933311233055065e+02,6.071867331123305121e+03], [-2.472312362505917918e+02,6.113601236250591683e+03], [-2.877470049336488955e+02,6.158748004933649099e+03], [-2.634066336693540507e+02,6.207426633669354487e+03], [-1.819572770763625158e+02,6.259576277076362203e+03], [-1.175034606274621183e+02,6.314971460627461965e+03], [-4.769898649718379602e+01,6.373272986497183410e+03], [1.419578280287896632e+01,6.434068217197121157e+03], [6.267929662760798237e+01,6.496914703372392069e+03], [6.196413196753746888e+01,6.561378868032462378e+03], [5.019769125317907310e+01,6.627066308746821051e+03], [4.665364933213822951e+01,6.693621350667861407e+03], [3.662430749527266016e+01,6.760719692504727391e+03], [7.545680850246480986e+01,6.828066191497535328e+03], [6.052940492147536133e+01,6.895388595078524304e+03], [6.029518881462354329e+01,6.962461811185376064e+03], [2.187042136652689805e+01,7.029098578633473153e+03], [2.380067926824722235e+01,7.095149320731752596e+03], [-7.119129802169481991e+00,7.160478129802169860e+03], [-3.194497359120850888e+01,7.224963973591208742e+03], [-1.897137038934124575e+01,7.288481370389341464e+03], [-1.832687287845146784e+01,7.350884872878451461e+03], [4.600482336597542599e+01,7.412017176634024509e+03], [2.489047706403016491e+01,7.471709522935970199e+03], [6.305909392127250612e+01,7.529821906078727807e+03], [4.585212309498183458e+01,7.586229876905018500e+03], [9.314260180878318351e+01,7.640848398191216802e+03], [1.129819097095369216e+02,7.693621090290463144e+03], [1.204662123176703972e+02,7.744549787682329224e+03], [1.336860614601246198e+02,7.793706938539875409e+03], [1.034567175813735957e+02,7.841240282418626521e+03], [1.403118873372050075e+02,7.887381112662795204e+03], [1.271726169351004501e+02,7.932425383064899506e+03], [8.271925765282139764e+01,7.976756742347178260e+03], [-3.197432211752584408e+01,8.020838322117525422e+03], [-1.150209535194062482e+02,8.065184953519406008e+03], [-1.064694837456772802e+02,8.110291483745677397e+03], [-1.190428718925368230e+02,8.156580871892536379e+03], [-1.353635336292991269e+02,8.204409533629299403e+03], [-9.644348283027102298e+01,8.254059482830271008e+03], [-6.143413116116607853e+01,8.305728131161165948e+03], [-3.019161311097923317e+01,8.359552613110980019e+03], [1.384333163552582846e+00,8.415631666836447039e+03], [-4.156016073666614830e+01,8.474045160736666730e+03], [-4.843882841860977351e+01,8.534873828418609264e+03], [-6.706442838867042155e+01,8.598172428388670596e+03], [-2.019644488579979225e+01,8.663965444885800025e+03], [-4.316446881084630149e+00,8.732235446881084499e+03], [4.435061943264736328e+01,8.802952380567352520e+03], [2.820550564155564643e+01,8.876083494358445023e+03], [5.155624419490777655e+01,8.951623755805092514e+03], [-4.318760899315748247e+00,9.029585760899315574e+03], [-6.534632828542271454e+01,9.110014328285422380e+03], [-7.226757738268497633e+01,9.192951577382684263e+03], [-9.412378615444868046e+01,9.278398786154448317e+03], [-1.191240653288368776e+02,9.366312065328836979e+03], [-4.953669826751865912e+01,9.456588698267518339e+03], [-6.017251579067487910e+01,9.549051515790675694e+03], [-5.103438828313483100e+01,9.643492388283135369e+03], [-7.343057830678117170e+01,9.739665578306781754e+03], [-2.774245193054957781e+01,9.837293451930549054e+03], [-3.380481112519191811e+00,9.936052481112519672e+03], [-2.672779877794346248e+01,1.003560179877794326e+04], [-3.217342505148371856e+01,1.013559842505148299e+04], [-4.140567518359966925e+01,1.023568267518359971e+04], [-6.687756033938057953e+00,1.033547475603393832e+04], [7.300600408459467872e+01,1.043456899591540605e+04], [6.862345670680042531e+01,1.053255554329319966e+04], [5.497882461487461114e+01,1.062907017538512628e+04], [9.612244093055960548e+01,1.072379155906944106e+04], [1.978212770103891671e+02,1.081643272298961165e+04], [1.362772276848754700e+02,1.090676677231512440e+04], [2.637635494867263333e+02,1.099469045051327339e+04], [1.876813256815166824e+02,1.108018567431848351e+04], [1.711447873158413131e+02,1.116339921268415856e+04], [5.257586460826678376e+01,1.124459513539173349e+04], [4.710652228531762375e+01,1.132414447771468258e+04], [-6.237613484241046535e+01,1.140245113484241119e+04], [-9.982044354035315337e+01,1.147994844354035376e+04], [-7.916275548997509759e+01,1.155703075548997549e+04], [-9.526003459472303803e+01,1.163403003459472347e+04], [-1.147987680369169539e+02,1.171122876803691724e+04], [-1.900259054765901965e+02,1.178884990547659072e+04], [-2.212256473439556430e+02,1.186704464734395515e+04], [-2.071394278781845060e+02,1.194584542787818464e+04], [-8.968541528904825100e+01,1.202514641528904758e+04], [-6.189531564415665343e+01,1.210471231564415575e+04], [-5.662878162551714922e+01,1.218425178162551674e+04], [-4.961678134413705266e+01,1.226343478134413635e+04], [-3.836288992144181975e+01,1.234189588992144127e+04], [-8.956671991456460091e+00,1.241923867199145570e+04], [3.907028461866866564e+01,1.249504271538133071e+04], [1.865299000184495526e+01,1.256888200999815490e+04], [4.279803532226833340e+01,1.264035496467773191e+04], [3.962735362631610769e+01,1.270907164637368442e+04], [1.412691291877854383e+02,1.277466887081221466e+04], [1.256537791844366438e+02,1.283680822081556289e+04], [7.067642758858892194e+01,1.289523957241141034e+04], [1.108876647603192396e+02,1.294979133523968085e+04], [9.956490829291760747e+01,1.300033609170708223e+04], [1.571612709880937473e+02,1.304681572901190702e+04], [2.318746375812715996e+02,1.308923436241872878e+04], [2.635546670125277160e+02,1.312769433298747208e+04], [2.044220965739259555e+02,1.316244290342607383e+04], [2.213739418903714977e+02,1.319389205810962812e+04], [1.020184547767112235e+02,1.322258154522328914e+04], [-1.072694716663390864e+02,1.324918947166633916e+04], [-3.490477058718843182e+02,1.327445770587188417e+04], [-3.975570728533530200e+02,1.329906107285335383e+04], [-3.331152428080622485e+02,1.332345624280806260e+04]]) dta = macrodata.load().data['realgdp'] res = column_stack((hpfilter(dta,1600))) assert_almost_equal(res,hpfilt_res,6)
def setup_class(cls): cls.cpi = log(macrodata.load().data['cpi']) cls.inflation = diff(cls.cpi) cls.inflation_change = diff(cls.inflation)
class SetupKPSS(object): data = macrodata.load() x = data.data['realgdp']
cv_50 = mackinnoncrit(nobs=50) cv_inf = mackinnoncrit() assert np.all(cv_50 <= cv_inf) def test_adf_short_timeseries(): # GH 262 import numpy as np from arch.unitroot import ADF x = np.asarray([0., 0., 0., 0., 0., 0., 1., 1., 0., 0.]) adf = ADF(x) assert_almost_equal(adf.stat, -2.236, decimal=3) assert adf.lags == 1 kpss_autolag_data = ((macrodata.load().data['realgdp'], 'c', 9), (sunspots.load().data['SUNACTIVITY'], 'c', 7), (nile.load().data['volume'], 'c', 5), (randhie.load().data['lncoins'], 'ct', 75), (modechoice.load().data['invt'], 'ct', 18)) @pytest.mark.filterwarnings('ignore::DeprecationWarning') @pytest.mark.parametrize('data,trend,lags', kpss_autolag_data) def test_kpss_data_dependent_lags(data, trend, lags): # real GDP from macrodata data set kpss = KPSS(data, trend=trend) assert_equal(kpss.lags, lags) za_test_result = namedtuple('za_test_result',