회귀식 해석 Interpreting the Regression Equation
- 데이터 과학에서 회귀의 가장 중요한 용도
- 일부 종속변수(결과변수)를 예측하는 것
- 때로는 예측변수와 결과 간 관계의 본질을 이해하기 위해 방정식 자체로부터 통찰을 얻는 것
예측변수들 간의 관계
- 상관변수(correlated variable): 예측변수들끼리 서로 높은 상관성을 갖을 때, 개별 계수를 해석하는 것은 어렵다.
- 상관변수의 예
- 아래 회귀식에서 Bedrooms의 계수는 음수
- 침실의 개수를 늘릴 수록 가격이 하락하는 것을 의미
- 예측변수들이 서로 연관되어 있어 발생하는 현상
- 크기가 같은 2개의 집에서 침실이 여러 개 있다는 것은 침실이 작아진다는 것을 의미하므로 선호도가 떨어져 가격이 낮은 것이 일반적
> house <- read.csv('house_sales.csv', sep='\t') > house_full <- lm(AdjSalePrice ~ SqFtTotLiving + SqFtLot + Bathrooms + Bedrooms + BldgGrade + PropertyType + NbrLivingUnits + SqFtFinBasement + YrBuilt + YrRenovated + NewConstruction, data=house, na.action=na.omit) > step_lm <- stepAIC(house_full, direction="both") > step_lm Call: lm(formula = AdjSalePrice ~ SqFtTotLiving + Bathrooms + Bedrooms + BldgGrade + PropertyType + SqFtFinBasement + YrBuilt, data = house, na.action = na.omit) Coefficients: (Intercept) SqFtTotLiving Bathrooms Bedrooms 6227632.22 186.50 44721.72 -49807.18 BldgGrade PropertyTypeSingle Family PropertyTypeTownhouse SqFtFinBasement 139179.23 23328.69 92216.25 9.04 YrBuilt -3592.47
- 상호 연관된 예측변수들을 사용하면 회귀계수의 부호와 값의 의미를 해석하기가 어려울 수 있다.
- 추정값의 표준오차가 커진다
- 침실 수, 평수 욕실 수에 대한 변수들은 모두 상관관계가 있다.
- 방정식에서 변수 SqFtTotLiving, SqFtFinBasement, Bathrooms를 제거한 후 얻은 회귀모델을 통해 이것을 설명할 수 있다.
- update 함수를 사용하여 모델의 변수(집의 크기인 SqFtTotLiving)를 제외한 결과 Bedrooms의 계수가 양수가 되었다
- 침실이 많으면 집의 크기가 커지는 것이 일반적이다
> update(step_lm, . ~ . -SqFtTotLiving - SqFtFinBasement - Bathrooms)
Call:
lm(formula = AdjSalePrice ~ Bedrooms + BldgGrade + PropertyType +
YrBuilt, data = house, na.action = na.omit)
Coefficients:
(Intercept) Bedrooms BldgGrade PropertyTypeSingle Family
4834680 27657 245709 -17604
PropertyTypeTownhouse YrBuilt
-47477 -3161
- 변수 간 상관관계는 회귀계수를 해석할 때 고려해야 할 여러 문제들 가운데 한 가지
- 모델 house_lm에는 주택의 위치를고려할 변수가 따로 없는 상태에서, 서로 다른 유형의 지역들 정보가 섞여 있다.
- 이 경우 위치 정보는 교란변수일 수 있다.
다중공선성
- 다중공선성(multicollinearity) 또는공선성(collinearity): 예측변수들이 완벽하거나 거의 완벽에 가까운 상관성을 갖는다고 할 때, 회귀는 불안정하며 계산이 불가능
- 변수 상관이 극단적인 경우 다중공선성이 나타난다.
- 이는 예측변수 사이의 중복성을 판단하는 조건이 된다.
- 완전 디중공선성은 한 예측변수가 다른 변수들의 선형결합으로 표현된다는 것을 의미
- 다중공선성은 다음 경우에 발생
- 오류로 인해 한 변수가 여러 번 포함된 경우
- 요인변수로 부터 \(P-1\)개가 아닌 \(P\)개의 가변수가 만들어진 경우
- 두 번수가 서로 거의 완벽하게 상관성이 있는 경우
- 회귀분석에서는 디중공선성 문제를 반드시 해결해야 한다.
- 다중공선성이 사라질 때까지 변수를 제거
- 완전 다중공선성이 존재하는 상황에서는 회귀를 통해 제대로 된 답을 얻을 수가 없다.
- R을 포함한 많은 소프트웨어 패키지는 특정 유형의 다중공선성 문제를 자동으로 처리
교란변수
- 교란변수(confounding variable): 중요한 예측변수지만 회귀식에서 누락되어 결과를 잘못되게 이끄는 변수
- 상관변수는 응답변수와 비슷한 예측관계를 갖는 다른 변수가 포함되어 발생하는 문제
- 교란변수는 회귀식에 중요한 변수가 포함되지 못해서 생기는 누락의 문제
- 이 경우 방정식 계수에 대한 순진한 해석은 잘못된 결론으로 이어질수있다.
- 킹 카운티 회귀모델 house_ lm
- SqFtlot, Bathrooms , Bedrooms의 회귀계수는 모두 음수
> house_lm <- lm(AdjSalePrice ~ SqFtTotLiving + SqFtLot + Bathrooms + Bedrooms + BldgGrade, data=house, na.action=na.omit) > house_lm Call: lm(formula = AdjSalePrice ~ SqFtTotLiving + SqFtLot + Bathrooms + Bedrooms + BldgGrade, data = house, na.action = na.omit) Coefficients: (Intercept) SqFtTotLiving SqFtLot Bathrooms Bedrooms BldgGrade -5.287e+05 2.127e+02 -1.430e-02 -1.823e+04 -4.657e+04 1.088e+05
- 위치 정보를 고려하기 위해, 우편번호를 가장 싼 지역 (1)에서 가장 비싼 지역 (5)까지 5개의 그룹으로 분류하는 새로운 변수 ZipGroup을 포함
> house <- read.csv('house_sales.csv', sep='\t') > zip_groups <- house %>% + mutate(resid = residuals(house_lm)) %>% + group_by(ZipCode) %>% + summarize(med_resid = median(resid), + cnt = n()) %>% + # sort the zip codes by the median residual + arrange(med_resid) %>% + mutate(cum_cnt = cumsum(cnt), + ZipGroup = factor(ntile(cum_cnt, 5))) > house <- house %>% + left_join(select(zip_groups, ZipCode, ZipGroup), by='ZipCode') > lm(AdjSalePrice ~ SqFtTotLiving + SqFtLot + Bathrooms + Bedrooms + BldgGrade + PropertyType + ZipGroup, data=house, na.action=na.omit) Call: lm(formula = AdjSalePrice ~ SqFtTotLiving + SqFtLot + Bathrooms + Bedrooms + BldgGrade + PropertyType + ZipGroup, data = house, na.action = na.omit) Coefficients: (Intercept) SqFtTotLiving SqFtLot Bathrooms -6.737e+05 1.938e+02 3.526e-01 8.121e+03 Bedrooms BldgGrade PropertyTypeSingle Family PropertyTypeTownhouse -3.953e+04 1.048e+05 2.827e+03 -2.126e+04 ZipGroup2 ZipGroup3 ZipGroup4 ZipGroup5 5.913e+04 1.029e+05 1.727e+05 3.340e+05
- ZipGroup 이 분명히 중요한 변수라는 것을 알 수 있다.
- 가장 비싼 우편번호 그룹(ZipGroup5)의 주택 가격이 약 $334,000나 더 높다.
- SqFtLot과 Bathrooms의 계수도 이제 양수이며, 욕실을 하나 추가하면 판매 가격이 $8,121달러 정도 증가
- Bedrooms 에 대한 계수는 여전히 음수
- 이 결과가 그렇게 직관적이지는 않지만, 이것은 부동산 업계에서 잘 알려진 현상
- 살기 좋은 지역에서는 욕실 수가 같은 주택의 경우 작은 침실이 여러 개 있으면 오히려 가격이 떨어진다.
주효과와 상호작용
- 주효과(main effect): 다른 변수들과 독립된 하나의 예측변수와 결과변수 사이의 관계
- 회귀식에서 종종 예측변수라고도 함
- 모델에서 주효과만 사용한다면 여기에는 예측변수와 응답변수 간의 관계가 다른 예측변수들에 대해 독립적이라는 암묵적인 가정이 있지만 종종 틀린 가정이다
- 킹 카운티 주택 데이터의 회귀모델은 ZipCode를 비롯한 여러 변수를 주효과로 포함
- 부동산에서 위치가 가장 중요하다는 사실은 모두 알고 있다.
- 주택 크기와 매매 가격 간의 관계가 위치에 달려 있다고 가정하는 것은 자연스러운 일이다.
- 임대료가싼 지역에 지어진 큰 집은 비싼 지역에 지어진 큰 집과 같은 가치를 유지하기가 어려울 것이다.
> lm(AdjSalePrice ~ SqFtTotLiving + SqFtLot + Bathrooms + Bedrooms + BldgGrade + PropertyType + ZipGroup, data=house, na.action=na.omit)
Call:
lm(formula = AdjSalePrice ~ SqFtTotLiving + SqFtLot + Bathrooms +
Bedrooms + BldgGrade + PropertyType + ZipGroup, data = house,
na.action = na.omit)
Coefficients:
(Intercept) SqFtTotLiving SqFtLot Bathrooms
-6.737e+05 1.938e+02 3.526e-01 8.121e+03
Bedrooms BldgGrade PropertyTypeSingle Family PropertyTypeTownhouse
-3.953e+04 1.048e+05 2.827e+03 -2.126e+04
ZipGroup2 ZipGroup3 ZipGroup4 ZipGroup5
5.913e+04 1.029e+05 1.727e+05 3.340e+05
- 상호작용(interaction): 둘 이상의 예측변수와 응답변수 사이의 상호의존적 관계
- R에서 * 연산지를 사용하면 모델에 변수의 상호작용을 포함시킬 수 있다.
- 킹 카운티 데이터를 모델링할 때, SqFtTotLiving과 ZipGroup 간의 상호작용을 고려하는 예
> lm(AdjSalePrice ~ SqFtTotLiving*ZipGroup + SqFtLot + Bathrooms + Bedrooms + BldgGrade + PropertyType, data=house, na.action=na.omit)
Call:
lm(formula = AdjSalePrice ~ SqFtTotLiving * ZipGroup + SqFtLot +
Bathrooms + Bedrooms + BldgGrade + PropertyType, data = house,
na.action = na.omit)
Coefficients:
(Intercept) SqFtTotLiving ZipGroup2 ZipGroup3
-4.990e+05 1.030e+02 -3.794e+04 5.436e+04
ZipGroup4 ZipGroup5 SqFtLot Bathrooms
-2.666e+03 -1.722e+05 5.535e-01 4.197e+02
Bedrooms BldgGrade PropertyTypeSingle Family PropertyTypeTownhouse
-3.919e+04 1.086e+05 4.530e+03 -2.333e+04
SqFtTotLiving:ZipGroup2 SqFtTotLiving:ZipGroup3 SqFtTotLiving:ZipGroup4 SqFtTotLiving:ZipGroup5
4.999e+01 1.599e+01 8.230e+01 2.356e+02
- 주택의 위치와 크기는 강한 상호작용이 있는 것으로 보인다.
- 가격대가 가장 낮은 ZipGroup1 에서 집에 대한 기울기는 제곱피트당 약 $103로, 주효과 SqFtTotLiving 에 해당하는 계수와 같다
- R이 요인변수에 대해 기준 부호화를 사용하고 있기 때문
- 가장 비싼 ZipGroup5에 대한 계수는 이 주효과 계수에 SqFtTotLiving:ZipGroup5의 경우를 더한 합, 즉 $103 + $235.6 = $338.6와 같다.
- 가격대가 가장 비싼 지역에서는 주택의 크기가 1제곱피트 늘어날 때 가장 낮은 지역에 비해 예상 매매가가 거의 3배가 차이 난다.
'Predictive Analytics' 카테고리의 다른 글
다항회귀 (0) | 2019.09.30 |
---|---|
회귀 진단: 가설 검정 (0) | 2019.09.27 |
회귀에서의 요인변수 (0) | 2019.09.27 |
회귀를 이용한 예측 (0) | 2019.09.26 |
가중회귀 (0) | 2019.09.26 |