我看到两个R glm公式,我不知道它们是什么意思。
假设我们有3个变量,x1
,x2
,y
。该公式包含>
,例如glm((y>0) ~ x1 + x2)
时,这意味着什么?使用|
时的含义是什么,例如glm(y ~ x1|x2)
?
对于第二个,我找到的解释是x1
给出x2
,但我不确定当x1
和x2
都是列向量时如何解释这个而不是随机变量。
答案 0 :(得分:10)
>
有其通常的含义; y
是否大于0
?对于大于0的观察值,这将分别评估为TRUE
和FALSE
的逻辑向量。这具有被视为1
s和0
s的向量(再次分别)的效果。我认为你遗漏了你指定family = binomial
或类似于数据0
/ 1
性质的帐户的位置?
|
在glm()
(以及其他基本R函数)接受的公式中没有任何特殊含义。它与?'|'
具有相同的含义,它是一个OR运算符。因此,在x1 | x2
中,我们可能会认为这是or(x1, x2)
,它具有标准函数调用的形式。如果TRUE
或 x1
为x2
,则TRUE
强制x1
和x2
为逻辑,结果为x1
需要。如果x2
和x1 | 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.3053884
(0
)的最后一个元素不完全等于TRUE
,因此它的计算结果为{ {1}},因此我们TRUE | FALSE
,结果为TRUE
。
|
在其他软件包中具有特殊含义,例如在 lme4 包中,用于嵌套随机效果。