示例#1
0
 def test_regi_err(self):
     #Artficial:
     n = 256
     x1 = np.random.uniform(-10, 10, (n, 1))
     x2 = np.random.uniform(1, 5, (n, 1))
     q = x2 + np.random.normal(0, 1, (n, 1))
     x = np.hstack((x1, x2))
     y = np.dot(np.hstack((np.ones(
         (n, 1)), x)), np.array([[1], [0.5], [2]])) + np.random.normal(
             0, 1, (n, 1))
     latt = int(np.sqrt(n))
     regi = [0] * (n / 2) + [1] * (n / 2)
     model = TSLS_Regimes(y,
                          x1,
                          regimes=regi,
                          q=q,
                          yend=x2,
                          regime_err_sep=True,
                          sig2n_k=False)
     model1 = TSLS(y[0:(n / 2)].reshape((n / 2), 1),
                   x1[0:(n / 2)],
                   yend=x2[0:(n / 2)],
                   q=q[0:(n / 2)],
                   sig2n_k=False)
     model2 = TSLS(y[(n / 2):n].reshape((n / 2), 1),
                   x1[(n / 2):n],
                   yend=x2[(n / 2):n],
                   q=q[(n / 2):n],
                   sig2n_k=False)
     tbetas = np.vstack((model1.betas, model2.betas))
     np.testing.assert_allclose(model.betas, tbetas)
     vm = np.hstack((model1.vm.diagonal(), model2.vm.diagonal()))
     np.testing.assert_allclose(model.vm.diagonal(), vm, RTOL)
     #Columbus:
     reg = TSLS_Regimes(self.y,
                        self.x,
                        regimes=self.regimes,
                        yend=self.yd,
                        q=self.q,
                        regime_err_sep=False)
     tbetas = np.array([
         [80.23408166],
         [5.48218125],
         [82.98396737],
         [0.49775429],
         [-3.72663211],
         [-1.27451485],
     ])
     np.testing.assert_allclose(tbetas, reg.betas, RTOL)
     vm = np.array([495.16048523, 78.89742341, 0., 0., -47.12971066, 0.])
     np.testing.assert_allclose(reg.vm[0], vm, RTOL)
     u_3 = np.array([[25.57676372], [-17.94922796], [-26.71588759]])
     np.testing.assert_allclose(reg.u[0:3], u_3, RTOL)
     predy_3 = np.array([[-9.85078372], [36.75098196], [57.34266859]])
     np.testing.assert_allclose(reg.predy[0:3], predy_3, RTOL)
     chow_regi = np.array([[0.00616179,
                            0.93743265], [0.3447218, 0.55711631],
                           [0.37093662, 0.54249417]])
     np.testing.assert_allclose(reg.chow.regi, chow_regi, RTOL)
     np.testing.assert_allclose(reg.chow.joint[0], 1.1353790779821029, RTOL)
