I()在公式的左侧/右侧的奇怪行为

时间:2012-12-14 22:08:37

标签: r formula

set.seed(98234)
y <- rnorm(100)
x <- rnorm(100)
lm0 <- lm(y ~ x)
lm1 <- lm(I(y) ~ I(x))

所有工作完全正常,我想我们可以同意'lm0'是人们期望发生的事情。 lm1等于lm0(按系数判断)。

set.seed(98234)
lm3 <- lm(I(rnorm(100)) ~ rnorm(100))
set.seed(98234)
lm4 <- lm(rnorm(100) ~ I(rnorm(100)))

但当I()出现在公式的两面或两面时,我都无法从上面得到结果:

set.seed(98234)
lm2 <- lm(I(rnorm(100)) ~ I(rnorm(100)))
set.seed(98234)
lm5 <- lm(rnorm(100) ~ rnorm(100))

任何想法为什么?

1 个答案:

答案 0 :(得分:1)

参数的左侧永远不会分解为组件,因此I分组符号是不必要的。

lm(I(a+b+c+d/e)~f)

相同
lm(a+b+c+d/e~f)

尽管

lm(a~b+c+d/e)

不会与

相同
lm(a~I(b+c+d/e))

甚至

lm(a~b+c+I(d/e))