Python 在spreg模型中使用分类变量
我想使用一个空间回归模型,使用Python中的spreg包。我的数据由数字变量组成,但我也有一个分类土地覆盖变量(7类),我需要将其包含在模型中。这在使用statsmodels时效果非常好,但我还没有弄清楚如何在spreg中实现这一点 我已尝试手动创建虚拟变量(使用Python 在spreg模型中使用分类变量,python,regression,categorical-data,pysal,spatial-regression,Python,Regression,Categorical Data,Pysal,Spatial Regression,我想使用一个空间回归模型,使用Python中的spreg包。我的数据由数字变量组成,但我也有一个分类土地覆盖变量(7类),我需要将其包含在模型中。这在使用statsmodels时效果非常好,但我还没有弄清楚如何在spreg中实现这一点 我已尝试手动创建虚拟变量(使用pd.get_dummies(数据['land_cover'])),但这会导致我的spreg.OLS模型出现错误消息: RuntimeWarning:在sqrt se_结果中遇到无效值 =np.sqrt(方差) RuntimeWarn
pd.get_dummies(数据['land_cover'])
),但这会导致我的spreg.OLS模型出现错误消息:
RuntimeWarning:在sqrt se_结果中遇到无效值
=np.sqrt(方差)
RuntimeWarning:在sqrt tStat中遇到无效值=
betas[list(range(0,len(vm)))].重塑(len(vm))/np.sqrt(variance)
所有虚拟变量在结果的标准误差、t统计量和概率部分也有nan值(见下面的摘录)
使用具有相同数据/变量的statsmodels,OLS模型的输出如下:
coef std err t P>|t|
temperature -0.0004 2.72e-05 -15.115 0.000
precipitation -1.62e-08 4.12e-10 -39.294 0.000
cover_1 0.0706 0.001 119.653 0.000
cover_2 0.0290 0.001 29.431 0.000
cover_3 0.0100 0.001 7.120 0.000
cover_4 0.0491 0.000 122.972 0.000
cover_5 0.0327 0.000 79.698 0.000
cover_6 0.0140 0.000 35.541 0.000
cover_7 -0.0026 0.001 -4.223 0.000
如何将分类数据纳入spreg模型(例如spreg.GM_Lag)?我猜您遇到了“虚拟变量陷阱” statsmodels版本中没有常量,但它包含在spreg版本中
如果不在分类变量中删除引用级别,那么它将与常量完全共线。设计矩阵为单数矩阵,标准产品矩阵x'x不可逆。非常感谢您的快速回答!我不知道“虚拟变量陷阱”。在指定参考级别后,它确实起作用。
coef std err t P>|t|
temperature -0.0004 2.72e-05 -15.115 0.000
precipitation -1.62e-08 4.12e-10 -39.294 0.000
cover_1 0.0706 0.001 119.653 0.000
cover_2 0.0290 0.001 29.431 0.000
cover_3 0.0100 0.001 7.120 0.000
cover_4 0.0491 0.000 122.972 0.000
cover_5 0.0327 0.000 79.698 0.000
cover_6 0.0140 0.000 35.541 0.000
cover_7 -0.0026 0.001 -4.223 0.000