본문 바로가기

■ 프로그래밍/R

[R] Linear Regression Analysis 선형회귀분석

 

[ R : Regression Analysis 회귀분석 ]

 

 

패키지 설치 및 로딩하기

install.packages("caret") 
install.packages("dplyr") 
install.packages("car") # 다중공선성 
install.packages("gvlma") # 에러 검정 
install.packages("lm.beta") #독립변수 영향력 크기 비교
library(caret) 
library(dplyr) 
library(car) 
library(gvlma) 
library(lm.beta)

 

Regression Analysis 회귀분석

통계학 꽃 중의 꽃!
- 언제 사용 하는가?
A. 어떤 양적 자료(들)이 다른 양적 자료에게 영향을 주는 지 통계적으로 분석하는 방법이다.
즉, 인과관계(원인과 결과의 관계)를 알려줌

  • 예측(Prediction), 분류(Classification)을 목적으로 사용한다.
    ex. 주식(+시계열)
  • 자료: 양적자료 2개
    동일한 대상으로부터 다른 2개의 양적자료
    원인과 결과의 관계(인과관계)는 아니다. 인과관계는 회귀분석에서 다룬다.

 

선형 회귀분석(Linear Regression Analysis)

단순선형 회귀분석(Simple Linear Regression Analysis)

종속변수 : 1개 : 양적 자료, y (확장되면 종속변수가 많아짐)
독립변수 : 1개 : 양적 자료, x

 

예제 데이터: cars (R에 내장된 데이터)
변수명: speed(속도), dist(제동거리 = 브레이크를 밟았을 때 얼마나 밀리는지)

회귀분석결과물 <- lm(y ~ x, data = )  # lm = linear model 
summary(회귀분석결과) 
cars에 speed, dist 중 dist가 더 중요해서 앞에 다 둠
cars.lm <- lm(dist ~ speed, data = cars) 
summary(cars.lm)
##  
## Call: 
## lm(formula = dist ~ speed, data = cars) 
##  
## Residuals: 
##     Min      1Q  Median      3Q     Max  
## -29.069  -9.525  -2.272   9.215  43.201  
##  
## Coefficients: 
##             Estimate Std. Error t value Pr(>|t|)     
## (Intercept) -17.5791     6.7584  -2.601   0.0123 *   
## speed         3.9324     0.4155   9.464 1.49e-12 *** 
## --- 
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 
##  
## Residual standard error: 15.38 on 48 degrees of freedom 
## Multiple R-squared:  0.6511, Adjusted R-squared:  0.6438  
## F-statistic: 89.57 on 1 and 48 DF,  p-value: 1.49e-12

 

회귀분석 결과의 해석

1단계. 회귀모형은 타당한가?

  • 귀무가설: 회귀모형은 타당하지 않다
  • 대립가설: 회귀모형은 타당하다 -> 우리가 원하는 결과
F-statistic: 89.57 on 1 and 48 DF,  p-value: 1.49e-12​

결론: 유의확률이 1.49e-12(=0.000)이므로 유의수준 0.05에서 회귀모형은 통계적으로 타당하다.
즉, 독립변수가 영향을 준다. (단순선형 회귀분석에서 적용)

 

2단계. 독립변수는 종속변수에게 영향을 주는가?

조건: 1단계의 결론이 대립가설이어야 함
만약 1단계가 귀무라면, 다른 변수를 찾아서 다시 회귀분석을 진행해야 함.
- 귀무가설: 독립변수는 종속변수에게 영향을 주지 않는다
- 대립가설: 독립변수는 종속변수에게 영향을 준다

        Estimate    Std.Error    t value     Pr(>|t|)     
speed     3.9324     0.4155       9.464     1.49e-12 ***

결론: 유의확률이 0.000 이므로 유의수준 0.05에서 독립변수는 종속변수에게 통계적으로 유의한 영향을 주는 것으로 나타났다.
따라서, speed는 제동거리(distance)에 통계적으로 유의한 영향을 주는 것으로 나타났다(t = 9.464, p<0.001)

 

