You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GLM中R风格公式**语法实现三次幂失效,是否为Bug?

问题解答

这并不是Bug,而是statsmodels公式语法的规则导致的差异:

  • 在statsmodels的公式语法中,**运算符有特殊含义,并非直接表示数学上的幂运算:

    • 用于变量之间时,a**b表示包含a、b以及它们的交互项a:b;
    • 用于单个变量后接数字(如workhours**3),它会被解析为生成该变量的所有低阶到指定阶数的多项式项,而非单独的三次项。由于你已经显式写了workhours,重复项会被自动剔除,最终并没有加入预期的单独三次项。
  • np.power(workhours, 3)是直接调用numpy的幂运算函数,statsmodels会将其作为数值计算处理,生成单独的workhours三次项,因此model2能成功纳入。

如果要在公式中用**实现单独三次项,需要用I()包裹来强制进行数学运算,写法如下:

model1 = glm(formula="wage ~ workhours + I(workhours**3) + C(gender)", data=df, family=sm.families.Gaussian())

内容的提问来源于stack exchange,提问作者Xtiaan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 15:15:16