我有一个简短的问题,为什么下面的操作不起作用:
BAD ~ A + B + C # normal case
BAD ~ A + B^2 + C^2 # manipulated
有什么办法解决吗,谢谢!
最佳答案
R 公式界面不是为符号数学而设计的,而是为建模而设计的。如果您想在模型中使用二次项,请学习使用poly
。
BAD ~ A + poly(B, 2) + poly(C,2)
抵制住I(C^2)
的诱惑,因为这会带来糟糕的统计推断。有几个用于“方程”符号操作的包:polynom
是我立即记住的名字。还有外部符号数学包 Yacas 的 RYacas
包装器。
如果您从模型组件的字符值开始,那么这会将各个部分组装为文本并最终转换为公式类:
> 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)
我在尝试采用“双面”公式并将其聚合
时犯了严重错误。也许我自己也会问这个问题。
关于r - 二次形式的公式运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35785005/