3단계. 독립변수는 종속변수에게 어떠한 영향을 주는가?

       Estimate(추정치)    
speed      3.9324     

beta1에 대한 회귀계수(Coefficient of Regression) : 3.932

독립변수의 기본단위가 1 증가하면, 종속변수는 약 3.932 정도 증가시키는 영향을 준다
즉, speed가 1mph 증가하면 distance는 약 3.932 feet 정도 증가 시킨다

 

4단계. 독립변수가 종속변수의 다름을 어느 정도 설명하고 있는가?

(회귀모형의 설명력 = 독립변수의 설명력)

Multiple R-squared:  0.6511     

결정계수(Coefficient of Determination) : SSR(독립변수 때문에 생긴 다름) / SST(Y의 다름)
수학기호 : R-Square(R^2) = SSR/SST, 0 <= R^2 <= 1
단순선형회귀에서는 Adjsted R-squared를 고려할 필요 없다.

회귀모형의 설명력(독립변수의 설명력)은 약 65.1% 정도이다.
speed가 distance의 다름을 약 65.1% 정도 설명하고 있다.
speed가 아직 설명하지 못하는 distance의 다름은 35%가 있다.
그렇다면, 한발 더 나아가 나머지 65%의 다름은 어떤 걸까? 생각해보기

 

5단계. 예측(Prediction)

predict(model, newdata = data.frame(독립변수 = )) 
model = lm 진행한 모델 
독립변수가 x일 때의 예측
predict(cars.lm, newdata = data.frame(speed = 200))
##        1  
## 768.9027

결과: speed가 200일 때, dist는 769 feet이다(점추정). 실제로는 +-를 넣어서 구간추정 시행.

Coefficients:              
              Estimate  Std. Error t value Pr(>|t|)     
(Intercept) -17.5791     6.7584  -2.601   0.0123 *   
speed         3.9324     0.4155   9.464   1.49e-12 *

y의 예측값은 beta0의 추정치(-17.5791) + beta1의 추정치(3.9324 * speed)
따라서, speed가 200일 때의 dist의 계산은, -17.579 + 3.932*200 = 768.821

predict(cars.lm, newdata = data.frame(speed = c(100, 200, 300)))

다수 값 예측을 원할 때

 

cars 데이터를 training, test data로 나눈 후 분석

cars.index <- caret::createDataPartition(cars$speed, p = 0.8) # cars에서 랜덤하게 80%를 데이터 추출 
cars.train <- cars[unlist(cars.index), ] # unlist로 list를 벡터로 바꿈 
cars.test <- cars[-unlist(cars.index), ]   

cars.train.lm <- lm(dist ~ speed, data = cars.train) # 회귀분석 시행 
summary(cars.train.lm) # 회귀분석 결과 보기
##  
## Call: 
## lm(formula = dist ~ speed, data = cars.train) 
##  
## Residuals: 
##     Min      1Q  Median      3Q     Max  
## -30.443  -9.522  -0.825   7.872  40.478  
##  
## Coefficients: 
##             Estimate Std. Error t value Pr(>|t|)     
## (Intercept) -22.9510     6.9862  -3.285  0.00216 **  
## speed         4.2697     0.4273   9.992 2.61e-12 *** 
## --- 
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 
##  
## Residual standard error: 14.53 on 39 degrees of freedom 
## Multiple R-squared:  0.7191, Adjusted R-squared:  0.7119  
## F-statistic: 99.85 on 1 and 39 DF,  p-value: 2.615e-12

 

 

1단계. 회귀모형은 타당한가?

  • 귀무가설: 회귀모형은 타당하지 않다
  • 대립가설: 회귀모형은 타당하다
F-statistic: 89.82 on 1 and 39 DF, p-value: 1.145e-11

결론: 유의확률이 0.000이므로 유의수준 0.05에서 회귀모형은 통계적으로 타당하다.

 

2단계. 독립변수는 종속변수에게 영향을 주는가?

  • 귀무가설: 독립변수는 종속변수에게 영향을 주지 않는다
  • 대립가설: 독립변수는 종속변수에게 영향을 준다
         Estimate  Std. Error  t value    Pr(>|t|) 
