728x90

gender <- c("F","F","F","M","M","M")
wei <- c( 65,66,69,67,68,72)
hei <- c(171,172,176,173,177,178)
age <- c(23,24,38,43,40,42)
health <- data.frame(gender,wei,hei,age)
lm(wei~hei+gender)   # 독립변수 gender는 문자형으로 "F"와 "M" 되어 있습니다.

s_reg_dum_01(r)

회귀분석 결과를 보면 모형에 없던 genderM 이라는 변수가 생긴 것을 볼 수 있습니다.

이는 여자("F")을 기준으로 남자("M")인 경우 얼마나 증가하는가를 나타냅니다.

 

이제 "F","M" 으로 되어 있는 것을 0 과 1로 변형하여 회귀분석을 합니다.

여자인 경우에는 0, 남자인 경우에는 1...

sex <- ifelse(gender=="F",0,1)
lm(wei~hei+sex)

위의 결과와 동일하게 나오는 것을 볼 수 있습니다.

SAS에는 더미변수가 문자로 되어 있으면 에러가 발생합니다.

 

 

회귀분석을 하는 경우, 독립변수에 정성적인 변수가 들어가는 경우, 더미변수로 처리하게 됩니다.

독립변수를  문자형으로 하는 경우와 팩터(factor)로 타입(Type)을 변경하여 회귀분석을 하면

결과가 같게 나오는 것을 확인하게 됩니다.

 

s <- read.csv("d:/r_stat/survey_mul.csv");s

names(s)

s1 <- s

s1$edu_n <- ifelse(s1$edu ==1,"high",

ifelse(s1$edu ==2,'college',

ifelse(s1$edu ==3,'univ',

ifelse(s1$edu==4,'grad',NA))))

table(s1$edu)

table(s1$edu_n)

 

# 원래 데이터로 회귀분석... 독립변수 edu가 숫자형으로 간주하고 회귀분석

lm(wage~edu,data=s1); # 원래 데이터

 

# 독립변수 edu를 facor와 character로 바꾸어 회귀분석을 하면  똑 같은 결과

 

s1$edu_f <- as.factor(s1$edu)      # 팩터로 변환 후

s1$edu_c <- as.character(s1$edu) # 문자형으로 변환 후

 

lm(wage~edu_f,data=s1);

lm(wage~edu_c,data=s1);

 

# 주의할 점

변수값을 -> college grad high middle 로 변환하면

알파벳순으로 : college를 기준으로...

변수명 edu_n이 앞에 붙고... 알파벳순 grad(대학원졸), high(고졸), univ(대졸)

middle(중졸) 기준으로 되어야 함...

 

lm(wage~edu_n,data=s1);

```

# 더미변수 만들기 edu1, edu2, edu3

s1

table(s1$edu)

s1$edu1 <- ifelse(s1$edu==1, 1,0)

s1$edu2 <- ifelse(s1$edu==2, 1,0)

s1$edu3 <- ifelse(s1$edu==3, 1,0)

s1$edu4 <- ifelse(s1$edu==4, 1,0)

s1

lm(wage~edu1+edu2+edu3+edu4,data=s1)

 

 

+ Recent posts