问题:
使用formula构建统计模型是R语言的一个强大而优雅的特性。我没有像我应该的那样多地使用formula的原因之一是语法有点混乱(例如,x*y并不只是指“x和y的产品”)。
问题:
我正在寻找一种方法,以确保我正确地使用了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))
发布于 2013-05-01 08:09:39
在运行模型之前可以调试公式的一种方法是使用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的系数),因此这是等价的:
f <- formula( y ~ 1 + x1:x2)
update( f , terms( f ) )
# y ~ x1:x2https://stackoverflow.com/questions/16314599
复制相似问题