[R데이터분석] 다중회귀분석

근이의 개발일기·2024년 12월 9일
post-thumbnail

다중회귀분석

res=lm(mpg~factor(gear)+wt+vs, data=m)
res

Call:
lm(formula = mpg ~ factor(gear) + wt + vs, data = m)

Coefficients:
(Intercept) factor(gear)4 factor(gear)5 wt vs

32.5445 1.3538 -0.2035 -4.3467 2.4106

💡

위 결과는 lm 함수를 사용해 mpg(마일 당 갤런)라는 종속 변수와 gear, wt, vs 등의 독립 변수를 포함한 회귀 모델을 만든 결과입니다. 모델에 포함된 각 계수(Coefficients)는 해당 변수가 mpg에 미치는 영향을 나타냅니다.

해석

  1. Call:
    • lm(formula = mpg ~ factor(gear) + wt + vs, data = m)mpg종속 변수로, gear(기어 수), wt(차량의 무게), vs(엔진 형태)를 독립 변수로 하여 회귀 분석을 실행한 것을 의미합니다.
    • gear는 범주형 변수로 취급됩니다(factor(gear)).
  2. Coefficients:
    • (Intercept) = 32.5445 이 값은 절편으로, 모든 독립 변수가 0일 때 예측되는 mpg 값이 32.5445임을 의미합니다.
    • factor(gear)4 = 1.3538 gear4단일 때 mpg가 약 1.3538만큼 증가합니다. 이는 기본(참조) 레벨인 gear=3을 기준으로 한 값입니다.
    • factor(gear)5 = -0.2035 gear5단일 때 mpg가 약 0.2035 감소합니다. 마찬가지로 기본 레벨인 gear=3과 비교한 상대적인 차이입니다.
    • wt = -4.3467 차량의 무게(wt)가 1단위 증가할 때마다 mpg는 약 4.3467만큼 감소합니다. 이 값은 차량 무게가 증가할수록 연비가 낮아지는 경향을 보여줍니다.
    • vs = 2.4106 vs가 1일 때(아마 엔진의 특정 형태일 경우), mpg가 약 2.4106만큼 증가함을 의미합니다.

요약

  • 이 회귀 모델에 따르면, 기어 수, 차량의 무게, 엔진 유형mpg에 영향을 미치는 것으로 나타났습니다.
  • 특히, 차량 무게(wt)가 mpg에 가장 큰 영향을 미치며, 무게가 증가하면 연비가 크게 떨어집니다.
  • gear의 4단과 vs 변수도 연비를 높이는 요인으로 작용합니다.

summary(res)

Call:
lm(formula = mpg ~ factor(gear) + wt + vs, data = m)

Residuals:
Min 1Q Median 3Q Max
-3.5563 -2.2206 -0.4998 1.4606 5.6538

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 32.5445 3.1915 10.197 9.32e-11
factor(gear)4 1.3538 1.4809 0.914 0.369
factor(gear)5 -0.2035 1.7464 -0.117 0.908
wt -4.3467 0.7639 -5.690 4.81e-06

vs 2.4106 1.4193 1.698 0.101

Signif. codes: 0 ‘*’ 0.001 ‘’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.822 on 27 degrees of freedom
Multiple R-squared: 0.8091, Adjusted R-squared: 0.7808
F-statistic: 28.61 on 4 and 27 DF, p-value: 2.332e-09

💡

