“:”和“|”之间的区别在 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 取决于xz 之间的交互作用。

通常,您不会在这样的线性回归中包含交互,除非您还包含单独的术语 xzx * zx + 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 线性建模中的主要内容,如果未能解决你的问题,请参考以下文章

游戏引擎与物理引擎与几何建模内核之间的区别

线性编程优化和梯度下降优化之间有什么区别?

一元线性回归模型和一元线性回归方程之间的区别

相关性分析

使用和不使用 LINQ 的线性搜索之间的区别

statsmodel OLS 和 scikit-learn 线性回归之间的区别