问题描述
我正在使用pysal
软件包进行一些空间回归。我采用的示例here的数据集在这里:
这就是我在做什么:
abb_link = '/Users/emassaro/Downloads/listings.csv.gz'
lst = pd.read_csv(abb_link)
x = ['host_listings_count','bathrooms','bedrooms','beds','guests_included']
def has_pool(a):
if 'Pool' in a:
return 1
else:
return 0
lst['pool'] = lst['amenities'].apply(has_pool)
yxs = lst.loc[:,x + ['pool','price']].dropna()
y = np.log( yxs['price'].apply(lambda x: float(x.strip('$').replace(',','')))+ 0.000001)
w = ps.knnW_from_array(lst.loc[yxs.index,['longitude','latitude']].values)
w.transform = 'R'
m1 = ps.spreg.OLS(y.values[:,None],yxs.drop('price',axis=1).values,\
w=w,spat_diag=True,\
name_x=yxs.drop('price',axis=1).columns.tolist(),name_y='ln(price)')
但是,如果我想使用其他模型,例如GM_Lag
m2 = ps.spreg.GM_Lag(y.values[:,axis=1),w=w,spat_diag=True)
我收到以下错误
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-36-2a848adc0fbe> in <module>
----> 1 m2 = ps.spreg.GM_Lag(yy,y2,spat_diag=True)
/usr/local/lib/python3.8/site-packages/pysal/spreg/twosls_sp.py in __init__(self,y,x,yend,q,w,w_lags,lag_q,robust,gwk,sig2n_k,spat_diag,vm,name_y,name_x,name_yend,name_q,name_w,name_gwk,name_ds)
495 self.name_w = USER.set_name_w(name_w,w)
496 self.name_gwk = USER.set_name_w(name_gwk,gwk)
--> 497 SUMMARY.GM_Lag(reg=self,vm=vm,spat_diag=spat_diag)
498
499
/usr/local/lib/python3.8/site-packages/pysal/spreg/summary_output.py in GM_Lag(reg,regimes)
152 reg.__summary = {}
153 # compute diagnostics and organize summary output
--> 154 beta_diag_lag(reg,reg.robust,error=False)
155 if spat_diag:
156 # compute diagnostics and organize summary output
/usr/local/lib/python3.8/site-packages/pysal/spreg/summary_output.py in beta_diag_lag(reg,error)
719 reg.std_err = diagnostics.se_betas(reg)
720 reg.z_stat = diagnostics.t_stat(reg,z_stat=True)
--> 721 reg.pr2 = diagnostics_tsls.pr2_aspatial(reg)
722 # organize summary output
723 reg.__summary['summary_std_err'] = robust
/usr/local/lib/python3.8/site-packages/pysal/spreg/diagnostics_tsls.py in pr2_aspatial(tslsreg)
213 y = tslsreg.y
214 predy = tslsreg.predy
--> 215 pr = pearsonr(y,predy)[0]
216 pr2_result = float(pr ** 2)
217 return pr2_result
/usr/local/lib/python3.8/site-packages/scipy/stats/stats.py in pearsonr(x,y)
3854 return dtype(np.sign(x[1] - x[0])*np.sign(y[1] - y[0])),1.0
3855
-> 3856 xmean = x.mean(dtype=dtype)
3857 ymean = y.mean(dtype=dtype)
3858
/usr/local/lib/python3.8/site-packages/numpy/core/_methods.py in _mean(a,axis,dtype,out,keepdims)
158 is_float16_result = True
159
--> 160 ret = umr_sum(arr,keepdims)
161 if isinstance(ret,mu.ndarray):
162 ret = um.true_divide(
TypeError: No loop matching the specified signature and casting was found for ufunc add
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)