R에서 더미 코딩 대신 효과 코딩으로 회귀를 수행하는 방법은 무엇입니까?


15

현재 범주 형 / 요인 변수 만 독립 변수로 사용하는 회귀 모델을 작성 중입니다. 내 종속 변수는 로짓 변환 비율입니다.

R이 "인자"유형 인 즉시 인형을 코딩하는 방법을 자동으로 알기 때문에 R에서 정상적인 회귀를 실행하는 것은 매우 쉽습니다. 그러나 이러한 유형의 코딩은 또한 각 변수에서 하나의 범주가 기준으로 사용되어 해석하기 어렵다는 것을 의미합니다.

교수님은 인터셉트에 큰 평균을 사용한다는 것을 의미하기 때문에 효과 코딩 대신 (-1 또는 1) 사용하도록 지시했습니다.

누구든지 그것을 처리하는 방법을 알고 있습니까?

지금까지 나는 시도했다 :

gm <- mean(tapply(ds$ln.crea, ds$month,  mean))
model <- lm(ln.crea ~ month + month*month + year + year*year, data = ds, contrasts = list(gm = contr.sum))

Call:
lm(formula = ln.crea ~ month + month * month + year + year * 
    year, data = ds, contrasts = list(gm = contr.sum))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.89483 -0.19239 -0.03651  0.14955  0.89671 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) -3.244493   0.204502 -15.865   <2e-16 ***
monthFeb    -0.124035   0.144604  -0.858   0.3928    
monthMar    -0.365223   0.144604  -2.526   0.0129 *  
monthApr    -0.240314   0.144604  -1.662   0.0993 .  
monthMay    -0.109138   0.144604  -0.755   0.4520    
monthJun    -0.350185   0.144604  -2.422   0.0170 *  
monthJul     0.050518   0.144604   0.349   0.7275    
monthAug    -0.206436   0.144604  -1.428   0.1562    
monthSep    -0.134197   0.142327  -0.943   0.3478    
monthOct    -0.178182   0.142327  -1.252   0.2132    
monthNov    -0.119126   0.142327  -0.837   0.4044    
monthDec    -0.147681   0.142327  -1.038   0.3017    
year1999     0.482988   0.200196   2.413   0.0174 *  
year2000    -0.018540   0.200196  -0.093   0.9264    
year2001    -0.166511   0.200196  -0.832   0.4073    
year2002    -0.056698   0.200196  -0.283   0.7775    
year2003    -0.173219   0.200196  -0.865   0.3887    
year2004     0.013831   0.200196   0.069   0.9450    
year2005     0.007362   0.200196   0.037   0.9707    
year2006    -0.281472   0.200196  -1.406   0.1625    
year2007    -0.266659   0.200196  -1.332   0.1855    
year2008    -0.248883   0.200196  -1.243   0.2164    
year2009    -0.153083   0.200196  -0.765   0.4461    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

Residual standard error: 0.3391 on 113 degrees of freedom
Multiple R-squared: 0.3626, Adjusted R-squared: 0.2385 
F-statistic: 2.922 on 22 and 113 DF,  p-value: 0.0001131 

1
대조를보십시오. 나는 그 평균에 대해 테스트하기 위해 그 contr.sum을 생각합니다. R 도움말 파일을 확인하십시오
user20650

답변:


13

원칙적으로 두 가지 유형의 대비 코딩이 있으며, 이로 인해 절편이 대 평균을 추정합니다. 이것들은 합 대비반복 대비입니다 (슬라이딩 차이).

다음은 데이터 세트의 예입니다.

set.seed(42)
x <- data.frame(a = c(rnorm(100,2), rnorm(100,1),rnorm(100,0)),
                b = rep(c("A", "B", "C"), each = 100))

조건의 의미 :

tapply(x$a, x$b, mean)
         A           B           C 
2.03251482  0.91251629 -0.01036817 

웅대 한 의미 :

mean(tapply(x$a, x$b, mean))
[1] 0.978221

contrasts매개 변수를 사용하여 대비 코딩 유형을 지정할 수 있습니다 lm.

합 대조

lm(a ~ b, x, contrasts = list(b = contr.sum))

Coefficients:
(Intercept)           b1           b2  
     0.9782       1.0543      -0.0657 

절편은 그랜드 평균입니다. 첫 번째 기울기는 첫 번째 요인 수준과 그랜드 평균의 차이입니다. 두 번째 기울기는 두 번째 요인 수준과 총 평균 간의 차이입니다.

반복되는 대비

반복되는 대비를 만드는 기능은 MASS패키지의 일부입니다 .

lm(a ~ b, x, contrasts = list(b = MASS::contr.sdif))

Coefficients:
(Intercept)         b2-1         b3-2  
     0.9782      -1.1200      -0.9229 

절편은 그랜드 평균입니다. 기울기는 연속 요인 수준 (2 대 1, 3 대 2) 사이의 차이를 나타냅니다.


흠, 방금 제안한 것을 시험해 보았지만 원하는 코드가 무엇인지 잘 모르겠습니다. 문제는 한 IV에서 몇 년 {1998, ..., 2007}, 다른 IV에서는 몇 개월 {Jan, ..., Dec}입니다. 이제 lm 함수가 자동으로 4 월이 1998 년뿐만 아니라 절편이되게했습니다. 대신 나는 단지 절편이 전체적인 평균이되기를 원합니다 ... 그 점을 생각할 때 그것이 의미가 있는지 정말로 모르겠습니다 ...
Kasper Christensen

@KasperChristensen 예제와 같이 대비를 지정하면 절편이 대 평균이됩니다. 시도한 것의 재현 가능한 예를 제공하십시오.
Sven Hohenstein

@SvenHohenstein 왜 총 대비에서 C 범주 값에 대한 b3 계수가 없습니까? -0.9885891이어야합니다.
비발디

@Vivaldi b3의 값은 절편과 b1, b2에 의해 결정됩니다. 또 다른 대조를위한 자유도는 남아 있지 않습니다.
스벤 호헨 슈타인

@SvenHohenstein b3가 다른 변수의 선형 조합으로 직접 표현 될 수 있기 때문에 이것이 더 많은 공선 성 문제가 아닙니까? (3 * grand mean-b1-b2)?
Vivaldi

6

Nitpicking : 교수가 변수를 코딩(-1, 1) 하도록 지시하면 효과 크기가 아니라 효과 코딩 을 사용하도록 지시했습니다 . 어쨌든 @ user20650이 옳습니다. 평소와 같이 UCLA 통계 도움말 웹 사이트에는 R로이를 수행하는 방법을 설명하는 유용한 페이지 가 있습니다.

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