speed     4.1728     0.4403     9.477    1.14e-11 ***

결론: 유의확률이 0.000이므로, 유의수준 0.05에서 독립변수는 종속변수에게 통계적으로 유의한 영향을 주는 것으로 나타났다.

 

3단계. 독립변수는 종속변수에게 어떠한 영향을 주는가?

         Estimate 
speed     4.1728  

beta1에 대한 회귀계수(Coefficient of Regression) : 4.173 = 회귀계수에 대한 추정치
독립변수의 기본단위가 1증가하면 종속변수는 약 4.173 증가하는 영향을 준다
즉, speed가 1mph 증가하면, dist는 약 4.173 feet 증가된다

 

4단계. 독립변수가 종속변수의 다름을 어느 정도 설명하고 있는가?

Multiple R-squared:  0.6972 

Multiple R-squared는 0 ~ 1 사이의 값을 가진다.
R-Suared * 100 : 0 ~ 100 사이의 값을 갖는다
따라서, 독립변수가 종속 변수의 다름을 약 69.7% 정도 설명하고 있다

 

5단계. 예측(Prediction)

cars.predict <- predict(cars.train.lm, newdata = cars.test) 
cars.predict
##         4         9        10        23        25        32        33  
##  6.936904 19.746013 24.015716 36.824825 41.094528 53.903637 53.903637  
##        41        45  
## 62.443043 75.252152

 

MSE 구하기

MSE(평균오차제곱합): 값들이 각각의 그룹의 평균에서 얼마나 떨어져 있는지 확인하는 값(=분산)
MSE가 낮을 수록 더 좋은 모형이라 해석할 수 있다.

  • test의 실제값이랑 test의 예측값으로 MSE 구하기
## mean(sum((실제값 - 예측값)**2))
mean((cars.test$dist - cars.predict)**2) 
## [1] 364.2262

R^2의 쓰임새: 모형평가
A model, B model, C model을 회귀분석하면 각각의 R^2가 나오는데, 가장 큰게 더 좋은 모형이라고 해석할 수 있음

 

2. 다중선형 회귀분석(Multiple Linear Regression Analysis)

종속변수 : 1개 : 양적 자료
독립변수 : 2개 이상 : 양적 자료
더미변수 : 양적인 자료로 보이게 해주는 변형된 변수

회귀분석결과물 <- lm(y(종속변수) ~ x1 + x2 + ... + xp, data = ) 
회귀분석결과물 <- lm(y(종속변수) ~ ., data = ) : y를 뺀 모든 변수를 독립변수로 둔다 
summary(회귀분석결과물)

 

[다중선형] 예제 데이터 : attitude
- 종속변수: rating
- 독립변수: complaints, privileges, learning, raises, critical, advance

attitude.lm <- lm(rating ~ ., data = attitude) 
summary(attitude.lm) # lm은 회귀모형의 모델 및 추정치만 나와서 summary 필요
##  
## Call: 
## lm(formula = rating ~ ., data = attitude) 
##  
## Residuals: 
##      Min       1Q   Median       3Q      Max  
## -10.9418  -4.3555   0.3158   5.5425  11.5990  
##  
## Coefficients: 
##             Estimate Std. Error t value Pr(>|t|)     
## (Intercept) 10.78708   11.58926   0.931 0.361634     
## complaints   0.61319    0.16098   3.809 0.000903 *** 
## privileges  -0.07305    0.13572  -0.538 0.595594     
## learning     0.32033    0.16852   1.901 0.069925 .   
## raises       0.08173    0.22148   0.369 0.715480     
## critical     0.03838    0.14700   0.261 0.796334     
## advance     -0.21706    0.17821  -1.218 0.235577     
## --- 
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 
##  
## Residual standard error: 7.068 on 23 degrees of freedom 
## Multiple R-squared:  0.7326, Adjusted R-squared:  0.6628  
## F-statistic:  10.5 on 6 and 23 DF,  p-value: 1.24e-05

 

