68
71
assert_almost_equal(self.res1.llf, self.res2.llf, DECIMAL)
70
73
def test_AIC(self):
71
aic = self.res1.information_criteria()['aic']
72
assert_almost_equal(aic, self.res2.AIC, DECIMAL)
74
assert_almost_equal(self.res1.aic, self.res2.AIC, DECIMAL)
74
76
def test_BIC(self):
75
bic = self.res1.information_criteria()['bic']
76
assert_almost_equal(bic, self.res2.BIC, DECIMAL)
78
@dec.skipif(True, "Results not included yet")
79
def test_resids(self):
77
assert_almost_equal(self.res1.bic, self.res2.BIC, DECIMAL)
79
#TODO: add residuals from another package or R
80
# def test_resids(self):
81
# assert_almost_equal(self.res1.resid, self.res2.resid, DECIMAL)
82
83
class test_ols(check_regression_results):
83
84
def __init__(self):
98
99
def check_params(self, params1, params2):
99
100
assert_almost_equal(params1, params2, DECIMAL)
102
class TestFtest(object):
104
from models.datasets.longley.data import load
107
self.data.exog = add_constant(self.data.exog)
108
self.res1 = OLS(data.endog, data.exog).fit()
109
self.R = np.identity(7)[:-1,:]
110
self.Ftest = self.res1.Ftest(self.R)
113
assert_almost_equal(self.Ftest.F, self.res1.F, DECIMAL)
116
assert_almost_equal(self.Ftest.p_val, self.res1.F_p, DECIMAL)
118
def test_Df_denom(self):
119
assert_equal(self.Ftest.df_denom, self.res1.df_resid)
121
def test_Df_num(self):
122
assert_equal(self.Ftest.df_num, tools.rank(self.R))
124
class TestFTest2(TestFtest):
126
The first set of tests is a test of the fully specified model.
127
The second set of tests is a joint test that the coefficient on
128
GNP = the coefficient on UNEMP and that the coefficient on
129
POP = the coefficient on YEAR for the Longley dataset.
134
raise SkipTest, "Rpy not installed"
137
self.R2 = [[0,1,-1,0,0,0,0],[0, 0, 0, 0, 1, -1, 0]]
138
self.Ftest2 = self.res1.Ftest(self.R2)
139
self.R_Results = RModel(self.data.endog, self.data.exog, r.lm).robj
140
self.F = r.linear_hypothesis(self.R_Results,
141
r.c('x.2 = x.3', 'x.5 = x.6'))
143
raise SkipTest, "car library not installed for R"
146
assert_almost_equal(self.Ftest2.F, self.F['F'][1], DECIMAL)
149
assert_almost_equal(self.Ftest2.p_val, self.F['Pr(>F)'][1], DECIMAL)
151
def test_Df_denom(self):
152
assert_equal(self.Ftest2.df_denom, self.F['Res.Df'][0])
154
def test_Df_num(self):
155
self.F['Res.Df'].reverse()
156
assert_equal(self.Ftest2.df_num, np.subtract.reduce(self.F['Res.Df']))
158
class TestTtest(object):
160
Test individual t-tests. Ie., are the coefficients significantly
164
from models.datasets.longley.data import load
166
data.exog = add_constant(data.exog)
167
self.res1 = OLS(data.endog, data.exog).fit()
171
raise SkipTest, "Rpy not installed"
173
self.R = np.identity(len(self.res1.params))
174
self.Ttest = self.res1.Ttest(self.R)
177
assert_almost_equal(np.diag(self.Ttest.t), self.res1.t(), DECIMAL)
180
assert_almost_equal(np.diag(self.Ttest.sd), self.res1.bse, DECIMAL)
182
def test_p_val(self):
183
assert_almost_equal(np.diag(self.Ttest.p_val),
184
t.sf(np.abs(self.res1.t()),self.res1.df_resid), DECIMAL)
186
def test_Df_denom(self):
187
assert_equal(self.Ttest.df_denom, self.res1.df_resid)
189
def test_effect(self):
190
assert_almost_equal(self.Ttest.effect, self.res1.params)
193
class TestTtest2(TestTtest):
195
Tests the hypothesis that the coefficients on POP and YEAR
200
raise SkipTest, "Rpy not installed"
203
R = np.zeros(len(self.res1.params))
206
self.Ttest1 = self.res1.Ttest(self.R)
207
self.Ttest2 = r.linear_hypothesis(self.R_Results['F'], 'x.5 = x.6')
208
t = np.inner(self.R, self.res1.params)/\
209
(np.sign(np.inner(self.R, self.res1.params))*\
210
np.sqrt(self.Ttest2['F'][1]))
212
effect = np.inner(self.R, self.res1.params)
215
raise SkipTest, "car library not installed for R"
218
assert_equal(self.Ttest1.t, self.t, DECIMAL)
221
assert_almost_equal(self.Ttest1.sd, effect/t, DECIMAL)
223
def test_p_val(self):
224
assert_almost_equal(self.Ftest2.p_val, t.sf(self.t, self.F['Res.Df'][0]),
227
def test_Df_denom(self):
228
assert_equal(self.Ftest2.df_denom, self.F['Res.Df'][0])
230
def test_effect(self):
231
assert_equal(self.Ttest1.effect, self.effect, DECIMAL)
101
234
class test_gls(object):
103
236
These test results were obtained by replication with R.