R

R 기초 22 - 회귀모델 평가

코딩탕탕 2022. 10. 26. 11:14

 

# 회귀모델 평가
cars  # 자동차의 속도와 제동거리
head(cars, 3)
cor(cars)
is(cars)

# 속도에 따른 제동거리 예측 모델

model <- lm(formula = dist ~ speed, data = cars)
summary(model)

coef(model)

fitted(model)[1:4] # 모델이 예측한 값(dist)

residuals(model)[1:4] # 모델과 실제값과의 차이(residuals, 잔차)

cars[1:4,]
fitted(model)[1:4] + residuals(model)[1:4] # 예측값 + 잔차 = 실제값. 잔차 = 실제값 - 예측값

confint(model)

predict(model, newdata = data.frame(speed=10))
predict(model, newdata = data.frame(speed=c(10, 15, 20)))
predict(model, newdata = data.frame(speed=10), interval = 'confidence') # 신뢰구간 확인

# 모델 간 평가
full_model <- lm(dist ~ speed, data = cars) # 완전모형
full_model

reduce_model <- lm(dist ~ 1, data = cars) # 축소모형
reduce_model

anova(reduce_model, full_model) # 두 모델을 비교할 때도 사용 (데이터 간의 평균 비교할 때 사용)
# p-value : 1.49e-12 < 0.05 이므로 두 모델 간 유의한 차이가 있다.
# 다시 말하면 speed 변수가 유의미한 독립변수임을 알 수 있다.

예측값 + 잔차 = 실제값이다.

잔차 = 실제값 - 예측값이다.

 

예측값은 그래프에서 평균을 지나는 직선이다.

 

 

anova함수는 두 모델을 비교할 때 사용한다. 보통 데이터 간의 평균 비교할 때 사용하기도 한다.

anova함수를 사용하여 나온 p-value 값은 0.05 보다 작으면 모델 간 차이가 있다는 의미이고,

0.05 보다 크면 모델 간 차이가 없다는 의미이다.