问题描述
我正在实施回归。在我的回归方程中,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")