Python 在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

我想使用一个空间回归模型,使用Python中的spreg包。我的数据由数字变量组成,但我也有一个分类土地覆盖变量(7类),我需要将其包含在模型中。这在使用statsmodels时效果非常好,但我还没有弄清楚如何在spreg中实现这一点

我已尝试手动创建虚拟变量(使用
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