我有一个简短的问题,为什么下面的操作不起作用:
BAD ~ A + B + C # 正常情况BAD ~ A + B^2 + C^2 # 操作后
解决方案是什么,谢谢!
回答:
R的公式接口不是为符号数学设计的,而是用于建模。如果你想在模型中使用二次项,那么请学习使用poly
函数。
BAD ~ A + poly(B, 2) + poly(C,2)
避免使用I(C^2)
的诱惑,因为这会导致统计推断效果不佳。有一些包可以用于“方程”的符号操作:我记得的一个包名是polynom
。还有一个名为RYacas
的包,它是外部符号数学包Yacas的封装器。
如果你从字符值开始构建模型组件,这将把这些部分作为文本组装起来,最后转换为公式类:
> y = "Y"> preds <- LETTERS[1:3]> as.formula( paste( y,"~", paste( paste0( "poly(",preds,",",2, ")"), collapse="+") ))Y ~ poly(A, 2) + poly(B, 2) + poly(C, 2)
我在尝试将“双边”公式进行polyize
处理时遇到了很大的困难。也许我会自己问这个问题。