问题:
使用formula
构建统计模型是R语言强大而优雅的功能。
我没有尽可能多地使用formula
的一个原因是语法有点令人困惑(例如x*y
并不仅仅意味着“x
和{y
的产品{1}}“)。
问题:
我正在寻找一种方法来确保我正确使用formula
语法并且我输入的formula
确实实现了我想到的统计模型。理想情况下,我希望在实际拟合模型之前得到此确认。
示例:
说,我想通过线性回归找到模型a
的参数b
和y = a + b*(x1*x2)
。天真地,我在R
df <- data.frame(y=seq(5), x1=runif(5), x2=runif(5)) # toy data
lm(y~x1*x2, data=df) # this is wrong
我可以从lm
的输出中看出,由于x1
和x2
的额外系数,这不是我想要的。但是在调用拟合函数之前应该可以调试公式。 (适合此模型的正确方法是lm(y~x1:x2, data=df)
)
答案 0 :(得分:4)
在运行模型之前调试公式的一种方法是使用formula
和update
:
f <- formula( y ~ x1*x2)
update( f , terms( f ) )
# y ~ x1 + x2 + x1:x2
f <- formula( y ~ x1:x2)
update( f , terms( f ) )
# y ~ x1:x2
巧合的是,您还可以通过包含1(1 * a
= a
)来指定模型中的截距项(即a
的系数),这是等效的:< / p>
f <- formula( y ~ 1 + x1:x2)
update( f , terms( f ) )
# y ~ x1:x2