안녕하세요 오늘은 회귀분석에 대해 알아보겠습니다~ 시작~
1. 회귀분석의 개요
1) 회귀분석의 정의
: 하나나 그 이상의 독립변수들이 종속변수에 미치는 영향을 추정할 수 있는 통계기법이다.
: 변수들 사이의 인과관계를 밝히고 모형을 적합하여 관심있는 변수를 예측하거나 추론하기 위한 방법이다.
2) 회귀분석의 변수
: 영향을 받는 변수 (y) : 반응변수(response variable), 종속변수(dependent variable), 결과변수(outcome variable)
: 영향을 주는 변수 (x) : 설명변수(explanatory variable), 독립변수(independent variable), 예측변수(predictor variable)
3) 회귀분석에서 검토사항
: 모형이 통계적으로 유의미한가?
: F통계량 확인. 유의수준 5% 하에서 F통계량의 p-값이 0.05보다 작으면 추정된 회귀식은 통계적으로 유의하다고 볼 수 있음.
: 회귀계수들이 유의미한가? : 해당 계수의 t통계량과 p-값 또는 이들의 신뢰구간을 확인
: 모형이 얼마나 설명력을 갖는가? : 결정계수를 확인. 결정계수는 0~1값을 가지며, 높은 값을 가질 수록 추정된 회귀식의 설명력이 높다.
: 모형이 데이터를 잘 적합하고 있는가? : 잔차를 그래프로 그리고 회귀진단을 한다.
4) 회귀계수의 추정(최소제곱법, 최소 자승법)
:
=
=
=
=
=
2. 회귀분석의 검정
1) 회귀계수의 검정
: 회귀계수 베타1이 0이면 입력변수 x와 출력변수 y 사이에는 아무 관계가 없다.
-> 즉, 베타1이 0이면, 적합된 추정식은 아무 의미 없다. (귀무가설 베타1=0, 대립가설 베타1=0이 아니다.
: t검정 hat(베타1)/hat(표준오차(베타1))
2) 결정계수
: 전체제곱합 (total sum of squares, SST) :
: 회귀제곱합 (regresiion sum of squares, SSR) :
: 오차제곱합 (error sum of squares, SSE) :
: SST = SSR + SSE
: 결정계수 (R square)는 전체제곱합에서 회귀제곱합의 비 즉 (SSR/SST)
-> 즉 전체 데이터를 회귀모형이 설명할 수 있는 양이다. (단순회귀분석에서는 상관계수 r의 제곱과 같다.)
: 결정계수는 1에 가까울수록 회귀모형이 전체 데이터를 잘 설명함을 의미한다.
3) 회귀직선의 적합도 검토
: 결정계수를 통해 추정된 회귀식이 얼마나 타당한지 검토
: 독립변수가 종속변수 변동의 몇 %를 설명하는지 나타내는 지표.
: F통계량 (F-값이 크면 귀무가설 H0=베타1=베타2=...=베타n, p>=0.05 기각한다. 즉, 모형이 유의하다고 결론.)
3. 선형회귀분석
1) 선형회귀분석의 가정
: 선형성 - 입력변수와 출력변수의 관계가 선형이다. (선형회귀분석에서 가장 중요한 가정)
: 등분산성 - 오차의 분산이 입력변수와 무관하게 일정하다.
: 독립성 - 독립변인과 잔차는 관련이 없다.
: 비상관성 - 오차들끼리 상관이 없다.
: 정상성(정규성) - 오차의 분포가 정규분포를 따른다.
-단순선형회귀분석 : 입력변수와 출력변수간의 산점도로 확인
-다중선형회귀분석 : 잔차와 출력변수의 산점도로 확인한다. (선형회귀분석의 가정이 모두 만족하는 경우에는 잔차는 랜덤하게 표현된다.)
2) 다중선형회귀분석
: 모형이 통계적으로 유의미한가?
요인 | 제곱합 | 자유도 | 제곱평균 | F통계량 |
회귀 | 회귀제곱합(SSR) | p | MSR=SSR/p | F=MSR/MSE |
오차 | 오차제곱합(SSE) | n-p-1 | MSE=SSE/(n-p-1) |
|
계 | 전체제곱합(SST) | n-1 |
|
|
귀무가설 : 베타1=베타2=베타3= ... =베타n F통계량으로 확인
: 회귀계수들이 유의미한가? t통계량으로 확인
: 모형이 얼마나 설명력을 갖는가? 결정계수로 확인
: 모형이 데이터를 잘 적합하고 있는가? 잔차와 종속변수의 산점도로 확인
: 데이터가 전제하는 가정을 만족시키는가? 선형성, 독립성, 등분산성, 비상관성, 정상성
: 다중공선성(multicollinearity)
-다중회귀 분석에서 설명변수들 사이에 선형관계가 존재하면 회귀계수의 정확한 추정이 곤란하다.
-다중공선성 검사 방법
(1) 분산팽창요인(VIF) : 10보다 크면 심각한 문제
(2) 상태지수 : 10 이상이면 문제가 있다고 보고, 30보다 크면 심각
-해결방안 : 선형관계가 강한 변수 제거, 주성분 회귀, 능형회귀로 활용
-그 밖의 회귀분석
: 로지스틱 회귀분석 : 반응설명변수가 범주형(2진변수)인 경우에 적용. 단순로지스틱 회귀 및 다중, 다항 로지스틱 회귀로 확장할 수 있음.
: 다항회귀 : 설명변수가 k개이며 반응변수와의 관계가 1차 함수 이상 (단,k=1이면 2차 함수 이상)
: 곡선회귀 : 설명변수가 1개이며 반응변수와의 관계가 곡선
: 비선형회귀 : 회귀식의 모양이 미지의 모수 베타들의 선형관계로 이뤄져 있지 않은 모형.
5. 회귀분석 사례
1) 회귀분석 사례 : MASS패키지의 "Cars93"라는 데이터셋의 가격(Price)를 종속변수로 선정하고 엔진크기(enginesize),
RPM,무게(Weight)를 이용해 다중회귀분석을 실시한다.
install.packages("MASS")
library(MASS)
attach(Cars93)
head(Cars93)
Manufacturer Model Type Min.Price Price Max.Price MPG.city MPG.highway
1 Acura Integra Small 12.9 15.9 18.8 25 31
2 Acura Legend Midsize 29.2 33.9 38.7 18 25
3 Audi 90 Compact 25.9 29.1 32.3 20 26
4 Audi 100 Midsize 30.8 37.7 44.6 19 26
5 BMW 535i Midsize 23.7 30.0 36.2 22 30
6 Buick Century Midsize 14.2 15.7 17.3 22 31
AirBags DriveTrain Cylinders EngineSize Horsepower RPM
1 None Front 4 1.8 140 6300
2 Driver & Passenger Front 6 3.2 200 5500
3 Driver only Front 6 2.8 172 5500
4 Driver & Passenger Front 6 2.8 172 5500
5 Driver only Rear 4 3.5 208 5700
6 Driver only Front 4 2.2 110 5200
Rev.per.mile Man.trans.avail Fuel.tank.capacity Passengers Length Wheelbase
1 2890 Yes 13.2 5 177 102
2 2335 Yes 18.0 5 195 115
3 2280 Yes 16.9 5 180 102
4 2535 Yes 21.1 6 193 106
5 2545 Yes 21.1 4 186 109
6 2565 No 16.4 6 189 105
Width Turn.circle Rear.seat.room Luggage.room Weight Origin Make
1 68 37 26.5 11 2705 non-USA Acura Integra
2 71 38 30.0 15 3560 non-USA Acura Legend
3 67 37 28.0 14 3375 non-USA Audi 90
4 70 37 31.0 17 3405 non-USA Audi 100
5 69 39 27.0 13 3640 non-USA BMW 535i
6 69 41 28.0 16 2880 USA Buick Century
lm(Price~EngineSize+RPM+Weight)
Call:
lm(formula = Price ~ EngineSize + RPM + Weight)
Coefficients:
(Intercept) EngineSize RPM Weight
-51.793292 4.305387 0.007096 0.007271
a<-lm(Price~EngineSize+RPM+Weight)
summary(a)
Call:
lm(formula = Price ~ EngineSize + RPM + Weight)
Residuals:
Min 1Q Median 3Q Max
-10.511 -3.806 -0.300 1.447 35.255
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -51.793292 9.106309 -5.688 1.62e-07 ***
EngineSize 4.305387 1.324961 3.249 0.00163 **
RPM 0.007096 0.001363 5.208 1.22e-06 ***
Weight 0.007271 0.002157 3.372 0.00111 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 6.504 on 89 degrees of freedom
Multiple R-squared: 0.5614, Adjusted R-squared: 0.5467
F-statistic: 37.98 on 3 and 89 DF, p-value: 6.746e-16
: 여기서 F통계량은 37.98 이며 p-값이 6.746e-16으로 유의수준 5%하에서 추정된 회귀모형이 통계적으로 매우~유의함을 알 수 있다.
: 결정계수와 수정된 결정계수또한 0.5614로 조금 낮게 나타나 설명력은 높지 않다.
: 회귀계수들의 p-값들도 0.05보다 작으므로 회귀계수들의 추정치들이 통계적으로 유의
: 결정계수가 낮아 데이터의 설명력은 낮지만 회귀분석결과에서 회귀식과 회귀계수들이 통계적으로 유의하여 자동차의 가격을 엔진의 크기와 RPM, 무게로 추정 가능
2) 로지스틱회귀분석 사례 : 림프절이 전립선암에 대해 양성인지 여부를 예측하는 데이터
- 양성여부(r) : 전립선암에 대한 양성 여부
- aged : 환자의 연령
- stage : 질병 단계 (질병의 진행 단계)
- grade : 종양의 등급 : 진행의 정도
- xray : X-선 결과
- acid : 특정한 부위에 종양이 전이되었을 때 상승되는 혈청의 인산염값
library(boot)
data(nodal)
a<-c(2,4,6,7)
data<-nodal[,a]
glmModel<-glm(r~., data=data, family="binomial")
summary(glmModel)
Call:
glm(formula = r ~ ., family = "binomial", data = data)
Deviance Residuals:
Min 1Q Median 3Q Max
-2.1231 -0.6620 -0.3039 0.4710 2.4892
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -3.0518 0.8420 -3.624 0.00029 ***
stage 1.6453 0.7297 2.255 0.02414 *
xray 1.9116 0.7771 2.460 0.01390 *
acid 1.6378 0.7539 2.172 0.02983 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 70.252 on 52 degrees of freedom
Residual deviance: 49.180 on 49 degrees of freedom
AIC: 57.18
Number of Fisher Scoring iterations: 5
- 2번째 변수인 양셩여부를 종속변수로 두고 5개의 변수를 독립변수로 로지스틱 회귀분석을 실시한 결과 age와 grade는 유의수준 5%하에서 유의하지 않음
따라서 이를 제외한 3개 변수 stage, xray와 acid를 활용해서 모형을 개발한다.
- stage, xray와 acid의 추정계수는 유의수준 5%하에서 유의하므로, r= -3.05+1.65stage+1.91xray+1.64acid의 선형식이 가능하다.
6.최적회귀방정식의 선택
1) 최적회귀방정식의 선택
-설명변수 선택 : 필요한 것만 상황에 따라 타협을 통해 선택한다.
-y에 영향을 미칠 수 있는 모든 설명변수 x들을 y의 값을 예측하는 데 참여
-데이터에 설명변수 x들의 수가 많아지면 관리하는 데 많은 노력이 요구되므로, 가능한 범위 내에서 적은 수의 설명변수를 포함
-모형 선택(exploratory analysis) : 분석 데이터에 가장 잘 맞는 모형을 찾아내는 방법이다.
-모든 가능한 조합의 회귀분석(All possible regression) : 모든 가능한 독립변수들의 조합에 대한 회귀모형을 분석해
가장 적합한 회귀모형을 선택
-단계적 변수선택(Stepwise Variable Selection)
(1) 전진선택법 (forward selection) : 절편만 있는 상수모형으로서 시작해 중요하다고 생각되는 설명변수부터
차례로 모형에 추가하는 방식
(2) 후진제거법(backward elimination) : 독립변수 후보 모두를 포함한 모형에서 출발해 가장 적은 영향을 주는 변수부터
하나씩 제거하면서 더 이상 제거할 변수가 없을 때 까지 실행
(3) 단계별방법(stepwise method) : 전진선택법에 의해 변수를 추가하면서 새롭게 추가된 변수에 기인해 기존 변수가
그 중요도가 약화되면 해당 변수를 제거하는 등 단계별로 추가 또는 제거되는 변수의 여부를
검토해 더 이상 없을 때 중단
# 전진선택법은 이해가 쉽고 변수의 개수가 많은 경우에도 사용 가능하지만 변수값의 작은 변동에도 그 결과가 크게 달라져 안정성이 부족한 단점이 있다.
# 후진제거법은 전체 변수들의 정보를 이용하는 장점이 있는 반면 변수의 개수가 많은 경우 사용하기 어렵다.
2) 벌점화된 선택기준
- 모형의 복잡도에 벌점을 주는 방법
- AIC(Akaike information criterion)
- BIC(Bayesian information criterion)
: 모든 후보 모형들에 대해 AIC 또는 BIC를 계산하고 그 중 최소가 되는 모형을 선택한다.
: 모형 선택의 일치성(consistency inselection) : 자료의 수가 늘어날 때 참인 모형이 주어진 모형선택 기준의
최소값을 갖게 되는 성질이다.
: 이론적으로 AIC에 대해서 일치성이 성립하지 않지만 BIC는 주요 분포에서 이러한 성질이 성립한다.
: AIC를 활용하는 방법이 보편화된 방법.
: 그 밖의 벌점화 선택기준 RIC(risk inflation criterion), CIC(covariance inflation criterion),
DIC(deviation information criterion)
3) 최적회귀방정식의 사례
-전립선암 자료
-8개의 입력변수와 1개의 출력변수로 구성
-마지막 열에 있는 변수는 학습자료인지 예측자료인지 나타내는 변수로 이번 분석에 사용 x
: lcavol : 종양 부피의 로그
: lweight : 전립선 무게의 로그
: age : 환자의 연령
: lbph : 양성 전립선 증식량의 로그
: svi : 암이 정낭을 침범할 확률
: lcp : capsular penetration의 로그값
: gleason : Gleason 점수
: pgg45 : Gleason점수가 4 또는 5인 비율
: lpsa : 전립선 수치의 로그
# 요기서 의학용어가 너무많아서 곤란하긴 하지만 변수가 뭔지 알고 변수선택을 해보는 것이기 때문에 문제는 없습니다.
install.packages("ElemStatLearn")
library(ElemStatLearn)
Data = prostate
data.use = Data[,-ncol(Data)]
lm.full.Model=lm(lpsa~., data=data.use)
#################
step(lm(입력변수~출력변수, 데이터셋), scope=list(lower=~1, upper=~출력변수), direction=("변수선택방법")
<scope?>
변수선택과정에서 설정할 수 있는 가장 큰 모형 또는 가장 작은 모형을 설정. scope가 없을 경우 전진선택법에서는
현재 선택한 모형을 가장 큰 모형으로, 후진소거법에서는 상수항만 있는 모형을 가장 작은 모형으로 설정한다.
<k?>
모형선택기준에서 AIC, BIC와 같은 옵션 사용
k=2이면 AIC, k=log(자료의수)이면 BIC
후진소거법에서는 AIC를 이용한 변수선택
##################
backward.aic=step(lm.full.Model, lpsa~1, direction="backward")
Start: AIC=-60.78
lpsa ~ lcavol + lweight + age + lbph + svi + lcp + gleason +
pgg45
Df Sum of Sq RSS AIC
- gleason 1 0.0491 43.108 -62.668
- pgg45 1 0.5102 43.569 -61.636
- lcp 1 0.6814 43.740 -61.256
<none> 43.058 -60.779
- lbph 1 1.3646 44.423 -59.753
- age 1 1.7981 44.857 -58.810
- lweight 1 4.6907 47.749 -52.749
- svi 1 4.8803 47.939 -52.364
- lcavol 1 20.1994 63.258 -25.467
Step: AIC=-62.67
lpsa ~ lcavol + lweight + age + lbph + svi + lcp + pgg45
Df Sum of Sq RSS AIC
- lcp 1 0.6684 43.776 -63.176
<none> 43.108 -62.668
- pgg45 1 1.1987 44.306 -62.008
- lbph 1 1.3844 44.492 -61.602
- age 1 1.7579 44.865 -60.791
- lweight 1 4.6429 47.751 -54.746
- svi 1 4.8333 47.941 -54.360
- lcavol 1 21.3191 64.427 -25.691
Step: AIC=-63.18
lpsa ~ lcavol + lweight + age + lbph + svi + pgg45
Df Sum of Sq RSS AIC
- pgg45 1 0.6607 44.437 -63.723
<none> 43.776 -63.176
- lbph 1 1.3329 45.109 -62.266
- age 1 1.4878 45.264 -61.934
- svi 1 4.1766 47.953 -56.336
- lweight 1 4.6553 48.431 -55.373
- lcavol 1 22.7555 66.531 -24.572
Step: AIC=-63.72
lpsa ~ lcavol + lweight + age + lbph + svi
Df Sum of Sq RSS AIC
<none> 44.437 -63.723
- age 1 1.1588 45.595 -63.226
- lbph 1 1.5087 45.945 -62.484
- lweight 1 4.3140 48.751 -56.735
- svi 1 5.8509 50.288 -53.724
- lcavol 1 25.9427 70.379 -21.119
: 맨처음 AIC는 -62.67로 gelason을 제거하고 회귀분석 실시, 그 다음 차례로, lcp, pgg45 순서로 제거되어 회귀분석이 실시된다.
#후진소거법에서 BIC를 이용한 변수선택
backward.aic=step(lm.full.Model, lpsa~1, direction="backward", k=log(nrow(data.use)))
Start: AIC=-37.61
lpsa ~ lcavol + lweight + age + lbph + svi + lcp + gleason +
pgg45
Df Sum of Sq RSS AIC
- gleason 1 0.0491 43.108 -42.071
- pgg45 1 0.5102 43.569 -41.039
- lcp 1 0.6814 43.740 -40.658
- lbph 1 1.3646 44.423 -39.155
- age 1 1.7981 44.857 -38.213
<none> 43.058 -37.606
- lweight 1 4.6907 47.749 -32.151
- svi 1 4.8803 47.939 -31.767
- lcavol 1 20.1994 63.258 -4.869
Step: AIC=-42.07
lpsa ~ lcavol + lweight + age + lbph + svi + lcp + pgg45
Df Sum of Sq RSS AIC
- lcp 1 0.6684 43.776 -45.153
- pgg45 1 1.1987 44.306 -43.985
- lbph 1 1.3844 44.492 -43.579
- age 1 1.7579 44.865 -42.768
<none> 43.108 -42.071
- lweight 1 4.6429 47.751 -36.723
- svi 1 4.8333 47.941 -36.337
- lcavol 1 21.3191 64.427 -7.668
Step: AIC=-45.15
lpsa ~ lcavol + lweight + age + lbph + svi + pgg45
Df Sum of Sq RSS AIC
- pgg45 1 0.6607 44.437 -48.274
- lbph 1 1.3329 45.109 -46.818
- age 1 1.4878 45.264 -46.486
<none> 43.776 -45.153
- svi 1 4.1766 47.953 -40.888
- lweight 1 4.6553 48.431 -39.924
- lcavol 1 22.7555 66.531 -9.124
Step: AIC=-48.27
lpsa ~ lcavol + lweight + age + lbph + svi
Df Sum of Sq RSS AIC
- age 1 1.1588 45.595 -50.352
- lbph 1 1.5087 45.945 -49.610
<none> 44.437 -48.274
- lweight 1 4.3140 48.751 -43.862
- svi 1 5.8509 50.288 -40.851
- lcavol 1 25.9427 70.379 -8.245
Step: AIC=-50.35
lpsa ~ lcavol + lweight + lbph + svi
Df Sum of Sq RSS AIC
- lbph 1 0.9730 46.568 -52.879
<none> 45.595 -50.352
- lweight 1 3.6907 49.286 -47.377
- svi 1 5.7027 51.298 -43.496
- lcavol 1 24.9384 70.534 -12.607
Step: AIC=-52.88
lpsa ~ lcavol + lweight + svi
Df Sum of Sq RSS AIC
<none> 46.568 -52.879
- svi 1 5.1737 51.742 -47.234
- lweight 1 7.1089 53.677 -43.673
- lcavol 1 24.7058 71.274 -16.169
: 맨처음 BIC는 -42.07로 gleason을 제거하고 회귀분석을 실시, 그 다음 차례로 lcp, pgg45, age, lbph순서로 제거되어 회귀분석이 실시됨.
: AIC와 BIC로 찾은 모형을 비교해 보면, BIC로 찾은 모형이 AIC로 찾은 모형에 비해 변수를 적게 사용함
: BIC가 변수의 수에 대하여 가중치를 높게 주기 때문이다.
##후우~ 오늘은 여기까지 알아봤습니다. 열공..~
'## 오래된 게시글 (미관리) ## > R' 카테고리의 다른 글
40. 다차원척도법 , 주성분분석 (4) | 2018.11.22 |
---|---|
39. 시계열 분석 (0) | 2018.11.22 |
36. 데이터분석의 이해 (0) | 2018.11.22 |
37. 기초통계분석 (0) | 2018.11.22 |
35. 데이터 가공 (0) | 2018.11.22 |