R glm()公式语法带|和>

时间:2014-01-22 03:42:20

标签: r glm lm

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

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

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

1 个答案:

答案 0 :(得分:10)

>有其通常的含义; y是否大于0?对于大于0的观察值,这将分别评估为TRUEFALSE的逻辑向量。这具有被视为1 s和0 s的向量(再次分别)的效果。我认为你遗漏了你指定family = binomial或类似于数据0 / 1性质的帐户的位置?

|glm()(以及其他基本R函数)接受的公式中没有任何特殊含义。它与?'|'具有相同的含义,它是一个OR运算符。因此,在x1 | x2中,我们可能会认为这是or(x1, x2),它具有标准函数调用的形式。如果TRUE x1x2,则TRUE强制x1x2为逻辑,结果为x1需要。如果x2x1 | x2都是数字,FALSE 0的唯一方式是两者都完全等于log(x)。就这一点而言,这只是R公式和标准非标准评估的一个特征;公式可以包含函数调用,例如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.30538840)的最后一个元素不完全等于TRUE,因此它的计算结果为{ {1}},因此我们TRUE | FALSE,结果为TRUE

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