在 R 中指定公式的方法有很多冗余,有时甚至是相互冲突的。对于将概念模型映射到 R 语法,是否有一个全面而简洁的参考?formula
?
我对广泛的概述感兴趣,包括用于在非线性和分层模型中指定公式的语法,例如glm
, lmer
, gam
, earth
, 包括 ( /
) 用于嵌套,random
以及fixed
混合模型中的效果s
和te
样条曲线,以及其他流行的贡献的包。
R 附带了几本手册,可在运行 R 时从右上角的 vanilla R 的“帮助”菜单访问,并且在线上的多个地方也有这些手册。
例如,“ R 简介”的第 11 章有几页关于公式的内容。
我不知道它是否构成“综合”资源,但它涵盖了您需要了解的有关公式如何工作的大部分内容。
* 事实上,几乎所有可能 95% 的用户都会使用的东西
S 语言中对公式的规范引用可能是
Chambers JM 和 Hastie TJ 合编。(1992), S 中的统计模型。查普曼和霍尔,伦敦。
尽管该方法的起源来自
威尔金森 GN 和罗杰斯 CE(1973 年)。“用于方差分析的因子模型的符号描述。” 应用统计, 22 , 392–399
最近的一些与 R 相关的书籍讨论了公式,但我不知道我会称其中任何一本为综合性的。
还有许多在线资源(例如这里),通常包含大量非常有用的信息。
也就是说,一旦您习惯了在 R 中使用公式,并且有了可以放置更多知识的上下文,帮助页面就会包含大量的信息(以及它链接到的其他页面)。它有点简洁和神秘,但是一旦您对 R 的特定工作方式有了更广泛的知识基础,它就会非常有用。
与 R 公式相关的特定问题(取决于它们的内容)可能会成为 StackOverflow 或 CrossValidated 的主题——事实上,已经找到了一些与公式相关的相当高级的问题(使用类似的搜索[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
帮助中使用一些进一步的指导和更好的示例。