R - 질적변수의 교호작용을 고려한 회귀모델
/* 2017.5.21 */
데이터의 형식은 아래와 같습니다.
case gram weeks smoke
1 1 3147 40 0
2 2 2977 41 0
3 3 3119 38 0
4 4 3487 38 0
5 5 4111 39 0
6 6 3572 41 0
gram : 태아의 몸무게
weeks : 임신주차
smoke : 임신기간 중 흡연 여부
임신주차와 흡연여부 별로 태아의 몸무게가 어떻게 변하는지 설명하는 회귀식을 찾는 것입니다. 임신주차가 길 수록 태아의 몸무게는 무겁고, 흡연을 안할 수록 태아의 몸무게가 무겁다는 것을 예상해볼 수 있습니다.
이 때, smoke는 질적변수이며, 회귀모델을 구축하는 것에는 두 가지 종류가 있을 수 있습니다.
첫 번째는 smoke라는 질적변수에의해 회귀모델의 절편만 차이가 나는 경우
두 번째는 smoke라는 질적변수에 의해 절편과 기울기가 둘 다 차이가 나는 경우 (교호작용을 고려한 경우)
즉, 흡연여부에 의해 임신주차에 따른 태아의 몸무게의 변화가 영향을 주는 것까지 고려한 경우입니다. 이처럼 한 변수가 다른변수의 종속변수에 대한 효과에 영향을 끼치는 것을 다른말로 교호작용이라고 합니다. 예를 들어 흡연을 하는 경우, 임신주차에 따른 태아 몸무게의 증가 폭이 완만할 수 있겠죠.
두 번째 경우에 대해서만 R을 이용하여 모델을 구축하여보겠습니다.
data <- read.csv("C:/태아몸무게.csv") head(data) # 교호작용도 고려한 질적변수 처리 model2 <- lm(gram~weeks*smoke, data=data) coef <- coefficients(model2) inter <- coef[1] weeks <- coef[2] smoke <- coef[3] # 절편의 차이 weeks_smoke <- coef[4] # 기울기의 차 y1 <- inter+weeks*0:50 # non-smoker y2 <- inter+(weeks+weeks_smoke)*0:50+smoke # smoker plot(data$weeks, data$gram) lines(y1, col="red") lines(y2, col="blue")
- model2 <- lm(gram~weeks*smoke, data=data) 라고하면 weeks와 smoke의 모든 경우에 수를 고려하여 회귀식을 만들겠다는 것입니다.
- 그러면 weeks의 회귀계수(beta1)와 smoke의 회귀계수(beta2), weeks*smoke(beta3)의 회귀계수가 생기게 됩니다.
- beta2는 smoke효과로 인한 절편의 차이이며, beta3는 smoke효과로 인한 기울기의 차이입니다.
- 일반적인 모델에서는 beta3가 없고 절편의 차이만 있는데 교호작용까지 고려하면 기울기의 차이도 고려하는 것입니다.
붉은색은 smoke=0 즉 비흡연자이고, 파란색은 smoke=1 즉 흡연자입니다. 흡연자는 임신주차가 증가하더라도 태아의 몸무게가 완만하게 증가하는 경향을 볼 수 있습니다. 절편값은 흡연자가 더 높은 것을 볼 수 있는데, 이것은 의미가 없습니다. (0주차에 출산하는 경우는 없기 때문) 절편의 효과를 보고 싶다면 centering 기법을 사용하면 됩니다.
'Tools > R' 카테고리의 다른 글
우분투에 R과 Rstudio Server 설치 (0) | 2017.11.05 |
---|---|
R 언어의 중요한 기초 개념 정리 (0) | 2017.10.17 |
R - 단순회귀분석 (0) | 2017.05.21 |
R - (10) 리스트(List) (0) | 2017.03.04 |
R 통계 분석 - 평균, 중앙값, 최빈값 (Mean, Median, Mode) (0) | 2017.02.23 |