【问题标题】:R glm() formula syntax with | and >R glm() 公式语法与 |和 >
【发布时间】:2014-01-22 13:19:50
【问题描述】:

我看到了两个 R glm 公式,我不知道它们是什么意思。

假设我们有 3 个变量,x1x2y。公式中包含>,例如glm((y>0) ~ x1 + x2),是什么意思?使用|时是什么意思,例如glm(y ~ x1|x2)

对于第二个,我找到的解释是x1 给定x2,但是当x1x2 都是列向量而不是随机变量时,我不确定如何解释这一点。

【问题讨论】:

  • 你看到第一个公式是lm(),还是glm()
  • 虽然用 R 特定的语法来表达,但我想知道这是否更像是一个统计理解问题(即,比这里更适合 stats.SE)。对于第二个问题尤其如此。
  • 我就是这么想的。在这种情况下,> 充当逻辑运算符。即,它输出TRUEFALSE10)。这有助于将y 二分法,使其成为适合逻辑回归的响应变量。 (但是,这样做可能不是一个好主意——你正在丢弃信息。)

标签: r glm lm


【解决方案1】:

>有它通常的含义; y 是否大于 0?这将评估为具有TRUEFALSE 的逻辑向量,分别用于大于或不大于 0 的观察值。这具有被视为1s 和0s 的向量的效果(再次分别)。我想您遗漏了您指定 family = binomial 或类似名称的位以说明数据的 0/1 性质?

|glm()(和其他基本 R 函数)接受的公式中没有任何特殊含义。它与?'|' 具有相同的含义,它是一个 OR 运算符。因此在x1 | x2 中,我们可能会认为这是or(x1, x2),它具有标准函数调用的形式。如果x1 x2TRUE,则此处的结果是TRUE,根据需要将x1x2 强制为逻辑。如果x1x2 都是数字,那么x1 | x2 将是FALSE 的唯一方法是两者都完全等于0。就这一点而言,这只是R的公式和标准非标准评估的一个特点;公式可以包含函数调用,例如log(x)sqrt(y) 等,在拟合函数收集拟合所需的数据时进行评估。

这里有一个例子可以解释| 在公式中的作用:

> set.seed(1)
> df <- data.frame(Y = rnorm(5), A = rnorm(5), B = rep(FALSE, 5),
+                  C = c(rep(TRUE, 4), FALSE))
> df
           Y          A     B     C
1 -0.6264538 -0.8204684 FALSE  TRUE
2  0.1836433  0.4874291 FALSE  TRUE
3 -0.8356286  0.7383247 FALSE  TRUE
4  1.5952808  0.5757814 FALSE  TRUE
5  0.3295078 -0.3053884 FALSE FALSE
> model.frame(Y ~ A + (B | C), data = df)
           Y          A B | C
1 -0.6264538 -0.8204684  TRUE
2  0.1836433  0.4874291  TRUE
3 -0.8356286  0.7383247  TRUE
4  1.5952808  0.5757814  TRUE
5  0.3295078 -0.3053884 FALSE

这里的第三列是由对'|'(A, B)的调用形成的,结果是

> with(df, B | C)
[1]  TRUE  TRUE  TRUE  TRUE FALSE

请注意,您必须将 | 子句括在括号中,否则它会吞噬 ~ 右侧的其他术语:

> model.frame(Y ~ A + B | C, data = df)
           Y A + B | C
1 -0.6264538      TRUE
2  0.1836433      TRUE
3 -0.8356286      TRUE
4  1.5952808      TRUE
5  0.3295078      TRUE

## Note there is no `A` and all are `TRUE` now.

最后一个元素现在是TRUE 的原因,请注意A (-0.3053884) 的最后一个元素不完全等于0,因此它的计算结果为TRUE,因此我们有@987654361 @,结果为TRUE

|确实在其他包中有特殊含义,例如在 lme4 包中,它用于嵌套随机效果。

【讨论】:

  • @jderzol,如果这个答案已经解决了您的问题,那么您可以考虑接受它,方法是点击投票总数下方左上角的复选标记。您可能还想考虑通过单击朝上的三角形赞成它。
猜你喜欢
  • 2019-04-11
  • 2017-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多