在R中指定公式有许多冗余的,有时是冲突的方法。是否有一个全面而简洁的参考,用于将概念模型映射到R语法而不是?formula
?
我对广泛的概述很感兴趣,包括用于在非线性和分层模型中指定公式的语法,例如glm
,lmer
,gam
,earth
,包括(/
)用于嵌套,random
和fixed
效果在混合模型中,s
和te
用于样条线,其他在流行的贡献包中找到
答案 0 :(得分:25)
R附带了几本手册,运行R时可以从右上角的vanilla R的“帮助”菜单访问,也可以在线上的几个地方。
“An Introduction to R”的第11章有关于公式的几页,例如。
我不知道它构成了一个“全面”的资源,但它涵盖了很多关于公式如何工作的知识。
*的确,几乎所有95%的用户都会使用
对S语言中公式的规范引用可能是
Chambers J.M.和Hastie T.J.编辑。 (1992年), S 中的统计模型。查普曼&霍尔,伦敦。
虽然该方法的起源来自
Wilkinson G.N.和Rogers C.E.(1973)。 “用于分析方差的因子模型的符号描述”。 应用统计, 22 ,392-399
最近有很多与R有关的书籍讨论了公式,但我不知道我会把它们称为全面的。
还有许多在线资源(例如here)通常会提供大量非常有用的信息。
也就是说,一旦你习惯在R中使用公式,因此有一个可以放置更多知识的上下文,帮助页面包含大量信息(以及它链接到的其他页面)。这有点简洁和神秘,但是一旦你掌握了R的特定工作方式的更广泛知识,它就会非常有用。
与R公式相关的具体问题(取决于它们的内容)很可能是在StackOverflow或CrossValidated上的主题 - 确实有一些非常高级的问题与已经找到的公式有关(使用像{{1这样的搜索可能是富有成效的,并且有更多这样的问题来帮助用户解决这些问题会很方便;如果您有特殊问题,我建议您提出。
对于“冗余”和“冲突”,我认为你的意思是指的是有多种方法来指定无拦截模型:[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
帮助中使用一些进一步的指导和更好的示例。