23.통계데이터분석 - 회귀분석 - 다중회귀분석.Rmd
0.02MB
23.통계데이터분석---회귀분석---다중회귀분석.html
1.31MB
23.통계데이터분석 - 회귀분석 -다중회귀분석
2022-08-28
https://www.youtube.com/watch?v=yt5vkrrAoDI&list=PLY0OaF78qqGAxKX91WuRigHpwBU0C2SB_&index=24
1. 다중회귀분석(multiple regression analysis) 개요
- 다중회귀분석 의미와 특징
- 단순회귀분석으로 종속변수와 1개의 독립변수 간 선형관계 분석 가능
- 하지만 일반적으로 하나의 독립변수만으로 종속변수를 설명하는 경우는 드뭄
- 쌀 수확량(종석)에는 온도, 습도, 강수량 등 다양한 요인( 이 영향을 미침
- 온라인 쇼핑몰의 구매 행위(종속)에 영향을 미치는 요인에는 가격만이 아닌
- 품질, 서비스 같은 전통적 상거래 행위 요인
- 쇼핑몰디자인, 시스템 반응속도, 사업자 신뢰 등 다양한 유인이 포함될 수 있음
- 이처럼 종속변수와 2개 이상의 독립변수 간 선형관계를 도출하는 통계분석기법을 다중선형회귀분석 또는 다중회귀분석이라 함
- p개의 예측변수를 갖는 다중회귀모델은 위 슬라이드의 수식과 같은 방식으로 정의될 수 있음
- y 는 종속변수, \(x_1\) ~ \(x_p\) 는 독립변수를 의미함
- \(β_0\) 는 절편, \(β_1\) ~ \(β_p\) 는 \(x_1\) ~ \(x_p\) 까지의 변수에 대응되는 회귀계수
2. 다중회귀분석 수행 절차
2-1. mtcars 데이터셋 설명
https://youtu.be/yt5vkrrAoDI?list=PLY0OaF78qqGAxKX91WuRigHpwBU0C2SB_&t=105
- 32개의 자동차 모델에 대한 다양한 정보가 11개 변수에 저장됨
- 이 변수들 가운데서 일부를 추출해 다중회귀모델을 생성하고 변수간의 관계 분석을 하고자 함
- 분석에 사용할 변수는 연비(mpg), 배기량(disp), 마력(hp), 기어비(drat), 자동차 무게(wt)임
- 연비(mpg)를 종속변수, 나머지를 독립변수로 지정해 연비와 나머지 자동차특성 간 관계를 분석할 것임
str(mtcars)
## 'data.frame': 32 obs. of 11 variables:
## $ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
## $ cyl : num 6 6 4 6 8 6 8 4 4 6 ...
## $ disp: num 160 160 108 258 360 ...
## $ hp : num 110 110 93 110 175 105 245 62 95 123 ...
## $ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
## $ wt : num 2.62 2.88 2.32 3.21 3.44 ...
## $ qsec: num 16.5 17 18.6 19.4 17 ...
## $ vs : num 0 0 1 1 0 1 0 1 1 1 ...
## $ am : num 1 1 1 0 0 0 0 0 0 0 ...
## $ gear: num 4 4 4 3 3 3 3 4 4 4 ...
## $ carb: num 4 4 1 1 2 1 4 2 2 4 ...
- 이 5개 변수를 추출해 별도의 데이터셋 생성
mtcars <- mtcars[c("mpg", "wt", "hp", "disp", "drat")]
head(mtcars)
## mpg wt hp disp drat
## Mazda RX4 21.0 2.620 110 160 3.90
## Mazda RX4 Wag 21.0 2.875 110 160 3.90
## Datsun 710 22.8 2.320 93 108 3.85
## Hornet 4 Drive 21.4 3.215 110 258 3.08
## Hornet Sportabout 18.7 3.440 175 360 3.15
## Valiant 18.1 3.460 105 225 2.76
2-2. summary(),cor() - 요약통계량으로 분포, 상관계수로 변수간 관계 추정
- 요약통계량에서 변수 분포의 대략적 추정 가능
- 연비(mpg) 변수는 중위수가 평균보다 왼쪽에 있음
- 마력(hp) 변수도 중위수가 평균보다 왼쪽에 있음
- 자동차 무게(wt) 변수는 중위수가 평균보다 오른쪽에 있음
- 중위수와 평균 위치를 토대로 대략적인 분포 모양을 짐작할 수 있음
- 중위수가 평균보다 왼쪽에 있으면 대체로 오른쪽으로 꼬리가 긴 분포의 모양을 하고
- 중위수가 평균보다 오른쪽에 있으면 대체로 왼쪽으로 꼬리가 긴 분포의 모양을 함
- mpg와 hp는 오른쪽으로, wt는 왼쪽으로 꼬리가 긴 분포를 갖는다고 추정가능
- 상관계수에서 종속변수로 사용할 연비와 나머지 4개 변수 간 관계의 대략적 파악 가능
- 연비(mpg)는 자동차 무게(wt), 마력(hp), 배기량(disp)과 부의 선형관계를 가지며,
- 연비(mpg)는 기어비(drat)와는 정의 선형관계를 가짐
- 그래서 “자동차의 마력이 증가하고 무게가 커지고 배기량이 커지면 연비는 줄어드는 경향이 있고, 반면 기어비가 증가하면 연비는 증가하는 경향이 있다” 라고 대략적 추정 가능
summary(mtcars)
## mpg wt hp disp
## Min. :10.40 Min. :1.513 Min. : 52.0 Min. : 71.1
## 1st Qu.:15.43 1st Qu.:2.581 1st Qu.: 96.5 1st Qu.:120.8
## Median :19.20 Median :3.325 Median :123.0 Median :196.3
## Mean :20.09 Mean :3.217 Mean :146.7 Mean :230.7
## 3rd Qu.:22.80 3rd Qu.:3.610 3rd Qu.:180.0 3rd Qu.:326.0
## Max. :33.90 Max. :5.424 Max. :335.0 Max. :472.0
## drat
## Min. :2.760
## 1st Qu.:3.080
## Median :3.695
## Mean :3.597
## 3rd Qu.:3.920
## Max. :4.930
cor(mtcars)
## mpg wt hp disp drat
## mpg 1.0000000 -0.8676594 -0.7761684 -0.8475514 0.6811719
## wt -0.8676594 1.0000000 0.6587479 0.8879799 -0.7124406
## hp -0.7761684 0.6587479 1.0000000 0.7909486 -0.4487591
## disp -0.8475514 0.8879799 0.7909486 1.0000000 -0.7102139
## drat 0.6811719 -0.7124406 -0.4487591 -0.7102139 1.0000000
2-3. scatterplotMatrix() - 산점병렬을 통한 시각화로 변수 간 관계 분석
- 회귀분석 전 산점병렬을 그려 변수 간 관계를 시각적으로 살펴보는 것은 데이터셋을 이해하는 데 도움이 될 수 있음
- scatterplotMatrix()는 산점도, 산점도를 통과하는 선형회귀선의 직선, 곡선 형태의 loess 추세선, 밀도도표와 러그도표도 출력 해 변수 간 관계를 다양한 형태로 살펴보게 하는 그래프 생성
- scatterplotMatrix() 인수 설명
- 1st: 데이터셋 지정
- pch인수: 산점도 점으로 사용할 심볼. 19를 지정해 색깔로 채워지는 동그라미로 사용
- col: 점의 색상 지정
- cex: 점의 크기. 여기서는 표준사이즈 보다 약간 크게 만듦
- regLine: 산점도 상 을 통과하는 직선을 그림. 리스트 구조 형태로 인수지정
- method: lm지정하면 선형회귀분석 결과 생성되는 직선을 그림
- lty: 선의 유형 지정. 1을 지정하면 실선이 사용됨
- lwd: 선의 굵기 지정
- col: 선의 색상 지정
- smooth: 산점도 상 을 통과하는 곡선의 추세선을 그림. 리스트 구조 형태로 인수지정
- smoother: 곡선의 추세선을 만드는 방법 지정. 여기서는 loessLine을 지정해 loess추세선을 그림
- spread: FALSE 지정하면 추세선 양쪽에 나타나는 변동성을 보여주는 선을 그래프 상에서 생략함
- lty.smooth: 곡선 추세선의 선의 유형 지정. 1을 지정해 실선으로 표현
- lwd.smooth: 선의 굵기 지정
- col. smooth: 선의 색상 지정
- main : 그래프의 제목 지정
- 결과해석
- 비대각선셀은 산점도. 직선으로 표현되는 선형회귀선, 곡선으로 표현되는 loess추세선출력
- 선형회귀선은 빨간색, loess추세선은 녹색으로 출력
- 대각선셀은 밀도도표와 러그도표 출력
- 연비(mpg)와 마력(hp)은 오른쪽, 자동차 무게(wt)는 왼쪽으로 꼬리가 긴 분포를 가짐
- 배기량(disp)과 기어비(drat)는 봉우리가 2개인 바이모달 형태의 쌍봉형 분포를 보임
- 추세선을 보면, 연비(mpg)비는
- 마력(hp), 자동차 무게(wt), 배기량(disp)과 부의 선형관계
- 기어비(drat)와는 정의 선형관계를 가지고 있음
- 그래서 연비는 마력, 무게, 배기량이 증가함에 따라 감소하고, 기어비 상승과 함께 증가하는 경향이 있음
- 비대각선셀은 산점도. 직선으로 표현되는 선형회귀선, 곡선으로 표현되는 loess추세선출력
library(car)
scatterplotMatrix(mtcars, pch=19, col="royalblue", cex=1.2,
regLine=list(method=lm, lty=1, lwd=3, col="salmon"),
smoother=list(smoother=loessLine, spread=FALSE,
lty.smooth=1, lwd.smooth=3,
col.smooth="forestgreen"),
main="Car Performance"
)
2-4. lm() - 다중회귀분석 수행
https://youtu.be/yt5vkrrAoDI?list=PLY0OaF78qqGAxKX91WuRigHpwBU0C2SB_&t=677
- 연비를 결과변수(종속변수), 나머지 4개 변수를 예측변수(독립변수)로 사용해 다중회귀분석 수행함
- 다중회귀분석은 단순회귀분석을 수행시 사용했던 lm()를 그대로 사용 가능
- lm()의 인수설명
- 포물러 형식: 종속변수와 독립변수 간 관계 지정
- 종속변수 mpg, 독립변수는 나머지 4개 변수임
- 독립변수들은 + 연산자로 연결함
- data: 데이터셋 지정
- 포물러 형식: 종속변수와 독립변수 간 관계 지정
mtcars.lm <- lm(mpg ~ hp + wt + disp + drat, data=mtcars)
summary(mtcars.lm)
##
## Call:
## lm(formula = mpg ~ hp + wt + disp + drat, data = mtcars)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.5077 -1.9052 -0.5057 0.9821 5.6883
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 29.148738 6.293588 4.631 8.2e-05 ***
## hp -0.034784 0.011597 -2.999 0.00576 **
## wt -3.479668 1.078371 -3.227 0.00327 **
## disp 0.003815 0.010805 0.353 0.72675
## drat 1.768049 1.319779 1.340 0.19153
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.602 on 27 degrees of freedom
## Multiple R-squared: 0.8376, Adjusted R-squared: 0.8136
## F-statistic: 34.82 on 4 and 27 DF, p-value: 2.704e-10
- 결과해석
- F값과 그에 대응되는 유의확률을 보면
- F값은 34.82, 그 F값에 대응되는 p값(유의확률)은 10의 마이너스 10승 수준( 2.704e-10)의 매우 작은 값임
- 따라서 유의수준 0.05 에 비해 p 값이 매우 작기 때문에 “다중회귀모델 회귀식은 통계적으로 유의하다” 라고 결론 내릴 수 있음
- 개별 회귀식 유의성을 살펴보면
- 마력(hp)과 무게(wt) 변수의 유의확률은 유의수준 0.05에 비해 모두 작음
- 따라서 “이 두 개 변수는 유의수준 0.05에서 통계적으로 유의하다”고 할 수 있음
- “이 두 변수의 계수는 0이라 볼 수 없고, 마력(hp)과 무게(wt)는 연비(mpg)와 선형적 관련성을 갖는다” 라고 결론을 내릴 수 있음
- 배기량(disp)과 기어비(drat) 변수는 유의수준 0.05에 비해 모두 큼
- 따라서 이 두 변수는 유의수준 0.05에서 통계적으로 유의하지 않음
- “모집단에서 계수가 0일 가능성을 배제할 수 없다”는 뜻이고 이는 “이 두 개 변수는 연비와 관련성이 없을 수 있다”는 것을 의미함
- 마력(hp)과 무게(wt) 변수의 유의확률은 유의수준 0.05에 비해 모두 작음
- R스퀘어 값을 볼 때, 회귀모델의 예측변수들은 연비의 변동성을 83.76% 설명함
- 수정된 R스퀘어는
- R스퀘어와 유사하지만 모델에 포함된 예측변수의 개수를 고려한다는 차이가 있음
- 보통 다중회귀모델에서 예측변수 개수가 증가하면 R스퀘어(모델설명력)값은 언제나 증가
- 따라서 예측변수가 많다는 이유만으로 설명력이 우수한 모델인 것처럼 보일 수 있음
- 이러한 R스퀘어의 단점을 보완하기 위해 수정된 R스퀘어는 모델에 포함된 예측변수 개수에 따라 R스퀘어 값을 보정해 줌
- 수정된 R스퀘어는 모델의 과적합을 방지하여 일반화 가능성을 높임
- 예측변수 개수가 표본크기에 비해 많으면 회귀모델은 과적합 가능성이 커지기 때문에
- 현재 데이터는 잘 설명해도 다른 데이터는 기대만큼 설명력을 보여주지 못할 수 있음
- 다시 말해서 일반화의 가능성이 떨어질 수가 있음
- 수정된 R스퀘어는 이러한 과적합의 위험을 고려해 예측변수 개수가 많을수록 패널티를 부여해 좀 더 보수적인 R스퀘어를 산출함
- 그래서 수정된 R스퀘어 값은 R스퀘어에 비해 항상 작음
- 수정된 R스퀘어: 0.8136, R스퀘어: 0.8376 임
- F값과 그에 대응되는 유의확률을 보면
3. 회귀계수의 의미
- 2개 이상 독립변수가 포함된 회귀모델에서, 특정 독립변수의 회귀계수는 다른 독립변수의 변화가 없다는 가정하에 그 변수가 한 단위만큼 변화 할 때 종속변수의 변화량을 나타냄
- 무게의 회귀계수가 -3.48인데 이는 무게 한 단위 증가는 (마력, 배기량, 기어비가 연비에 미치는 영향력이 일정하다는 가정하에서) 연비를 3.48 단위만큼 감소시킴을 나타냄
- 무게는 1000파운드/연비는 갤런당 마일로 측정돼, 무게 1000파운드 증가 시 연비는 갤런당 3.48마일만큼 감소한다는 의미임
- 독립변수 계수의 변동성
- 각 독립변수의 계수는 모델에 포함된 다른 독립변수의 영향을 받기 때문에 모델에 함께 포함된 독립변수에 따라 회귀계수 값이 변할 수 있고 그 회귀계수 유의성이 변하기도 함
- 즉, 독립변수의 회귀계수 및 유의성은 불변이 아니고 모델에 함께 투입된 독립변수가 무엇이냐에 따라 항상 달라질 수 있음
- 회귀계수의 크기는 변수의 설명력 정도와 큰 관련성이 없음
- 이는 회귀계수 크기는 대개 변수의 측정단위와 관계가 있기 때문임
- 따라서 회귀계수 크기만을 보고 어느 변수의 예측력이 더 큰지를 얘기할 순 없음
- cm 로 측정된 키, kg 으로 측정된 몸무게, 인치로 측정된 허리둘레로 구성된 회귀식으로 종속변수인 비만 정도를 예측하고자 할 때, 회귀계수만 보고 어느 변수가 비만 정도 예측에 더 큰 기여를 하는지 얘기하기 어렵움
- 이는 독립변수 단위가 서로 달라 직접적 비교가 불가능하기 때문임
- 회귀계수는 측정단위를 무엇으로 사용하느냐에 따라서도 크게 달라짐
- cm 로 측정된 변수에 대한 회귀계수는 mm 로 측정된 경우에 비해 10배 더 큼
- 따라서 키를 mm 로 측정하면 회귀계수는 또 달라지게 됨
- 이 경우에 변수 간 비교를 위해 사용할 수 있는 것이 표준화 계수인 베타($β$)임
4. scale(),lm.beta() - 표준화된 회귀계수(베타 \(β\)) 추출하기
4-1. scale() - 표준화된 회귀계수 추출
- 회귀계수 크기로 종속변수에 대한 독립변수 영향력 비교를 위해 표준화계수로 변환이 필요함
- 표준화 계수 베타(\(β\))
- 독립변수와 종속변수를 평균 0, 표준편차 1로 표준화한 후 회귀분석으로 얻은 계수임
- 즉, 독립변수와 종속변수를 표준점수로 변환 해 회귀분석을 수행해 얻은 회귀계수임
- 배타는 종속변수에 대한 독립변수의 영향력을 비교할 때 유용함
- 이제는 측정단위가 통일됐기 때문에 회귀계수 크기를 가지고 독립변수 간 어느 변수가 종속변수에 미치는 영향이 더 큰 지를 확인 가능
https://youtu.be/yt5vkrrAoDI?list=PLY0OaF78qqGAxKX91WuRigHpwBU0C2SB_&t=1139
- scale()로 변수의 표준화 가능
mtcars.lm <- lm(scale(mpg) ~ scale(hp) + scale(wt) + scale(disp) + scale(drat), data=mtcars)
summary(mtcars.lm)
##
## Call:
## lm(formula = scale(mpg) ~ scale(hp) + scale(wt) + scale(disp) +
## scale(drat), data = mtcars)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.58201 -0.31611 -0.08391 0.16295 0.94382
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 8.397e-17 7.633e-02 0.000 1.00000
## scale(hp) -3.957e-01 1.319e-01 -2.999 0.00576 **
## scale(wt) -5.649e-01 1.751e-01 -3.227 0.00327 **
## scale(disp) 7.846e-02 2.222e-01 0.353 0.72675
## scale(drat) 1.569e-01 1.171e-01 1.340 0.19153
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.4318 on 27 degrees of freedom
## Multiple R-squared: 0.8376, Adjusted R-squared: 0.8136
## F-statistic: 34.82 on 4 and 27 DF, p-value: 2.704e-10
- 결과해석
- 이 회귀계수는 측정단위 영향을 없앤 표준화 상태이기 때문에 크기를 직접 비교 할 수 있음
- 절대값으로 봤을 때, 무게 > 마력 > 기어비 > 배기량 순으로 큰 회귀계수를 가지고 있음
- 이 크기 순으로 종속변수인 연비에 미치는 영향 차이가 있음을 알 수 있음
- 가장 크게 연비에 영향을 미치는 요인은 무게
- 가장 작게 연비에 영향을 미치는 요인은 배기량
4-2. lm.beta() - 표준화된 회귀계수 추출
- lm.beta()로 좀더 쉽게 베타(\(β\)) 회귀계수를 추출할 수 있음
- 일반적 다중회귀분석 수행과 같이, 다중회귀모델을 구축 후, 그 결과를 lm.beta() 인수로 지정
library(QuantPsyc)
mtcars.lm <- lm(mpg ~ hp + wt + disp + drat, data=mtcars)
lm.beta(mtcars.lm <- lm(mpg ~ hp + wt + disp + drat, data=mtcars))
## hp wt disp drat
## -0.39569926 -0.56491388 0.07845695 0.15685187
- 결과해석
- 독립변수 별로 표준화된 회귀계수 베타(\(β\))를 얻을 수 있음
- 표준화 계수 베타(\(β\))에서 wt > hp > drat > disp 순으로 종속변수 mpg에 미치는 영향이 큼