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

为何poly函数可支持无序因子?此前版本并不支持

R中poly函数处理因子的版本行为差异

代码运行结果对比

未转换为因子的代码

以下代码在R 4.5.1和R 4.2.0版本中均无法执行:

set.seed(123456)
hf <- rnorm(5) 
x <- sample(c("a", "b", "c"), size = 5, replace = TRUE) 
lm(hf ~ poly(x, 2)) 

执行后会抛出错误:x - xbar : non-numeric argument to binary operator

转换为因子后的代码

以下代码在R 4.5.1(2025-06-13 ucrt)版本中可正常运行,但在R 4.2.0(2022-04-22 ucrt)版本中无法运行:

set.seed(123456)
hf <- rnorm(5) 
x <- sample(c("a", "b", "c"), size = 5, replace = TRUE) 
x <- as.factor(x)
lm(hf ~ poly(x, 2)) 

疑问与观点

目前在CRAN的版本更新日志中,未找到poly或stats:::contr.poly的相关变更记录。

我认为第二种情况的行为不符合预期——poly本不应作用于普通因子。

补充:lm模型中的有序因子会自动通过正交多项式(poly)处理。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 04:02:04