programing tip

R이 회귀에서 지정된 요인 수준을 참조로 사용하도록 강제하는 방법은 무엇입니까?

itbloger 2020. 8. 23. 08:38
반응형

R이 회귀에서 지정된 요인 수준을 참조로 사용하도록 강제하는 방법은 무엇입니까?


회귀에서 이진 설명 변수를 사용하는 경우 R에게 특정 수준을 참조로 사용하도록하려면 어떻게해야합니까?

기본적으로 일정 수준을 사용하고 있습니다.

lm(x ~ y + as.factor(b)) 

와 함께 b {0, 1, 2, 3, 4}. R에서 사용하는 0 대신 3을 사용하고 싶다고 가정 해 보겠습니다.


relevel()기능을 참조하십시오 . 다음은 예입니다.

set.seed(123)
x <- rnorm(100)
DF <- data.frame(x = x,
                 y = 4 + (1.5*x) + rnorm(100, sd = 2),
                 b = gl(5, 20))
head(DF)
str(DF)

m1 <- lm(y ~ x + b, data = DF)
summary(m1)

이제 함수 를 사용 하여 요소 b변경합니다 .DFrelevel()

DF <- within(DF, b <- relevel(b, ref = 3))
m2 <- lm(y ~ x + b, data = DF)
summary(m2)

모델은 서로 다른 참조 수준을 추정했습니다.

> coef(m1)
(Intercept)           x          b2          b3          b4          b5 
  3.2903239   1.4358520   0.6296896   0.3698343   1.0357633   0.4666219 
> coef(m2)
(Intercept)           x          b1          b2          b4          b5 
 3.66015826  1.43585196 -0.36983433  0.25985529  0.66592898  0.09678759

다른 사람들은 relevel데이터에 대한 모든 분석의 기본 수준을 변경하려는 경우 (또는 데이터 변경에 기꺼이 살고있는 경우) 최상의 솔루션 인 명령을 언급했습니다 .

데이터를 변경하지 않으려면 (한 번만 변경되지만 나중에 기본 동작을 다시 원할 경우) C(대문자 참고) 함수 의 조합을 사용하여 대비를 설정 contr.treatments하고 기준이 될 레벨을 선택하기위한 기본 인수입니다.

예를 들면 :

lm( Sepal.Width ~ C(Species,contr.treatment(3, base=2)), data=iris )

relevel()명령은 질문에 대한 간단한 방법입니다. 그것이하는 일은 요소를 재정렬하여 참조 수준이 무엇이든 먼저되도록하는 것입니다. 따라서 요인 수준을 재정렬하는 것도 효과는 같지만 더 많은 제어를 제공합니다. 레벨 3,4,0,1,2를 원했을 것입니다. 그렇다면 ...

bFactor <- factor(b, levels = c(3,4,0,1,2))

이 방법을 선호하는 이유는 내 코드에서 참조가 무엇인지뿐만 아니라 다른 값의 위치도 (그 결과를 볼 필요없이) 쉽게 볼 수 있기 때문입니다.

참고 : 주문 요소로 만들지 마십시오. 순서가 지정된 요인과 순서가 지정된 요인은 동일하지 않습니다. lm()그렇게하면 다항식 대비를 원한다고 생각할 수 있습니다.


나는 이것이 오래된 질문이라는 것을 알고 있지만 비슷한 문제가 있었고 다음을 발견했습니다.

lm(x ~ y + relevel(b, ref = "3")) 

당신이 요청한 것을 정확하게 수행합니다.


contrasts회귀 함수에서 존중하는 것처럼 보이는 속성으로 열에 수동으로 태그를 지정할 수도 있습니다 .

contrasts(df$factorcol) <- contr.treatment(levels(df$factorcol),
   base=which(levels(df$factorcol) == 'RefLevel'))

참고 URL : https://stackoverflow.com/questions/3872070/how-to-force-r-to-use-a-specified-factor-level-as-reference-in-a-regression

반응형