[ 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) 변수선택
최종 모형에 어떤 독립변수들로 구성할 것인가?
- 모든 독립변수를 최종 회귀모형에 포함시킴
- 통계적으로 유의한 독립변수만 최종 회귀모형에 포함시킴
전진선택방법(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
결과 해석
- 회귀모형은 타당한가?
F-statistic: 32.74 on 2 and 27 DF, p-value: 6.058e-08 -> 타당하다 - 독립변수는 영향을 미치는가?
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
- 회귀모형 타당함. 독립변수 영향을 줌(rating 1 = complaints 0.754만큼)
- 회귀의 설명력 -> 약 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 = 입실론)에 대한 가정
- 정규성 가정
- 등분산성 가정
- 선형성 가정
- 독립성 가정
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 |