示例#2
0
 def test_basic(self):
     reg = TSLS(self.y, self.X, self.yd, self.q)
     betas = np.array([[ 88.46579584], [  0.5200379 ], [ -1.58216593]])
     np.testing.assert_array_almost_equal(reg.betas, betas, 7)
     h_0 = np.array([  1.   ,  19.531,   5.03 ])
     np.testing.assert_array_almost_equal(reg.h.toarray()[0], h_0)
     hth = np.array([[    49.        ,    704.371999  ,    139.75      ],
                     [   704.371999  ,  11686.67338121,   2246.12800625],
                     [   139.75      ,   2246.12800625,    498.5851    ]])
     np.testing.assert_array_almost_equal(reg.hth, hth, 7)
     hthi = np.array([[ 0.1597275 , -0.00762011, -0.01044191],
                     [-0.00762011,  0.00100135, -0.0023752 ],
                     [-0.01044191, -0.0023752 ,  0.01563276]]) 
     np.testing.assert_array_almost_equal(reg.hthi, hthi, 7)
     self.assertEqual(reg.k, 3)
     self.assertEqual(reg.kstar, 1)
     self.assertAlmostEqual(reg.mean_y, 35.128823897959187, 7)
     self.assertEqual(reg.n, 49)
     pfora1a2 = np.array([[ 9.58156106, -0.22744226, -0.13820537],
                          [ 0.02580142,  0.08226331, -0.03143731],
                          [-3.13896453, -0.33487872,  0.20690965]]) 
     np.testing.assert_array_almost_equal(reg.pfora1a2, pfora1a2, 7)
     predy_5 = np.array([[-28.68949467], [ 28.99484984], [ 55.07344824], [ 38.26609504], [ 57.57145851]]) 
     np.testing.assert_array_almost_equal(reg.predy[0:5], predy_5, 7)
     q_5 = np.array([[ 5.03], [ 4.27], [ 3.89], [ 3.7 ], [ 2.83]])
     np.testing.assert_array_equal(reg.q[0:5], q_5)
     self.assertAlmostEqual(reg.sig2n_k, 587.56797852699822, 7)
     self.assertAlmostEqual(reg.sig2n, 551.5944288212637, 7)
     self.assertAlmostEqual(reg.sig2, 551.5944288212637, 7)
     self.assertAlmostEqual(reg.std_y, 16.732092091229699, 7)
     u_5 = np.array([[ 44.41547467], [-10.19309584], [-24.44666724], [ -5.87833504], [ -6.83994851]]) 
     np.testing.assert_array_almost_equal(reg.u[0:5], u_5, 7)
     self.assertAlmostEqual(reg.utu, 27028.127012241919, 7)
     varb = np.array([[ 0.41526237,  0.01879906, -0.01730372],
                      [ 0.01879906,  0.00362823, -0.00184604],
                      [-0.01730372, -0.00184604,  0.0011406 ]]) 
     np.testing.assert_array_almost_equal(reg.varb, varb, 7)
     vm = np.array([[ 229.05640809,   10.36945783,   -9.54463414],
                    [  10.36945783,    2.0013142 ,   -1.01826408],
                    [  -9.54463414,   -1.01826408,    0.62914915]]) 
     np.testing.assert_array_almost_equal(reg.vm, vm, 7)
     x_0 = np.array([  1.   ,  19.531])
     np.testing.assert_array_almost_equal(reg.x.toarray()[0], x_0, 7)
     y_5 = np.array([[ 15.72598 ], [ 18.801754], [ 30.626781], [ 32.38776 ], [ 50.73151 ]]) 
     np.testing.assert_array_almost_equal(reg.y[0:5], y_5, 7)
     yend_5 = np.array([[ 80.467003], [ 44.567001], [ 26.35    ], [ 33.200001], [ 23.225   ]]) 
     np.testing.assert_array_almost_equal(reg.yend[0:5], yend_5, 7)
     z_0 = np.array([  1.      ,  19.531   ,  80.467003]) 
     np.testing.assert_array_almost_equal(reg.z.toarray()[0], z_0, 7)
     zthhthi = np.array([[  1.00000000e+00,  -1.66533454e-16,   4.44089210e-16],
                         [  0.00000000e+00,   1.00000000e+00,   0.00000000e+00],
                         [  1.26978671e+01,   1.05598709e+00,   3.70212359e+00]]) 
     np.testing.assert_array_almost_equal(reg.zthhthi, zthhthi, 7)
     self.assertAlmostEqual(reg.pr2, 0.27936137128173893, 7)
     z_stat = np.array([[  5.84526447e+00,   5.05764078e-09],
                        [  3.67601567e-01,   7.13170346e-01],
                        [ -1.99468913e+00,   4.60767956e-02]])
     np.testing.assert_array_almost_equal(reg.z_stat, z_stat, 7)
     title = 'TWO STAGE LEAST SQUARES'
     self.assertEqual(reg.title, title)
示例#3
0
 def test_names(self):
     w = pysal.queen_from_shapefile(pysal.examples.get_path('columbus.shp'))
     gwk = pysal.kernelW_from_shapefile(pysal.examples.get_path('columbus.shp'),k=5,function='triangular', fixed=False)
     name_x = ['inc']
     name_y = 'crime'
     name_yend = ['hoval']
     name_q = ['discbd']
     name_w = 'queen'
     name_gwk = 'k=5'
     name_ds = 'columbus'
     reg = TSLS(self.y, self.X, self.yd, self.q,
             spat_diag=True, w=w, robust='hac', gwk=gwk,
             name_x=name_x, name_y=name_y, name_q=name_q, name_w=name_w,
             name_yend=name_yend, name_gwk=name_gwk, name_ds=name_ds)
     betas = np.array([[ 88.46579584], [  0.5200379 ], [ -1.58216593]])
     np.testing.assert_array_almost_equal(reg.betas, betas, 7)
     vm = np.array([[ 225.0795089 ,   17.11660041,  -12.22448566],
                    [  17.67097154,    2.47483461,   -1.4183641 ],
                    [ -12.45093722,   -1.40495464,    0.8700441 ]])
     np.testing.assert_array_almost_equal(reg.vm, vm, 7)
     self.assertListEqual(reg.name_x, ['CONSTANT']+name_x)
     self.assertListEqual(reg.name_yend, name_yend)
     self.assertListEqual(reg.name_q, name_q)
     self.assertEqual(reg.name_y, name_y)
     self.assertEqual(reg.name_w, name_w)
     self.assertEqual(reg.name_gwk, name_gwk)
     self.assertEqual(reg.name_ds, name_ds)
