본문 바로가기
## 오래된 게시글 (미관리) ##/R

38. 회귀 분석

by #Glacier 2018. 11. 22.

안녕하세요 오늘은 회귀분석에 대해 알아보겠습니다~ 시작~


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