1단계. 회귀모형은 타당한가?

  • 귀무가설: 회귀모형은 타당하지 않다
  • 대립가설: 회귀모형은 타당하다
F-statistic: 10.5 on 6(SSR의 자유도, p) and 23 DF(SSE의 자유도, n-p-1), p-value: 1.24e-05

결론: 유의확률이 0.000이므로 유의수준 0.05에서 회귀모형은 타당하다.

 

2단계. 각각의 독립변수는 종속변수에게 영향을 주는가?

  • 귀무가설: 각각의 독립변수는 종속변수에 영향을 주지 않는다
  • 대립가설: 각각의 독립변수는 종속변수에게 영향을 준다
            Estimate  Std. Error  t value  Pr(>|t|) 
complaints   0.61319    0.16098    3.809   0.000903 *** 
privileges  -0.07305    0.13572   -0.538   0.595594 
learning     0.32033    0.16852    1.901   0.069925 . 
raises       0.08173    0.22148    0.369   0.715480 
critical     0.03838    0.14700    0.261   0.796334 
advance     -0.21706    0.17821   -1.218   0.235577  

# 해석 
# complaints : 유의확률 = 0.001, 대립가설 
# previleges : 유의확률 = 0.596, 귀무가설  
# learning   : 유의확률 = 0.070, 귀무가설  
# raises     : 유의확률 = 0.715, 귀무가설  
# critical   : 유의확률 = 0.796, 귀무가설  
# advance    : 유의확률 = 0.236, 귀무가설

결론: complaints를 제외한 독립변수는 종속변수에 영향을 주지 않는다.

 

3단계. 각각의 독립변수는 종속변수에게 어떠한 영향을 주는가?

            Estimate (회귀계수에 대한 추정치) 
complaints   0.61319  *** 
privileges  -0.07305 
learning     0.32033 
raises       0.08173 
critical     0.03838 
advance     -0.21706

해석: 다른 독립변수가 고정되어 있을 때(다른 독립변수들은 변하지 않을 때), complaints의 기본 단위가 1증가하면, rating이라는 종속변수를 약 0.613 정도 증가시킨다.
나머지는 2단계에서 영향을 주지 않는 것으로 판단되어 3단계를 진행할 수 없다.

 

4단계. 회귀모형의 설명력 = 독립변수들의 설명력

Multiple R-squared:  0.7326 (6개의 독립변수가 종속변수를 얼마큼 설명하는가) 
Adjusted R-squared:  0.6628

결정계수(R-Squre)의 문제점
- 종속변수에게 유의한 영향을 주지 않는 독립변수들이 모형에 포함되어도 결정계수는 증가하는 경향이 있음
- 회귀모형에 유의하지 않는 독립변수가 있다면, Adjusted R-Squred로 해석하는게 더 바람직하다.

 

수정된 결정계수(Adjusted R-Square)
- 회귀모형에 종속변수에게 영향을 주는 독립변수가 들어올 때는 결정계수가 증가하고, 종속변수에 영향을 주지 않는 독립변수가 들어올 때는 결정계수가 증가되지 못하도록 함
- 즉, 수정된 결정계수로 해석하면, 6개의 독립변수들이 종속변수의 다름을 약 66.3% 정도 설명하고 있다.

 

5단계. 예측(Prediction)

predict(attitude.lm, newdata = data.frame(complaints = 5,
                                          privileges = 5,                                            
                                          learning = 5,                                           
                                          raises = 5,                                           
                                          critical = 5,                                           
                                          advance = 5))
##        1  
## 14.60471

독립변수가 모두 5일 때 종속변수(rating)의 결과값: 14.605

 

다중선형 회귀분석에서 고려해야 할 사항

(1) 변수선택

최종 모형에 어떤 독립변수들로 구성할 것인가?

  1. 모든 독립변수를 최종 회귀모형에 포함시킴
  2. 통계적으로 유의한 독립변수만 최종 회귀모형에 포함시킴