示例#4
0
 def test_n_k(self):
     reg = TSLS(self.y, self.X, self.yd, self.q, sig2n_k=True)
     betas = np.array([[ 88.46579584], [  0.5200379 ], [ -1.58216593]])
     np.testing.assert_array_almost_equal(reg.betas, betas, 7)
     vm = np.array([[ 243.99486949,   11.04572682,  -10.16711028],
                    [  11.04572682,    2.13183469,   -1.08467261],
                    [ -10.16711028,   -1.08467261,    0.67018062]]) 
     np.testing.assert_array_almost_equal(reg.vm, vm, 7)
示例#5
0
 def test_white(self):
     reg = TSLS(self.y, self.X, self.yd, self.q, robust='white')
     betas = np.array([[ 88.46579584], [  0.5200379 ], [ -1.58216593]])
     np.testing.assert_array_almost_equal(reg.betas, betas, 7)
     vm = np.array([[ 208.27139316,   15.6687805 ,  -11.53686154],
                    [  15.6687805 ,    2.26882747,   -1.30312033],
                    [ -11.53686154,   -1.30312033,    0.81940656]]) 
     np.testing.assert_array_almost_equal(reg.vm, vm, 7)
     self.assertEqual(reg.robust, 'white')
示例#6
0
 def test_hac(self):
     gwk = pysal.kernelW_from_shapefile(pysal.examples.get_path('columbus.shp'),k=5,function='triangular', fixed=False)
     reg = TSLS(self.y, self.X, self.yd, self.q, robust='hac', gwk=gwk)
     betas = np.array([[ 88.46579584], [  0.5200379 ], [ -1.58216593]])
     np.testing.assert_array_almost_equal(reg.betas, betas, 7)
     vm = np.array([[ 225.0795089 ,   17.11660041,  -12.22448566],
                    [  17.67097154,    2.47483461,   -1.4183641 ],
                    [ -12.45093722,   -1.40495464,    0.8700441 ]]) 
     np.testing.assert_array_almost_equal(reg.vm, vm, 7)
     self.assertEqual(reg.robust, 'hac')
示例#7
0
 def test_spatial(self):
     w = pysal.queen_from_shapefile(pysal.examples.get_path('columbus.shp'))
     reg = TSLS(self.y, self.X, self.yd, self.q, spat_diag=True, w=w)
     betas = np.array([[ 88.46579584], [  0.5200379 ], [ -1.58216593]])
     np.testing.assert_array_almost_equal(reg.betas, betas, 7)
     vm = np.array([[ 229.05640809,   10.36945783,   -9.54463414],
                    [  10.36945783,    2.0013142 ,   -1.01826408],
                    [  -9.54463414,   -1.01826408,    0.62914915]]) 
     np.testing.assert_array_almost_equal(reg.vm, vm, 7)
     ak_test = np.array([ 1.16816972,  0.27977763])
     np.testing.assert_array_almost_equal(reg.ak_test, ak_test, 7)
示例#8
0
 def setUp(self):
     db = pysal.open(pysal.examples.get_path("columbus.dbf"), 'r')
     y = np.array(db.by_col("CRIME"))
     y = np.reshape(y, (49, 1))
     self.y = y
     X = []
     X.append(db.by_col("INC"))
     X = np.array(X).T
     self.X = X
     yd = []
     yd.append(db.by_col("HOVAL"))
     yd = np.array(yd).T
     self.yd = yd
     q = []
     q.append(db.by_col("DISCBD"))
     q = np.array(q).T
     self.q = q
     reg = TSLS(y, X, yd, q=q)
     self.reg = reg
     w = pysal.rook_from_shapefile(pysal.examples.get_path("columbus.shp"))
     w.transform = 'r'
     self.w = w
示例#9
0
from pysal.common import RTOL

# create regression object used by the apatial tests
db = pysal.open(pysal.examples.get_path("columbus.dbf"),'r')
y = np.array(db.by_col("CRIME"))
y = np.reshape(y, (49,1))
X = []
X.append(db.by_col("INC"))
X = np.array(X).T    
yd = []
yd.append(db.by_col("HOVAL"))
yd = np.array(yd).T
q = []
q.append(db.by_col("DISCBD"))
q = np.array(q).T
reg = TSLS(y, X, yd, q)

# create regression object for spatial test
db = pysal.open(pysal.examples.get_path("columbus.dbf"),'r')
y = np.array(db.by_col("HOVAL"))
y = np.reshape(y, (49,1))
X = np.array(db.by_col("INC"))
X = np.reshape(X, (49,1))
yd = np.array(db.by_col("CRIME"))
yd = np.reshape(yd, (49,1))
q = np.array(db.by_col("DISCBD"))
q = np.reshape(q, (49,1))
w = pysal.rook_from_shapefile(pysal.examples.get_path("columbus.shp")) 
w.transform = 'r'
regsp = GM_Lag(y, X, w=w, yend=yd, q=q, w_lags=2)