“:”和“|”之间的区别在 R 线性建模中
Posted
技术标签:
【中文标题】“:”和“|”之间的区别在 R 线性建模中【英文标题】:Difference between ":" and "|" in R linear modeling 【发布时间】:2012-03-07 00:24:07 【问题描述】:在R中构建线性模型时,以下两种说法有什么区别:
lm(y ~ x | z)
lm(y ~ x : z)
lm
function documentation 记录了:
运算符,如下所示:
first:second 形式的规范表示通过将 first 中的所有术语与 second 中的所有术语的交互作用获得的术语集。
该页面上没有提到|
语法。有什么区别?
【问题讨论】:
|仅用于条件模型和方差分析,因此在 lm 调用中没有意义。实际上应该有一个错误抛出。 不,对于数值数据非常有效。但是,不适用于因子数据。根据R.Version()
,我正在使用“R 版本 2.14.1 (2011-12-22)”。
如果 | lm
中没有错误,我敢打赌,这是因为它实际上是在对被强制返回数字的数据进行逻辑“或”评估。
@John - 很好的想法,这可能就是为什么它不适用于因子,因为它们都是虚拟变量,不能以相同的方式强制。
您可以在这里找到所有运算符?公式。
【参考方案1】:
:
用于交互。在您的示例lm(y ~ x : z)
中,公式的意思是“y 取决于x
和z
之间的交互作用。
通常,您不会在这样的线性回归中包含交互,除非您还包含单独的术语 x
和 z
。 x * z
是 x + x:z + z
的缩写。
AFAIK,|
根本不被 lm
使用。它肯定不会出现在demo("lm.glm", "stats")
的任何示例中。它用于nlme
包中的混合效果模型。
来自?intervals.lme
的例子:
model <- lme(distance ~ age, Orthodont, random = ~ age | Subject)
ranef(model)
这里的|
表示“分组依据”。也就是说,每个受试者都适合不同的年龄随机效应。 (查看ranef(model)
,可以看到每一行对应一个人(主题)的随机效应。)
【讨论】:
不错的答案,但您能详细说明“每个主题都适合不同的年龄随机效应”吗?这对我来说不是很清楚......谢谢lm(y ~ x + x:z + z + k)
和lm(y ~ x*z + k)
有区别吗?
@sop 他们是一回事。如果您需要说服,请尝试使用真实的数据集。以上是关于“:”和“|”之间的区别在 R 线性建模中的主要内容,如果未能解决你的问题,请参考以下文章