在R中,有很多冗余且有时相互冲突的指定公式的方式。是否有一个全面而简洁的参考资料来将概念模型映射到R语法,而不是使用?formula
?
我对广泛概述感兴趣,包括用于指定非线性和分层模型的语法,例如glm
、lmer
、gam
、earth
,包括嵌套的(/
)、混合模型中的随机和固定效应,以及流行贡献软件包中发现的其他内容,例如s
和te
用于样条。
[r] formula
的搜索可能会很有成果),并且有更多这样的问题将有助于帮助那些遇到这些问题的用户;如果您有具体问题,我鼓励您提出。至于“冗余”和“冲突”,我想您指的是例如有多种指定无截距模型的方法:y ~ . -1
和y ~ . +0
都可以使用,但在稍微不同的上下文中每种方法都有意义。此外,还有一个常见的问题,即必须从公式接口中隔离二次和高阶项(使用I(x^2)
作为预测器,使其通过公式接口而不受损伤,并在足够远的地方幸存下来以被解释为代数表达式)。同样,一旦你了解了“幕后”发生了什么,这似乎就不那么麻烦了。以下是我刚才提到的事情的具体例子:lm(dist ~ . -1, data=cars) # "remove-intercept-term" form of no-intercept
lm(dist ~ . +0, data=cars) # "make-intercept-zero" form of no-intercept
lm(dist ~ speed + speed^2, data=cars) # doesn't do what we want here
lm(dist ~ speed + I(speed^2), data=cars) # gets us a quadratic term
lm(dist ~ poly(speed,2), data=cars) # avoid potential multicollinearity
我认为公式接口至少需要在?formula
帮助文档中提供更多指导和更好的示例。
gam
)中指定样条函数(例如s
和te
)。 - AbeI
不仅限于指定多项式项 - 还需要指定其他变量转换(包括加法、乘法、对数、指数)。 - Abelm(dist~log(speed),data=cars)
按预期工作。 - Glen_b#
-注释确切地解释了为什么那个系数存在,并且该注释并不涉及不同的模型,(ii)它们不是相同的系数(因为poly
使用(1,x,x ^ 2)的正交变换),并且当多重共线性是一个严重的问题时,甚至不一定是完全相同的拟合。如果您愿意,我可以删除那行,但我认为当人们考虑拟合多项式时,他们应该考虑使用它,所以既然我提到了多项式,我觉得指向poly
很重要。 - Glen_bX+I(X^2)
,而应该提供poly(X,2)
。如果不这样做,就会剥夺他们进入多项式推断的安全统计通道。 - IRTFM