R

R 기초 23 - 다중회귀분석 (독립변수가 복수), 선형회귀분석의 기존 가정 충족 조건 검정

코딩탕탕 2022. 10. 26. 15:46

 

# 다중회귀분석 : 독립변수가 복수

head(state.x77, 3)
colnames(state.x77) # 칼럼 이름 호출
dim(state.x77) # 행열 갯수 호출 50 by 8
str(state.x77)
cor(state.x77) # 표준화

states <- as.data.frame(state.x77[,c('Murder','Population','Illiteracy','Income','Frost')])
head(states, 3)
cor(states)

# 다중회귀모델
mfit <- lm(formula = Murder ~ Population + Illiteracy + Income + Frost, data = states)
mfit
# 복수의 종속변수가 있으면 R-squared의 값이 커짐으로 기대치를 나누기 해야된다. 그 값이 Adjusted R-squared이다
summary(mfit) # p-value: 9.133e-08 < 0.05 유의한 모델. Adjusted R-squared:  0.5285

# *** 선형회귀분석의 기존 가정 충족 조건 ***
# . 선형성 : 독립변수(feature)의 변화에 따라 종속변수도 일정 크기로 변화해야 한다.
# . 정규성 : 잔차항이 정규분포를 따라야 한다.
# . 독립성 : 독립변수의 값이 서로 관련되지 않아야 한다.
# . 등분산성 : 그룹간의 분산이 유사해야 한다. 독립변수의 모든 값에 대한 오차들의 분산은 일정해야 한다.
# . 다중공선성 : 다중회귀 분석 시 3 개 이상의 독립변수 간에 강한 상관관계가 있어서는 안된다.

# 모델을 시각화
par(mfrow = c(2,2))
plot(mfit)

# 잔차항의 정규성 검정(이곳에서는 p-value 값이 0.05보다 커야 만족이다.)
shapiro.test(residuals(mfit)) # p-value = 0.6672 > 0.05 정규성 만족

# 독립성 검정
install.packages('car')
library(car)
durbinWatsonTest(mfit)
# D-W Statistic : 2.317, 0 ~ 4 범위이며 2 근처의 값이 나와야 자기상관관계가 없어 독립성을 만족한다.

# 선형성 검정
boxTidwell(Murder ~ Population + Illiteracy, data = states)
# Population p-value : 0.7468, Illiteracy p-value :0.5357  > 0.05이므로 선형성 만족

# 등분산성 검정
ncvTest(mfit) # p = 0.18632 > 0.05 등분산성 만족

# 다중공선성 검정
vif(mfit) # 각 값들이 10을 넘으면 다중공선성 문제 발생 1.245282   2.165848   1.345822   2.082547

선형성, 정규성, 독립성, 등분산성, 다중공선성을 검정하는 함수가 있다. 각 검정을 실시해서 p - value 값이 0.05가 넘으면 만족한다는 의미이다.

summary(통계 요약)의 p-value 값은 0.05를 넘으면 안 된다. 둘이 했갈릴 수 있으니 주의 하자!