R 단순회귀분석
단순회귀모형 만들기 코드
weight <- c(64,75.3,73,82.1,76.2,95.7,59.4,93.4,82.1,78.9,76.7,82.1,83.9,73,64.4,77.6) blood <- c(108,109,104,102,105,121,79,107,101,85,99,100,108,104,102,87) model <- lm(blood~weight) summary(model) # 회귀분석 결과 요약 anova(model) # anova table confint(model) # 회귀계수의 confidence interval
summary(model)의 결과
Residuals: ## 잔차정보 요약
Min 1Q Median 3Q Max
-17.0962 -2.9774 0.8138 5.5072 13.4990
Coefficients: ## 회귀계수의 추정과 회귀계수의 유의성 검정
Estimate Std. Error t value Pr(>|t|)
(Intercept) 61.8769 19.1890 3.225 0.00611 **
weight 0.5098 0.2462 2.070 0.05740 .
F-statistic: 4.286 on 1 and 14 DF, p-value: 0.0574 ## 모델이 유의한지에 대한 F-Test (분산분석)
anova(model)의 결과
Analysis of Variance Table
Response: blood
Df Sum Sq Mean Sq F value Pr(>F)
weight 1 368.8 368.80 4.2861 0.0574 .
Residuals 14 1204.6 86.05
- ANOVA F-test의 p-value와 회귀계수에 대한 t-test의 p-value가 같다. (0.0574)
- 또한 단순회귀분석에서는 모델이 유의한지에 대한 F-test의 p-value도 위의 p-value와 같다.
confint(model)의 결과
2.5 % 97.5 %
(Intercept) 20.7205466 103.033319
weight -0.0183444 1.037845
- 회귀계수의 confidence interval을 구할 수 있다.
Prediction
newdata <- data.frame(weight=95) predict(model, newdata, interval="predict") predict(model, newdata, interval="confidence")
- weight=95일 때, blood의 값을 예측한다. 만약 여러개의 값을 예측하고 싶은경우는 weight=c(95,90,80, ...) 처럼 vector 형식으로 값을 주면 된다.
- interval=prediction으로 하면 예측구간이고 interval=confidence로하면 신뢰구간이다.
Prediction 결과
fit lwr upr
1 110.3032 87.77959 132.8269
fit lwr upr
1 110.3032 99.74413 120.8623
- fit이 예측값이고, lwr, upr은 각각 신뢰구간의 lower bound와 upper bound이다.
- 위와 같이 예측구간과 신뢰구간을 구할 수 있다. 예측구간이 신뢰구간에 비해 넓다. 예측구간은 y에 대한 95% interval이고 신뢰구간은 E(y|x) 에 대한 95% interval이다. 따라서 예측구간이 신뢰구간에 비해 넓은 것이다.
'Tools > R' 카테고리의 다른 글
R 언어의 중요한 기초 개념 정리 (0) | 2017.10.17 |
---|---|
R - 질적변수의 교호작용을 고려한 회귀모델 (0) | 2017.05.21 |
R - (10) 리스트(List) (0) | 2017.03.04 |
R 통계 분석 - 평균, 중앙값, 최빈값 (Mean, Median, Mode) (0) | 2017.02.23 |
R - (9) 벡터 (0) | 2017.02.23 |