2017-04-02 7 views
1

회귀를 위해서는 범주 값에 대한 예측 변수를 만들어야한다고 항상 말합니다. 나는 다섯 가지 계층의 범주 형 변수에 대해 1, 2, 3의 예측 변수 열을 먼저 작성하여 테스트를 수행했습니다. 그런 다음 예측 모델 열없이 모델을 실행했지만 카테고리 열 자체는 실행했습니다.범주 형 변수로 회귀하기 위해 지표가 필요합니까?

결론적으로, 계수는 다르다. 그러나, 그들의 상대적 중요성과 y- 값에 대한 효과는 동일합니다. 또한 R- 제곱 값과 P- 값 숫자는이 두 경우에서 정확히 동일합니다. 그렇다면 예측 변수를 만들어야합니까, 아니면 R이 자동으로 그렇게 할만큼 똑똑합니까? 그런 다음

for(i in 1:74) 
{ 
    if(travel$accommodation[i] == "Hotel") 
    { 
    travel$pred_hotel[i] <- 1 
    } 

    if(travel$accommodation[i] == "Airbnb") 
    { 
    travel$pred_hotel[i] <- 2 
    } 

    if(travel$accommodation[i] == "Hostel") 
    { 
    travel$pred_hotel[i] <- 3 
    } 

    if(travel$accommodation[i] == "With friend/family") 
    { 
    travel$pred_hotel[i] <- 4 
    } 

    if(travel$accommodation[i] == "Other") 
    { 
    travel$pred_hotel[i] <- 5 
    } 
} 

travel$pred_hotel <- as.factor(travel$pred_hotel) 

는 :

msf <- lm(ticket_events_money ~ museum_fee + nationality + 
    ticket_events_frequency + accommodation + line + activity_1 + 
    locals + vacation_days, data = travel[-1, ]) 

mm <- lm(ticket_events_money ~ museum_fee + nationality + 
    ticket_events_frequency + pred_hotel + line + activity_1 + 
    locals + vacation_days, data = travel[-1, ]) 

summary(msf) 
summary(mm) 
+0

그래서, 내가 1, 2, -3의 예측 인자 열을 만들 필요가 없습니다를? 나는 요인을 그대로 사용할 수 있습니까? –

+0

결국 계수는 다릅니다. 그러나 상대성 = y 축에 미치는 영향은 같습니다. –

+0

안녕하세요, 왼쪽 상단의 회색 체크 표시를 클릭하여 내 답변을 수락 할 수 있는지 여부를 아는 것은 흥미 롭습니다. 대답을 받아들이는 것은 꼭해야 할 일은 아니지만, 독자가 그 대답을 통해 문제를 해결할 수 있음을 알리는 신호이기 때문에 일반적으로 권장되는 방법입니다. 고맙습니다. –

답변

2

문제는, 당신은 원래 문자 열 accommodation 있습니다. 새 변수 pred_hotel이 하나의 요인입니다. 함수 lm은 문자 공변량을 factor로 자동 변환합니다. 테스트에서 유일한 차이점은 요인 수준입니다. 나머지는 모두 동일합니다. 차이점을 확인하려면 as.factor 행을 삭제하십시오.

또 다른 일반적인 실패는 다음과 같은 최소한의 재현 가능한 예와 같습니다.

dat <- data.frame(y = rnorm(20), x = rep(letters[1:2], 10), stringsAsFactors = FALSE) 
m1 <- lm(y ~ x, dat) 

dat$x[dat$x == 'a'] <- 1 
dat$x[dat$x == 'b'] <- 2 
class(dat$x) # still a character column!! 
m2 <- lm(y ~ x, dat) 

하지만 실제 숫자 사용하는 경우 당신은 차이를 볼 수 있습니다 :

dat$x <- as.numeric(dat$x) 
m3 <- lm(y ~ x, dat)