2012-12-14 2 views
-1
set.seed(98234) 
y <- rnorm(100) 
x <- rnorm(100) 
lm0 <- lm(y ~ x) 
lm1 <- lm(I(y) ~ I(x)) 

의/왼쪽 오른쪽 모두 완벽하게 잘 작동하고 나는 우리가 한 일이 무엇을 기대 'lm0' 것을 동의 할 수있는 것 같아요. lm1lm0 (계수로 판단)과 같습니다. 그래서이상한 행동은() 식

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)) 

어떤 아이디어 왜?

+0

사실 나는 그 것들이 당신이 생각하는대로 행동하지 않는다고 생각합니다. 각 경우의 결과를'm'과 같은 것으로 저장 한 다음 각각의 경우에 용어 (formula (m))를 봅니다. – joran

답변

1

인수의 왼쪽 부분은 결코 구성 요소로 나눠지지 않으므로 I 그룹화 기호는 필요하지 않습니다.

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

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

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

또는 도

과 동일하지 않을 것과 같은 같은

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

반면 있을까

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

나는 이것을 알고 있었지만 한 쪽에서'I() '를 사용하는 것이 왜 효과가 있는지 이해하지 못한다.하지만 양쪽에서 그것을 사용하는 것은 아니다 (나는 명확성을 위해 질문을 편집했다). – adibender