회귀식 해석 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나 더 높다.
    • SqFtLotBathrooms의 계수도 이제 양수이며, 욕실을 하나 추가하면 판매 가격이 $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에서 * 연산지를 사용하면 모델에 변수의 상호작용을 포함시킬 수 있다.
    • 킹 카운티 데이터를 모델링할 때, SqFtTotLivingZipGroup 간의 상호작용을 고려하는 예
> 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

+ Recent posts