From 3af5ff0c89f736c64d3d00e452e74e18265d5d20 Mon Sep 17 00:00:00 2001 From: Xun Li Date: Wed, 24 Oct 2018 11:53:04 -0700 Subject: [PATCH] Connect UI with SUR #4 fix an issue when load PLM style data: it seems the order of the rows (X matrix) DOES impact the regression results. --- econometrics/sur_utils.py | 11 ++++++++--- geodaspace/regression/M_regression.py | 12 +++++++----- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/econometrics/sur_utils.py b/econometrics/sur_utils.py index c217cbad..3f26d564 100755 --- a/econometrics/sur_utils.py +++ b/econometrics/sur_utils.py @@ -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): @@ -101,6 +103,9 @@ 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 = {} @@ -108,8 +113,8 @@ def sur_dictxy(db,y_vars,x_vars,space_id=None,time_id=None): 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) diff --git a/geodaspace/regression/M_regression.py b/geodaspace/regression/M_regression.py index 2c5e81ff..000b371f 100644 --- a/geodaspace/regression/M_regression.py +++ b/geodaspace/regression/M_regression.py @@ -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']