초기 모델의 요약 (summary(res))

  1. Residuals

    잔차는 mpg가 예측 값에서 벗어난 정도를 나타내며, 중앙값과 사분위 범위를 통해 분포의 범위를 확인할 수 있습니다.

  2. Coefficients

    • 각 변수에 대한 추정 계수(Estimate)표준 오차(Std. Error), t 값, p 값을 보여줍니다.
    • 유의미한 계수는 별표(`)로 표시되며, **wt*는 **p-value < 0.001**로 mpg`에 매우 유의미한 영향을 미치는 변수임을 확인할 수 있습니다.
  3. 모델 설명력

    • Multiple R-squared: 0.8091로, 모델이 데이터 변동의 약 81%를 설명합니다.
    • Adjusted R-squared: 0.7808로, 변수 개수를 고려한 설명력이 약간 낮아지지만 여전히 높은 수준입니다.
  4. 모델의 유의성 (F-statistic)
    - F 통계량이 28.61로, 모델 전체가 매우 유의미함을 보여줍니다 (p-value < 0.001).

vif(res)
GVIF Df GVIF^(1/(2*Df))
wt 2.175251 1 1.474873
vs 1.992448 1 1.411541
factor(gear) 2.436001 2 1.249308

💡

주어진 코드는 mtcars 데이터셋을 사용해 mpg를 예측하는 회귀 모델을 만든 뒤, 다중 공선성 확인을 수행한 결과입니다.

VIF(Variance Inflation Factor) 분석

VIF 값은 다중 공선성을 평가하는 지표로, 일반적으로 VIF 값이 5를 넘으면 공선성이 높다고 판단합니다.

                 GVIF Df GVIF^(1/(2*Df))
wt           2.175251  1        1.474873
vs           1.992448  1        1.411541
factor(gear) 2.436001  2        1.249308
  • wt: VIF가 2.175로, 공선성이 높지 않으므로 wt 변수는 다른 변수들과 독립적입니다.
  • vs: VIF가 1.992로 공선성이 낮은 편입니다.
  • factor(gear): VIF가 2.436로 다른 변수들과의 공선성 위험은 크지 않습니다.

세 변수 모두 VIF < 5이므로 다중 공선성 문제가 없다고 볼 수 있습니다.

일반적으로 VIF(Variance Inflation Factor)의 해석 기준은 다중 회귀 분석(lm())과 로지스틱 회귀 분석(glm())에서 다르게 적용할 수 있습니다. 하지만, 그 기준이 엄격히 고정된 것은 아니며 상황에 따라 유동적입니다. 아래에 lm()와 glm()에서의 VIF 해석 차이를 설명합니다.


VIF의 의미

  • Variance Inflation Factor (분산팽창요인): 독립변수 간의 다중공선성(multicollinearity)을 평가하는 지표.
  • VIF는 특정 독립변수와 나머지 독립변수 간의 상관성을 측정하며, 해당 변수의 분산이 얼마나 팽창되었는지를 나타냅니다.
  • VIF가 클수록 해당 독립변수는 다른 독립변수와 높은 상관관계를 가지며, 다중공선성이 의심됩니다.

VIF 해석 기준

모형VIF 기준설명
lm() (선형회귀)5 또는 105 이상일 경우 다중공선성이 있을 가능성, 10 이상이면 강한 다중공선성이 있음.
glm() (로지스틱 회귀)1010을 기준으로 공선성을 평가. 10을 넘으면 다중공선성이 의심됨.

step(res)
Start: AIC=70.95
mpg ~ factor(gear) + wt + vs

Df Sum of Sq RSS AIC

factor(gear) 2 9.111 224.09 68.283
214.98 70.954

vs 1 22.968 237.95 72.202

wt 1 257.783 472.77 94.172

Step: AIC=68.28
mpg ~ wt + vs

Df Sum of Sq RSS AIC

224.09 68.283

vs 1 54.23 278.32 73.217

wt 1 405.43 629.52 99.335

Call:
lm(formula = mpg ~ wt + vs, data = m)

Coefficients:
(Intercept) wt vs

33.004 -4.443 3.154

💡

위 분석은 회귀 모델을 최적화하는 과정에서 step 함수를 사용해 변수 선택을 통해 AIC(Akaike Information Criterion)를 최적화한 결과를 보여줍니다. 이 과정과 결과들을 아래와 같이 단계별로 해석할 수 있습니다.

Stepwise Selection (AIC 최적화)

  1. 초기 모델 (mpg ~ factor(gear) + wt + vs)

    • 초기 모델에는 factor(gear), wt, vs 세 변수가 포함되어 있으며 AIC 값은 70.95입니다.
  2. 변수 선택 과정

    • factor(gear): factor(gear) 변수를 제거하면 AIC가 68.28로 감소하여 성능이 개선됩니다.
    • vs: vs를 제거하면 AIC가 72.20으로 증가해 모델 성능이 떨어집니다.
    • wt: wt를 제거하면 AIC가 94.17로 크게 증가하여 성능이 크게 저하됩니다.

    위 결과에 따라 factor(gear) 변수를 제거한 모델이 최적 모델로 선택되었습니다.

  3. 최종 모델 (mpg ~ wt + vs)

    • 최적화된 모델은 AIC가 68.28로 감소하며, mpg에 유의미한 영향을 미치는 변수는 wtvs 두 개로 선택되었습니다.

최종 모델의 계수와 요약

회귀 모델(mpg ~ wt + vs):

  • (Intercept) = 33.004 절편이 33.004로, 독립 변수들이 0일 때 예측되는 mpg 값입니다.
  • wt = -4.443 차량 무게(wt)가 증가할수록 mpg가 감소하며, wt가 1 단위 증가하면 mpg가 약 4.443만큼 감소합니다.
  • vs = 3.154 vs가 1일 때(특정 엔진 형태일 경우), mpg3.154 증가하는 영향을 미칩니다.

초기 모델의 요약 (summary(res))

  1. Residuals

    잔차는 mpg가 예측 값에서 벗어난 정도를 나타내며, 중앙값과 사분위 범위를 통해 분포의 범위를 확인할 수 있습니다.

  2. Coefficients

    • 각 변수에 대한 추정 계수(Estimate)표준 오차(Std. Error), t 값, p 값을 보여줍니다.
    • 유의미한 계수는 별표(`)로 표시되며, **wt*는 **p-value < 0.001**로 mpg`에 매우 유의미한 영향을 미치는 변수임을 확인할 수 있습니다.
  3. 모델 설명력

    • Multiple R-squared: 0.8091로, 모델이 데이터 변동의 약 81%를 설명합니다.
    • Adjusted R-squared: 0.7808로, 변수 개수를 고려한 설명력이 약간 낮아지지만 여전히 높은 수준입니다.
  4. 모델의 유의성 (F-statistic)

    • F 통계량이 28.61로, 모델 전체가 매우 유의미함을 보여줍니다 (p-value < 0.001).

종합 해석

  • 초기 모델에서는 wtvsmpg에 가장 유의미한 영향을 미치는 것으로 나타났고, 최적화된 모델에서는 factor(gear) 변수를 제거해 모델 성능이 개선되었습니다.
  • 최적화 모델에서 wt(차량 무게)는 연비에 큰 영향을 미치며, vs(엔진 형태)도 어느 정도 영향을 주는 요인으로 작용합니다.
  • gear를 제외하고 진행해도 같게 결과가 나오는 것을 알 수 있다.

library(lmtest)
필요한 패키지를 로딩중입니다: zoo

다음의 패키지를 부착합니다: ‘zoo’

The following objects are masked from ‘package:base’:

as.Date, as.Date.numeric

m1=lm(finalgrade ~ per1grade+per2grade, data=g)
m2=lm(finalgrade ~ per1grade, data=g)
lrtest(m1,m2)
Likelihood ratio test

Model 1: finalgrade ~ per1grade + per2grade
Model 2: finalgrade ~ per1grade
#Df LogLik Df Chisq Pr(>Chisq)
1 4 -1070.7
2 3 -1308.8 -1 476.18 < 2.2e-16 ***

Signif. codes: 0 ‘*’ 0.001 ‘’ 0.01 ‘*’ 0.05 ‘.’ 0.1

💡

lrtest (Likelihood Ratio Test) 설명

lrtest() 함수는 우도비 검정(Likelihood Ratio Test, LRT)을 수행하여 두 개의 중첩된 회귀 모델을 비교합니다. 더 복잡한 모델이 더 단순한 모델보다 더 나은지 판단하는 데 사용합니다.


lrtest()의 목적

  • 단순 모델과 복잡한 모델의 차이 검정을 수행합니다.
  • 귀무가설 (H0): 두 모델이 동일하게 적합하다 (복잡한 모델의 추가 변수가 의미 있는 기여를 하지 않는다).
  • 대립가설 (H1): 더 복잡한 모델이 더 적합하다 (추가된 변수들이 모델 성능 향상에 유의미한 영향을 미친다).

lrtest()의 주요 매개변수

  • m1: 복잡한 모델 (full model, 더 많은 변수를 포함한 모델)
  • m2: 단순한 모델 (nested model, 적은 변수를 포함한 모델)
  • 로그 우도 (LogLik): 모델의 적합도를 측정하는 지표로, 값이 클수록 더 적합한 모델.
  • Df: 자유도 (모델에 포함된 계수의 수).
  • Chisq: 두 모델 간의 로그우도의 차이를 카이제곱 분포로 나타낸 값.
  • p-value: 귀무가설(H0)을 기각할 수 있는지 여부를 나타냄. p-value < 0.05이면 더 복잡한 모델이 유의미하게 더 나은 모델이라고 할 수 있습니다.

lrtest() 해석 방법

결과 예시

Likelihood ratio test

Model 1: finalgrade ~ per1grade + per2grade
Model 2: finalgrade ~ per1grade
#Df  LogLik  Df  Chisq   Pr(>Chisq)
  1     4   -1070.7
  2     3   -1308.8  -1  476.18  < 2.2e-16 ***

해석하기

항목해석
Model 1더 복잡한 모델: finalgrade ~ per1grade + per2grade
Model 2더 단순한 모델: finalgrade ~ per1grade
Df (자유도)Model 1의 자유도: 4, Model 2의 자유도: 3
LogLik로그 우도 (Log-Likelihood) 값 (값이 클수록 좋음)
Chisq두 모델 간의 로그 우도의 차이(카이제곱 통계량)
Pr(>Chisq)p-value, p < 0.001 → 더 복잡한 모델이 유의미함
Signif. codesp-value에 따라 유의성을 보여줌 (***: p < 0.001)

각 요소에 대한 의미

  • Df (자유도)
    • 더 복잡한 모델의 계수 개수(절편 포함) = 4
    • 더 단순한 모델의 계수 개수(절편 포함) = 3
    • 자유도의 차이 = 4 - 3 = 1 → 이 차이에 대한 검정을 수행.
  • LogLik (로그 우도)
    • 더 복잡한 모델의 로그 우도: 1070.7 (더 좋은 모델의 로그우도는 더 큽니다.)
    • 더 단순한 모델의 로그 우도: 1308.8
    • 차이 = -1070.7 - (-1308.8) = 476.18
  • Chisq (카이제곱 통계량)
    • 로그 우도의 차이로 계산됩니다.
    • 이 값이 클수록 복잡한 모델이 더 나은 것으로 간주합니다.
  • p-value
    • p-value < 0.001로 매우 작으므로, 귀무가설(H0)을 기각할 수 있습니다.
    • 즉, 더 복잡한 모델이 유의미하게 더 좋은 모델이라는 결론을 내릴 수 있습니다.

lrtest() 해석의 결론

  1. 더 복잡한 모델이 항상 좋은 것은 아닙니다.
    • 복잡한 모델은 과적합(Overfitting)을 일으킬 수 있습니다.
    • lrtest()의 p-value가 0.05 이상이면, 단순한 모델을 선택하는 것이 더 좋습니다.
  2. p-value 기준 해석
    • p-value < 0.05 → 더 복잡한 모델이 더 좋다고 결론.
    • p-value > 0.05 → 더 단순한 모델로도 충분하다고 해석.
  3. 언제 lrtest()를 사용하나?
    • 변수를 추가할 때, 그 변수가 유의미하게 모델에 기여하는지 확인할 때.
    • 단순 모델과 복잡한 모델 간의 유의미한 차이를 평가하고, 단순한 모델로 충분한지 확인할 때.
    • 과적합을 방지하기 위해 모델을 검토할 때 사용합니다.

최종 정리

항목설명
목적더 복잡한 모델과 단순한 모델의 유의미한 차이 검정
검정 방법우도비 검정 (Likelihood Ratio Test) 수행
귀무가설 (H0)복잡한 모델과 단순 모델이 적합도에서 차이가 없다
대립가설 (H1)복잡한 모델이 더 적합하다
Chisq로그우도의 차이 (카이제곱 통계량)
p-valuep < 0.05 → 더 복잡한 모델이 더 좋음
언제 사용?변수를 추가할 때, 과적합을 방지하고자 할 때

결론

  1. lrtest()는 단순 모델과 복잡한 모델의 차이를 검정하는 도구입니다.
  2. 우도비(Log-Likelihood Ratio) 검정을 사용하여 더 복잡한 모델이 단순한 모델보다 유의미하게 더 나은지를 판단합니다.
  3. p-value < 0.05면, 더 복잡한 모델이 더 적합하다고 결론을 내립니다.
  4. p-value > 0.05면, 단순한 모델도 충분하다고 볼 수 있습니다.
  5. 과적합 방지 및 변수 선택에 중요한 역할을 하며, step() 함수와 함께 사용하기도 합니다.

step()과 lrtest()

  • step()은 변수를 자동으로 선택하는 과정이고, lrtest()는 단순 모델과 복잡한 모델의 유의미한 차이를 검정합니다.
  • 둘을 꼭 함께 사용할 필요는 없으나,
    • step()으로 최적 모델을 찾고
    • lrtest()로 단순 모델과 최적 모델을 비교하는 것이 가장 좋은 절차일 수 있습니다.
  • step()의 결과만으로도 최적 모델을 찾을 수 있지만,
    • lrtest()로 더 간단한 모델과 비교하여
    • 단순한 모델로도 충분한지 확인하는 것이 더 나은 분석 과정입니다.

image.png

  • plot

0개의 댓글