전진선택방법(Forward Selection Method)
종속변수와 하나씩 회귀분석을 하고, 그 중 독립변수가 종속변수에 영향을 가장 많이 주는 것을 모형에 제일 먼저 포함; 한 번 들어오면 모형에서 빠지지 않음; 그 후 두번째로 유의한 것을 포함; 커트라인을 넘을 경우에만 포함

후진소거방법(Backward Elimination Method)
모든 독립변수가 먼저 모형에 들어옴, 들어온 독립변수 중에서 종속변수에게 가장 영향이 약한 것이 모형에서 빠져나감; 한 번 빠져나가면 모형에 다시 못들어옴; 컷트라인을 넘을 경우에만 빠져나감

단계선택방법(Stepwise Selection Method)
전진선택방법 + 후진소거방법; 처음에 유의한 변수가 들어오고, 다른 변수가 들어올 때의 유의함을 보면서 넣었다 뺐다를 반복하여 최적의 모형을 찾는다

attitude.forward <- step(attitude.lm, direction = "forward")   # 전진선택법 
attitude.backward <- step(attitude.lm, direction = "backward") # 후진제거법 
attitude.stepwise <- step(attitude.lm, direction = "both")     # 단계선택법

결론: 결과가 같고, AIC가 가장 적은 Backward Elimination Method와 Stepwise Selection Method 선택.

summary(attitude.stepwise)
##  
## Call: 
## lm(formula = rating ~ complaints + learning, data = attitude) 
##  
## Residuals: 
##      Min       1Q   Median       3Q      Max  
## -11.5568  -5.7331   0.6701   6.5341  10.3610  
##  
## Coefficients: 
##             Estimate Std. Error t value Pr(>|t|)     
## (Intercept)   9.8709     7.0612   1.398    0.174     
## complaints    0.6435     0.1185   5.432 9.57e-06 *** 
## learning      0.2112     0.1344   1.571    0.128     
## --- 
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 
##  
## Residual standard error: 6.817 on 27 degrees of freedom 
## Multiple R-squared:  0.708,  Adjusted R-squared:  0.6864  
## F-statistic: 32.74 on 2 and 27 DF,  p-value: 6.058e-08

 

결과 해석

  1. 회귀모형은 타당한가?
    F-statistic: 32.74 on 2 and 27 DF, p-value: 6.058e-08 -> 타당하다
  2. 독립변수는 영향을 미치는가?
    complaints는 유의한 영향을 주고, learning은 주지 않는다 -> 단, 모형이 자동적으로 제거하지 않아서, 전처리를 해야 함.
attitude.final.model <- lm(rating ~ complaints, data = attitude) # 최종은 단순선형 회귀분석 
summary(attitude.final.model)
##  
## Call: 
## lm(formula = rating ~ complaints, data = attitude) 
##  
## Residuals: 
##      Min       1Q   Median       3Q      Max  
## -12.8799  -5.9905   0.1783   6.2978   9.6294  
##  
## Coefficients: 
##             Estimate Std. Error t value Pr(>|t|)     
## (Intercept) 14.37632    6.61999   2.172   0.0385 *   
## complaints   0.75461    0.09753   7.737 1.99e-08 *** 
## --- 
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 
## 
## Residual standard error: 6.993 on 28 degrees of freedom 
## Multiple R-squared:  0.6813, Adjusted R-squared:  0.6699  
## F-statistic: 59.86 on 1 and 28 DF,  p-value: 1.988e-08
  1. 회귀모형 타당함. 독립변수 영향을 줌(rating 1 = complaints 0.754만큼)
  2. 회귀의 설명력 -> 약 68.1%

 

회귀모형 평가기준
AIC: 값이 작을 수록 모형이 좋다
BIC: Bayseian Information Criterion : 값이 작을 수록 모형이 좋다
R-Square(Adjusted R-Squred): 값이 클수록 모형이 좋다
MSE: 값이 작을수록 모형이 좋다

 

