# R pubs
lm_result <- lm(formula=dist~speed, data=cars)
confint(lm_result)
##                  2.5 %    97.5 %
## (Intercept) -31.167850 -3.990340
## speed         3.096964  4.767853
deviance(lm_result) # 잔차제곱합 - 모델 간 평가 시 사용(작을수록 좋은 모델)
## [1] 11353.52
plot(cars$dist, cars$speed)
abline(lm_result) # 회귀모델 방정식 선 그리기

par(mfrow=c(2, 2))
plot(lm_result)

speed <- c(50, 60, 70, 80, 90, 100)
df_input <- data.frame(speed) # 동일한 칼럼명으로 데이터 프레임 만든다.
predict(lm_result, df_input)
##        1        2        3        4        5        6 
## 179.0413 218.3654 257.6895 297.0136 336.3377 375.6618
predict_dist <- predict(lm_result, df_input)
cbind(df_input, predict_dist) # 가독성 향상 
##   speed predict_dist
## 1    50     179.0413
## 2    60     218.3654
## 3    70     257.6895
## 4    80     297.0136
## 5    90     336.3377
## 6   100     375.6618
predict_dist <- predict(lm_result, df_input, interval="confidence", level=0.95)
cbind(df_input, predict_dist)
##   speed      fit      lwr      upr
## 1    50 179.0413 149.8060 208.2766
## 2    60 218.3654 180.8489 255.8820
## 3    70 257.6895 211.8651 303.5139
## 4    80 297.0136 242.8670 351.1602
## 5    90 336.3377 273.8603 398.8151
## 6   100 375.6618 304.8480 446.4755
predict_dist <- predict(lm_result, df_input, interval="prediction", level=0.95) # 불확실성 감안
cbind(df_input, predict_dist)
##   speed      fit      lwr      upr
## 1    50 179.0413 136.4865 221.5962
## 2    60 218.3654 169.7474 266.9834
## 3    70 257.6895 202.4076 312.9715
## 4    80 297.0136 234.6592 359.3680
## 5    90 336.3377 266.6266 406.0488
## 6   100 375.6618 298.3908 452.9328