在 GLM 中实现幂(即平方)时,R 式公式会出现错误

Xti*_*aan 3 python regression glm statsmodels

在下面的 python 代码中,glm 模型规范不包括 model1 中的三次方,但在 model2 中包括:

model1 = glm(formula="wage ~ workhours + workhours**3           + C(gender)", data=df, family=sm.families.Gaussian())
model2 = glm(formula="wage ~ workhours + np.power(workhours, 3) + C(gender)", data=df, family=sm.families.Gaussian())
Run Code Online (Sandbox Code Playgroud)

这是一个错误吗?根据文档 **x 计算某物的 3 次方。

use*_*ica 6

**公式中的 被视为公式运算符,而不是常规幂运算。^(这与R 公式中的工作原理类似。)

(a+b+c+d)**3意味着模型应包括abcd以及这些变量之间最多三阶的所有交互作用。

workhours**3意味着模型应该包括workhours...之间的所有相互作用...只是workhours...最多三阶...但没有这样的相互作用项,所以它相当于只是workhours

相反,np.power(workhours, 3)被视为Python代码,并计算您想要的能力。

statsmodels 使用patsy进行公式处理,因此有关公式语言的完整详细信息,您可以查看patsy 文档