(2) 더미변수(Dummy Variable)

  • 독립변수에 질적 자료를 넣는 것
  • 질적 자료 -> 더미변수로 만들어야 함
  • 더미변수를 회귀모형의 독립변수로 넣을 수 있음
  • 더미변수는 0과 1로만 구성되어야 함
  • 더미변수의 개수는 질적 자료가 가지는 값의 개수의 -1개

[더미변수] 예제 데이터 : iris
- 양적 자료: Sepal.Length, Sepal.Width, Petal.Length, Petal.Width
- 질적 자료: Species (3종류: “setosa”, “versicolor”, “virginica”)


- 종속변수 : Sepal.Length
- 독립변수 : Sepal.Width, Petal.Length, Petal.Width, Species
- 더미변수 : Species -> Species.versicolor, Species.virginica

iris$Species.versicolor <- ifelse(iris$Species == "versicolor", 1, 0) 
iris$Species.virginica <- ifelse(iris$Species == "virginica", 1, 0)
# 필요없는 변수 제외후, 따로 저장하기 
iris2 <- dplyr::select(iris, -Species) 
iris.model <- lm(Sepal.Length ~ ., data = iris2) 
summary(iris.model)
##  
## Call: 
## lm(formula = Sepal.Length ~ ., data = iris2) 
##  
## Residuals: 
##      Min       1Q   Median       3Q      Max  
## -0.79424 -0.21874  0.00899  0.20255  0.73103  
##  
## Coefficients: 
##                    Estimate Std. Error t value Pr(>|t|)     
## (Intercept)         2.17127    0.27979   7.760 1.43e-12 *** 
## Sepal.Width         0.49589    0.08607   5.761 4.87e-08 *** 
## Petal.Length        0.82924    0.06853  12.101  < 2e-16 *** 
## Petal.Width        -0.31516    0.15120  -2.084  0.03889 *   
## Species.versicolor -0.72356    0.24017  -3.013  0.00306 **  
## Species.virginica  -1.02350    0.33373  -3.067  0.00258 **  
## --- 
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 
##  
## Residual standard error: 0.3068 on 144 degrees of freedom 
## Multiple R-squared:  0.8673, Adjusted R-squared:  0.8627  
## F-statistic: 188.3 on 5 and 144 DF,  p-value: < 2.2e-16

iris.model 결과 해석해보기.

 

(3) 다중공선성(Multicollinearity)

  • 독립변수들 간에 상관관계가 있는 것을 다중공선성이 있다라고 함
  • 회귀분석의 가정: 다중공선성이 없어야 함
  • VIF : Variance Inflation Factor : 분산팽창인자 = 분산팽창요인
  • VIF 값이 10이상이면, 다중공선성이 존재한다고 판단
car::vif(iris.model)
##        Sepal.Width       Petal.Length        Petal.Width  
##           2.227466          23.161648          21.021401  
## Species.versicolor  Species.virginica  
##          20.423390          39.434378

결과: 하나 빼고 다 10을 초과하기 때문에 이 모델은 회귀분석을 쓸 수 없음.

 

(4) 독립변수들의 영향력 크기의 비교

최종 모형에서 2개 이상의 독립변수가 종속변수에게 영향을 준다면, 어떤 독립변수가 가장 큰 영향을 줄까?

lm.beta::lm.beta(iris.model) # 표준화된 회귀계수의 절대값이 가장 큰 값이 가장 큰 영향을 줌
##  
## Call: 
## lm(formula = Sepal.Length ~ ., data = iris2) 
##  
## Standardized Coefficients:: 
##        (Intercept)        Sepal.Width       Petal.Length  
##          0.0000000          0.2610193          1.7678091  
##        Petal.Width Species.versicolor  Species.virginica  
##         -0.2901014         -0.4132919         -0.5846126

결론: Petal.Length가 종속변수에 가장 큰 영향, 그 다음은 Species.virginica

 


에러(Error = 입실론)에 대한 가정

  1. 정규성 가정
  2. 등분산성 가정
  3. 선형성 가정
  4. 독립성 가정

 

par(mfrow = c(2, 2)) 
plot(attitude.final.model)  # plot(회귀모형)


