在R公式中,( | )语法表示条件模型。

3

我正在跟随一个教程,遇到了以下语法:

# assume 'S' is the name of the subjects column
# assume 'X1' is the name of the first factor column
# assume 'X2' is the name of the second factor column
# assume 'X3' is the name of the third factor column
# assume 'Y' is the name of the response column
# run the ART procedure on 'df'

# linear mixed model syntax; see lme4::lmer
m = art(Y ~ X1 * X2 * X3 + (1|S), data=df) 

anova(m)

我对 (|) 语法有点困惑。 我查看了线性混合模型语法 lmer 的文档,并发现:“通过竖杠 (|) 区分随机效应项,将设计矩阵表达式与分组因素分开”。

所以我假设这里的 1S 是两个随机效应项。 S 作为一个随机效应是有意义的,因为它是一个可以代表参与者的随机变量。但是 1 怎么会成为一个随机变量呢?这里的 1| 有什么含义?


1
这篇文章可能会解释1个显式截距:https://dev59.com/y2Yr5IYBdhLWcg3w1NZY - zx8754
3
也可以参考R的lmer速查表 - Henrik
1个回答

8
|符号在不同的函数中以不同的方式使用。在线性混合模型中,它用于表示随机效应。混合模型中可以使用不同类型的随机效应:
- 随机截距,其中截距(但不是斜率)在受试者之间变化, - 随机斜率,其中斜率(但不是截距)在受试者之间变化, - 随机截距和斜率,两者都在受试者之间变化。斜率和截距可以被建模为相关或不相关。
公式中的1用于指定要使用的这些类型之一。以下是一些示例,取自我的书籍
library(lme4)
# Random intercept:
m1 <- lmer(Reaction ~ Days + (1|Subject), data = sleepstudy)

# Random slope:
m2 <- lmer(Reaction ~ Days + (0 + Days|Subject), data = sleepstudy)

# Correlated random intercept and slope:
m3 <- lmer(Reaction ~ Days + (1 + Days|Subject), data = sleepstudy)

# Uncorrelated random intercept and slope:
m4 <- lmer(Reaction ~ Days + (1|Subject) + (0 + Days|Subject),
           data = sleepstudy)

因此,在你的例子中,(1|S)用于添加随机截距,对应不同的 S 值。

partykitlmtree 公式中也可以找到类似但符号略有不同的使用方式,它用于在节点中拟合带有线性模型的决策树。在这种情况下,公式看起来像 y ~ x1 + x2 | z1 + z2 + z3,其中 y 是响应变量,x 变量是线性模型中的解释变量,而 z 变量是用于构建树的变量。


2
啊,我明白了,谢谢!(而且很荣幸您回复了我的消息,我以前经常参考您的教材 :) ) - Null Salad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接