PatsyError:错误评估因素:NameError:名称''由于列名中的特殊字符而未定义回归

问题描述

我正在实施回归。在我的回归方程中,Output_variable是我的y变量,input2,input4,Input5&1,Input6-3是x变量。这些基本上都是df中的列。

import statsmodels.formula.api as sm
model = sm.ols(formula='Output_variable ~  Input2 + input4 + Input5&1 + input6-3',data=df)
fitted1 = model.fit()
fitted1.summary()

我收到错误消息:

 PatsyError                                Traceback (most recent call last)
    <ipython-input-73-20a8ca10f7b8> in <module>
          1 import statsmodels.formula.api as sm
    ----> 2 model = sm.ols(formula='Output_variable ~  Input2 + input4 + Input5&1 + input6-3',data=df)
    
PatsyError: Error evaluating factor: NameError: name 'Input5' is not defined

未定义input6时出现相同错误

基本上只要我的列名具有特殊字符(例如Input5中包含&,而input6中具有-登录),就会出现问题,并且我会出现patsyerror。 / p>

该如何解决

解决方法

您可以执行以下操作:

import statsmodels.formula.api as sm
model = sm.ols(formula='Output_variable ~  Input2 + input4 + Q("Input5&1") + Q("input6-3")',data=df)
fitted1 = model.fit()
fitted1.summary()

问题出在patsy中,您不能放置特殊字符,例如'&'和'-'。幸运的是,开发人员解决了这个问题,并允许使用Q("full text")

进行绕过