我的R公式是否等同于我心中的统计模型?

3

问题:

使用 formula 建立统计模型是 R 语言的一个强大和优雅的特性。 我没有像应该那样多地使用 formula 的原因之一是,它的语法有点令人困惑(例如,x*y 并不仅仅意味着“xy 的乘积”)。

问题:

我正在寻找一种方法来确保我已正确使用了 formula 语法,并且我输入的 formula 确实实现了我心中的统计模型。理想情况下,在实际拟合模型之前我想要这个确认。

示例:

比如说,我想通过线性回归找到模型 y = a + b*(x1*x2) 的参数 ab。我在 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的输出结果看出,由于额外的x1x2系数,这并不是我想要的结果。但在调用拟合函数之前,应该有可能调试公式。(正确拟合此模型的方法是 lm(y~x1:x2, data=df))。
1个回答

4

在运行模型之前,你可以使用 formulaupdate调试 公式:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接