영화에서 상호 작용 용어를 작성하는 다른 방법은 무엇입니까?


42

회귀 모델에서 교호 작용을 지정하는 가장 좋은 방법에 대한 질문이 있습니다. 다음 데이터를 고려하십시오.

d <- structure(list(r = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
     1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("r1","r2"),
     class = "factor"), s = structure(c(1L, 1L, 1L, 1L, 1L, 
     2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L), 
    .Label = c("s1","s2"), class = "factor"), rs = structure(c(1L, 1L,
     1L,1L, 1L,2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L),
    .Label = c("r1s1","r1s2", "r2s1", "r2s2"), class = "factor"), 
     y = c(19.3788027518437, 23.832287726332, 26.2533235300492,
     15.962906892112, 24.2873740664331, 28.5181676764727, 25.2757801195961,
     25.3601044326474, 25.3066440027202, 24.3298865128677, 32.5684219007394,
     31.0048406654209, 31.671238316086, 34.1933764518288, 36.8784821769123,
     41.6691435168277, 40.4669714825801, 39.2664137501106, 39.4884849591932,
     49.247505535468)), .Names = c("r","s", "rs", "y"), 
     row.names = c(NA, -20L), class = "data.frame")

상호 작용으로 모델을 지정하는 두 가지 동등한 방법은 다음과 같습니다.

lm0 <- lm(y ~ r*s, data=d)
lm1 <- lm(y ~ r + s + r:s, data=d)

내 질문은 동일한 수준의 상호 작용으로 새 변수 (rs)를 고려하여 상호 작용을 지정할 수 있는지 여부입니다.

lm2 <- lm(y ~ r + s + rs, data=d)

이 접근법에는 어떤 장단점이 있습니까? 그리고이 두 가지 접근법의 결과가 다른 이유는 무엇입니까?

summary(lm1)

lm(formula = y ~ r + s + r:s, data = d, x = TRUE)
            coef.est coef.se
(Intercept) 21.94     1.46  
rr2         11.32     2.07  
ss2          3.82     2.07  
rr2:ss2      4.95     2.92  
---
n = 20, k = 4
residual sd = 3.27, R-Squared = 0.87


summary(lm2)

lm(formula = y ~ r + s + rs, data = d, x = TRUE)
            coef.est coef.se
(Intercept) 21.94     1.46  
rr2         11.32     2.07  
ss2          8.76     2.07   # ss2 coef is different from lm1
rsr1s2      -4.95     2.92  
---
n = 20, k = 4
residual sd = 3.27, R-Squared = 0.87

그 의미 rsinteraction(r, s)?
chl

rsr1s2를 생성 한 코드를 보여 주실 수 있습니까?
jbowman

rs 계수는 수동으로 정의되었습니다 (간단하게 붙여 넣기 계수 r과 s). 데이터 세트를 참조하십시오.
Manuel Ramón

1
I 추측은 변수의 방법으로 볼을 relationated하는 관련 attr(terms(lm1),"factors")attr(terms(lm2),"factors")
Galled

답변:


8

lm이 상호 작용으로 모델을 설정하는 방식이 사용자가 직접 설정할 때 설정 한 방식과 다르기 때문에 결과가 다릅니다. 잔류 sd를 보면 동일합니다.이 모델은 기본 모델이 동일하고 (lm 내부에) 다르게 표현되었음을 나타냅니다.

매개 변수 추정값 paste(d$s, d$r)대신 상호 작용을 정의하면 paste(d$r, d$s)흥미로운 방식으로 다시 변경됩니다.

lm1에 대한 모델 요약에서 ss2에 대한 계수 추정치가 lm2에 대한 요약보다 4.94 낮으며 rr2 : ss2에 대한 계수는 4.95입니다 (소수점 3 개로 인쇄하면 차이가 사라짐). 이는 용어의 내부 재 배열이 발생했음을 나타내는 또 다른 표시입니다.

나는 그것을 스스로 할 때 어떤 이점도 생각할 수 없지만, 완전한 상호 작용 항을 원하지 않고 두 개 이상의 요인 사이의 "교차"용어 중 일부만 복잡한 모델이있는 모델이있을 수 있습니다.


lm2에서와 같이 교호 작용을 정의 할 수있는 유일한 이점은 교호 작용 항에 대해 여러 비교를 수행하기 쉽다는 것입니다. 내가 이해하지 못하는 것은 원칙적으로 두 가지 접근 방식이 동일한 것처럼 보이는 경우 다른 결과를 얻는 이유입니다.
Manuel Ramón

5
x1,x2(1,x1,x2,x1x2)(x1,x2,x1x2,(1x1)(1x2)

따라서 서로 다르지만 두 가지 방법이 모두 맞습니까?
Manuel Ramón

권리. 수학적으로 다양한 공식에서 독립 변수의 행렬은 서로에 대한 선형 변환이므로 두 모델이 실제로 어떻게 설정되어 있는지 알고 있다면 한 모델의 모수 추정값이 다른 모델의 모수 추정값으로부터 계산 될 수 있습니다.
jbowman

9

모델 행렬을 보면이 동작을 더 잘 이해할 수 있습니다.

 model.matrix(lm1 <- lm(y ~ r*s, data=d))
 model.matrix(lm2 <- lm(y ~ r + s + rs, data=d))

이러한 행렬을 볼 때 s2=1다른 변수와의 성상을 비교할 수 있습니다 (예 : 언제 s2=1, 다른 변수 에 어떤 값이 사용됩니까?). 이 별자리가 약간 다르므로 기본 카테고리가 다르다는 것을 의미합니다. 다른 모든 것은 본질적으로 동일합니다. 당신의 특정, 참고 lm1,의 계수는 ss2계수와 동일 ss2+rsr1s2의를 lm2짧은 오류를 반올림 = 8.76-4.95 3.82을 즉.

예를 들어, 다음 코드를 실행하면 자동 설정 R을 사용하는 것과 정확히 동일한 출력이 제공됩니다.

  d$rs <- relevel(d$rs, "r1s1")
  summary(lm1 <- lm(y~ factor(r) + factor(s) + factor(rs), data=d))

또한 질문에 대한 빠른 답변을 제공합니다. 요인 설정 방식을 변경하는 유일한 이유는 설명의 명확성을 제공하는 것입니다. 다음 예를 고려하십시오. 소수에 속하는지 여부를 나타내는 요인과 상호 작용하여 고등학교 수료 더미에 대한 회귀 임금을 가정하십시오.

wage=α+β edu+γ eduminority+ϵ

ββ+γ

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.