잔차(residual)분석

 

1. 정규성 가정

  • 귀무가설: 정규분포를 따른다
  • 대립가설: 정규분포를 따르지 않는다
shapiro.test(attitude.final.model$residuals)
##  
##  Shapiro-Wilk normality test 
##  
## data:  attitude.final.model$residuals 
## W = 0.91895, p-value = 0.02519

결론: 유의확률 0.025이므로 유의수준 0.05에서 정규성 가정이 깨짐
원래 정규성 가정이 깨진다면 쓸 수 없는 모델임.

 

2. 독립성 가정

  • 귀무가설: 에러들은 각각 독립이다
  • 대립가설: 에러들은 각각 독립이 아니다
car::durbinWatsonTest(attitude.final.model)
##  lag Autocorrelation D-W Statistic p-value 
##    1      -0.1699039      2.244684   0.526 
##  Alternative hypothesis: rho != 0

D-W 통계량이 2에 가까우면 자기상관이 없음(각각 독립), 2에서 멀어지면(0 or 4) 자기상관이 있다(각각 독립이 아니다)
결론: 유의확률이 0.526이므로 유의수준 0.05에서 독립성 가정 만족 (댓글로 알려주신 '빛날희-'님 감사합니다)

 

3. 등분산성 검정

  • 귀무가설: 등분산이다
  • 대립가설: 이분산이다
car::ncvTest(attitude.final.model)
## Non-constant Variance Score Test  
## Variance formula: ~ fitted.values  
## Chisquare = 0.7183872    Df = 1     p = 0.3966735

결론: 유의확률이 0.397이므로 유의수준 0.05에서 등분산성 만족

 

4. 에러에 대한 전반적인 가정 검정

summary(gvlma::gvlma(attitude.final.model))
##  
## Call: 
## lm(formula = rating ~ complaints, data = attitude) 
##  
## Residuals: 
##      Min       1Q   Median       3Q      Max  
## -12.8799  -5.9905   0.1783   6.2978   9.6294  
##  
## Coefficients: 
##             Estimate Std. Error t value Pr(>|t|)     
## (Intercept) 14.37632    6.61999   2.172   0.0385 *   
## complaints   0.75461    0.09753   7.737 1.99e-08 *** 
## --- ## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 
##  
## Residual standard error: 6.993 on 28 degrees of freedom 
## Multiple R-squared:  0.6813, Adjusted R-squared:  0.6699  
## F-statistic: 59.86 on 1 and 28 DF,  p-value: 1.988e-08 
##  
##  
## ASSESSMENT OF THE LINEAR MODEL ASSUMPTIONS 
## USING THE GLOBAL TEST ON 4 DEGREES-OF-FREEDOM: 
## Level of Significance =  0.05  
##  
## Call: 
##  gvlma::gvlma(x = attitude.final.model)  
##  
##                        Value p-value                Decision 
## Global Stat        2.5421037  0.6371 Assumptions acceptable. 
## Skewness           0.5478902  0.4592 Assumptions acceptable. 
## Kurtosis           1.9891412  0.1584 Assumptions acceptable. 
## Link Function      0.0044772  0.9467 Assumptions acceptable. 
## Heteroscedasticity 0.0005952  0.9805 Assumptions acceptable.
gvlma::gvlma(회귀모형) 
summary(gvlma::gvlma(회귀모형))  

Global Stat : 에러에 대한 만족도, assumptions acceptable : 가정이 대체적으로 만족 
Skewness, Kurtosis 정규성 검정 
Link Function 선형선 검정  
Heteroscedasticity 등분산성 검정 

 

'■ 프로그래밍 > R' 카테고리의 다른 글

[R] Correlation Analysis 상관분석  (0) 2018.08.27
[R] ANOVA (Analysis of Variance)  (0) 2018.08.25
[R] Paired Test  (0) 2018.08.25
[R] Two Sample T-test  (0) 2018.08.25
[R] One Sample Test (단일 표본 검정)  (0) 2018.08.25