3

问题:

使用构建统计模型formula是 R 语言的一个强大而优雅的特性。我没有formula尽可能多地使用的原因之一是语法有点混乱(例如x*y,并不简单地表示“和的乘积xy)。

问题:

我正在寻找一种方法来确保我formula正确使用了语法,并且formula我输入的内容真正实现了我想到的统计模型。理想情况下,我希望在实际拟合模型之前得到确认。

例子:

说,我想通过线性回归找到模型的参数a和。天真地,我在 R 中输入了这个by = a + b*(x1*x2)

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)

4

1 回答 1

4

在运行模型之前调试公式的一种方法是使用formulaand 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

巧合的是,您还可以a通过包含 1 (1* a= a) 在模型中指定截距项(即 的系数),因此这是等效的:

f <- formula( y ~ 1 + x1:x2)
update( f , terms( f ) )
# y ~ x1:x2
于 2013-05-01T08:09:39.727 回答