Linear Regression / Correlation (회귀분석 / 상관분석)

연속형 자료로 이루어진 변수 간 분석

 

  • 회귀분석 기본 개념
    • 지도 학습(Supervised Learning) 방법론 중 예측 모델을 만드는 데 사용되는 분석기법
      • 기존 데이터를 기반으로 생성된 모델로 새로운 데이터가 들어왔을 때 어떤 값이 될지를 예측?
      • 여기 설명이 짱인듯? ?http://kkokkilkon.tistory.com/77
    • 최소제곱법
      • 잔차 제곱의 함이 최소가 되는 직선을 회귀선으로 한다
    • 관련 지표
      • 회귀제곱합(SSR) = 예측값에서 관측값 평균을 뺀 수치의 제곱합
        • 회귀제곱평균(MSR) = SSR/k? ? ? ? ? ? *k는 설명변수 x의 수
        • 평균으로 말하는 것과 회귀로 예측하는 것이 얼마나 차이가 있는가 (baseline = 평균)
      • 잔차제곱합(SSE) = 관측값에서 예측값을 뺀 수치의 제곱합
        • 잔차제곱평균(MSE) = SSE / (n-k-1)
        • 회귀로 예측하더라도 좁힐 수 없는 관측값과의 차이가 얼마나 있는가
      • 총제곱합(SST) = SSR + SSE
        • 총제곱평균(MST) = SST / (n-1)
      • F통계량 = MSR / MSE
        • 회귀로 좁힐 수 없는 예측 오차 대비, 회귀로 인해 좁혀진 예측 오차가 얼마나 큰가
      • R2 = SSR / SST
        • 전체 편차 중 회귀로 설명 가능한 편차가 몇 %인가?
        • 전체 편차 100 중에 50이 회귀로 설명 가능한 편차라면 설명력은?502?/ 1002?= 1 / 4 = 25 % 로 나타난다 (제곱으로 인한 뻥튀기 효과?! -_-)
      • Adjusted R2 = 1 – MSE / MST
        • 설명변수의 개수를 고려하여 제곱합들을 자유도로 나눈 값

 

  • 상관분석: 데이터 분포의 시각화
    • ggplot() + geom_point() ?// ?ggplot() + geom_jitter()? ?
    • 중복값이 많은 경우?
      • geom_jitter() 를 사용하거나
      • alpha 옵션을 주거나
      • 표본 추출하여 그래프를 그린다

 

  • 상관분석: 상관계수 확인
    • 상관계수는 항상 산점도와 함께 확인해야 함
      • 산점도는 경사를 이야기하지 않는다?
      • 비선형적 관계와 데이터의 군집성 등의 패턴은 전혀 잡아내지 못한다.

 

  • 회귀분석
    • 회귀분석 시작할 때, 상관분석은 기본으로 해볼 것…

 

  • Train / Test 데이터 세팅
    • caTools() 라이브러리 사용

 

  • 선형회귀 모형 적합
    • 최소제곱법: 잔차의 제곱합을 최소화시키는 직선 찾기
    • 모형 적합도 확인
      • R-squared = SSR / SST
        • x변수가 하나인 단순회귀 모형인 경우, R-squared 값은 피어슨 상관계수의 제곱임
      • Adjusted R-squared
        • 단순히 x변수가 추가될때마다 R-squared 값이 증가하는 것 방지

 

 

  • 선형회귀 모형의 가정 진단
    • 다음을 모두 만족해야 함
      • 선형성: x와 y의 관계가 선형이다
      • 독립성: x가 여러 개인 경우, 설명변수 간 상관관계가 적다.
      • 잔차의 등분산성(독립성): 잔차의 분포가 독립이다 (점점 커지거나 점점 작아지는 등, 특정한 패턴을 보이지 않는다)
      • 잔차의 정규성: 잔차가 정규분포를 따른다.
      • 참고 사이트?http://rstudio-pubs-static.s3.amazonaws.com/190997_40fa09db8e344b19b14a687ea5de914b.html
    • 다중공선성 문제
      • 회귀 모델의 설명변수 간 상관관계가 있는지 확인 -> 있으면 안된다!
      • 다중공선성이 있는 경우, 설명력이 적은 변수를 삭제하는 게 일반적
      • VIF (Variation Inflation Factor, 분산팽창인수)
        • VIF가 10을 넘으면(혹은 GVIF^(1/(2*Df))가 2를 넘으면), 다중공선성 문제가 있다고 본다. ?
        • 이 기준은 약간 자의적일 수 있는듯.?
        • 다중공선성 문제가 있는 경우,
          • 1) VIF 수치가 큰 변수 제거
          • 2) 더 많은 데이터 수집
          • 3) 능형회귀(ridge regression), 주성분회귀(principal components regression) 사용 고려

 

  • 선형회귀 모형 예측
    • predict() 함수 활용
    • train과 test를 분리한 경우, train을 통해 만든 모델을 test에 적용
    • 그렇지 않은 경우, 임의의 new data를 대상으로 모델 적용?

 


Leave Comment

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다