Skip to content

Commit

Permalink
Connect UI with SUR GeoDaCenter#4
Browse files Browse the repository at this point in the history
fix an issue when load PLM style data: it seems the order of the rows (X matrix) DOES impact the regression results.
  • Loading branch information
lixun910 committed Oct 24, 2018
1 parent 2ae0e10 commit 3af5ff0
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 8 deletions.
11 changes: 8 additions & 3 deletions econometrics/sur_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,9 @@ def sur_dictxy(db,y_vars,x_vars,space_id=None,time_id=None):
longxc = np.hstack((np.ones((bign, 1)), longx))
xvars = x_vars[0][:]
xvars.insert(0,c)


skeys = []
sdict = {}
tmpy = { t : {} for t in tt1 }
tmpX = { t : {} for t in tt1 }
for i in range(bign):
Expand All @@ -101,15 +103,18 @@ def sur_dictxy(db,y_vars,x_vars,space_id=None,time_id=None):
tmpy[tval][sval] = y[i]
if tmpX.has_key(tval):
tmpX[tval][sval] = longxc[i]
if not sdict.has_key(sval):
skeys.append(sval)
sdict[sval] = True

bigy = {}
bigX = {}
bigy_vars = {}
bigX_vars = {}
for r in range(n_eq):
tval = tt2[r]
bigy[r] = np.array(tmpy[tval].values())
bigX[r] = np.array(tmpX[tval].values())
bigy[r] = np.array([tmpy[tval][v] for v in skeys])
bigX[r] = np.array([tmpX[tval][v] for v in skeys])
bigy_vars[r] = y_vars[0] + "_" + tt3[r]
bigX_vars[r] = [i + "_" + tt3[r] for i in xvars]
return (bigy,bigX,bigy_vars,bigX_vars)
Expand Down
12 changes: 7 additions & 5 deletions geodaspace/regression/M_regression.py
Original file line number Diff line number Diff line change
Expand Up @@ -423,11 +423,13 @@ def run(self, path=None, predy_resid=None):
elif name_s and name_t and len(name_s)>0 and len(name_t) > 0:
y, x, name_y, x_names = sur_dictxy(db, [name_y], [x_names], space_id=[name_s], time_id=[name_t])

yend_var1 = [ name.split(',') for name in ye_names]
ye, ye_names = sur_dictZ(db,yend_var1, form="plm", space_id=[name_s], time_id=[name_t])

q_var1 = [ name.split(',') for name in h_names]
h, h_names = sur_dictZ(db,q_var1, form="plm", space_id=[name_s], time_id=[name_t])
if len(ye_names) > 0:
yend_var1 = [ name.split(',') for name in ye_names]
ye, ye_names = sur_dictZ(db,yend_var1, form="plm", space_id=[name_s], time_id=[name_t])

if len(h_names) > 0:
q_var1 = [ name.split(',') for name in h_names]
h, h_names = sur_dictZ(db,q_var1, form="plm", space_id=[name_s], time_id=[name_t])

config = data['config']

Expand Down

0 comments on commit 3af5ff0

Please sign in to comment.