회귀분석 출석과제 방송대 2022

1번 문제

  1. 자료파일 만들기
temp <- c(194.5, 194.3, 197.9, 198.4, 199.4, 199.9, 200.9, 201.1, 201.4, 201.3, 203.6, 204.6, 209.5, 208.6, 210.7, 211.9, 212.2)
temp
##  [1] 194.5 194.3 197.9 198.4 199.4 199.9 200.9 201.1 201.4 201.3 203.6 204.6
## [13] 209.5 208.6 210.7 211.9 212.2
press <- c(20.79, 20.79, 22.40, 22.67, 23.15, 23.35, 23.89, 23.99, 24.02, 24.01, 25.14, 26.57, 28.49, 27.76, 29.04, 29.88, 30.06)
press
##  [1] 20.79 20.79 22.40 22.67 23.15 23.35 23.89 23.99 24.02 24.01 25.14 26.57
## [13] 28.49 27.76 29.04 29.88 30.06
Lpress <- 100*log10(press)
Lpress
##  [1] 131.7854 131.7854 135.0248 135.5452 136.4551 136.8287 137.8216 138.0030
##  [9] 138.0573 138.0392 140.0365 142.4392 145.4692 144.3419 146.2997 147.5381
## [17] 147.7989
  1. 자료를 읽어 산점도 그리기
plot(temp, Lpress, pch=19)

  1. 회귀모형
    회귀계수의 추정값은 절편 b0 = -42.164, 기울기 b1 = 0.895

    단순회귀방정식 : formular
    기울기에 대한 t-값=54.42이고 p-값=2x10^-16 이 매우 작으므로 귀무가설 기각
    결정계수 = 0.995 로서 총변동의 99.5% 를 회귀방정식으로 설명 가능
    F-값=2962 이고, 이에 대한 p-값=2.2x10^-16 으로서 회귀직선이 유의미함
result.lm = lm(Lpress ~ temp)
summary(result.lm)
## 
## Call:
## lm(formula = Lpress ~ temp)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.31974 -0.14707 -0.06890  0.01877  1.35994 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -42.16418    3.34136  -12.62 2.17e-09 ***
## temp          0.89562    0.01646   54.42  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3792 on 15 degrees of freedom
## Multiple R-squared:  0.995,  Adjusted R-squared:  0.9946 
## F-statistic:  2962 on 1 and 15 DF,  p-value: < 2.2e-16
  1. 분산분석표 구하기
    회귀방정식이 유의한가에 대한 검정은 분산분석표에 의한 F-검정으로 수행
    검정통계량 F0 = 2961.5 이고, 이에 대한 유의확률 p-값=2.2x10^-16
    이 매우 작으므로 적합된 회귀선이 유의하다
anova(result.lm)
## Analysis of Variance Table
## 
## Response: Lpress
##           Df Sum Sq Mean Sq F value    Pr(>F)    
## temp       1 425.76  425.76  2961.5 < 2.2e-16 ***
## Residuals 15   2.16    0.14                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
  1. 잔차 및 추정값 보기
    잔차 및 추정값 출력
names(result.lm)
##  [1] "coefficients"  "residuals"     "effects"       "rank"         
##  [5] "fitted.values" "assign"        "qr"            "df.residual"  
##  [9] "xlevels"       "call"          "terms"         "model"
wholeBind <- {}
cbind(wholeBind, temp, Lpress, result.lm$residuals, result.lm$fitted.values)
##     temp   Lpress                     
## 1  194.5 131.7854 -0.24802254 132.0335
## 2  194.3 131.7854 -0.06889899 131.8543
## 3  197.9 135.0248 -0.05377004 135.0786
## 4  198.4 135.5452  0.01877126 135.5264
## 5  199.4 136.4551  0.03310101 136.4220
## 6  199.9 136.8287 -0.04111891 136.8698
## 7  200.9 137.8216  0.05618981 137.7654
## 8  201.1 138.0030  0.05847608 137.9445
## 9  201.4 138.0573 -0.15593374 138.2132
## 10 201.3 138.0392 -0.08445627 138.1237
## 11 203.6 140.0365 -0.14706580 140.1836
## 12 204.6 142.4392  1.35994454 141.0792
## 13 209.5 145.4692  0.00150698 145.4677
## 14 208.6 144.3419 -0.31973578 144.6617
## 15 210.7 146.2997 -0.24281806 146.5425
## 16 211.9 147.5381 -0.07916126 147.6172
## 17 212.2 147.7989 -0.08700828 147.8859
  1. 잔차그림 그리기
    잔차를 독립변수 temp에 대해서 그려보면
    잔차는 0을 중심으로 일정한 범위 내에 있으므로 회귀에 대한 기본 가정을 만족
plot(temp, result.lm$resid, pch=19)
abline(h=0, lty=2)

  1. 추정값의 신뢰대 구하기
Lpress
##  [1] 131.7854 131.7854 135.0248 135.5452 136.4551 136.8287 137.8216 138.0030
##  [9] 138.0573 138.0392 140.0365 142.4392 145.4692 144.3419 146.2997 147.5381
## [17] 147.7989
LpressMat = (Lpress-3)
LpressMat
##  [1] 128.7854 128.7854 132.0248 132.5452 133.4551 133.8287 134.8216 135.0030
##  [9] 135.0573 135.0392 137.0365 139.4392 142.4692 141.3419 143.2997 144.5381
## [17] 144.7989
p.x = data.frame(LpressMat)
p.x
##    LpressMat
## 1   128.7854
## 2   128.7854
## 3   132.0248
## 4   132.5452
## 5   133.4551
## 6   133.8287
## 7   134.8216
## 8   135.0030
## 9   135.0573
## 10  135.0392
## 11  137.0365
## 12  139.4392
## 13  142.4692
## 14  141.3419
## 15  143.2997
## 16  144.5381
## 17  144.7989
pc = predict(result.lm, int="c", newdata = p.x)
pc
##         fit      lwr      upr
## 1  132.0335 131.6780 132.3889
## 2  131.8543 131.4930 132.2157
## 3  135.0786 134.8143 135.3428
## 4  135.5264 135.2735 135.7792
## 5  136.4220 136.1897 136.6543
## 6  136.8698 136.6465 137.0932
## 7  137.7654 137.5566 137.9742
## 8  137.9445 137.7380 138.1511
## 9  138.2132 138.0098 138.4167
## 10 138.1237 137.9193 138.3281
## 11 140.1836 139.9863 140.3809
## 12 141.0792 140.8749 141.2836
## 13 145.4677 145.1658 145.7697
## 14 144.6617 144.3830 144.9404
## 15 146.5425 146.2074 146.8775
## 16 147.6172 147.2472 147.9872
## 17 147.8859 147.5069 148.2649
pred.x = p.x$LpressMat
pred.x
##  [1] 128.7854 128.7854 132.0248 132.5452 133.4551 133.8287 134.8216 135.0030
##  [9] 135.0573 135.0392 137.0365 139.4392 142.4692 141.3419 143.2997 144.5381
## [17] 144.7989
plot(temp, Lpress, ylim = range(Lpress, pc))

matplot(pred.x, pc, lty=1, lwd=1, col="BLUE")

?matlines
## starting httpd help server ... done

2번 문제

헬스클럽 30명의 건강자료
X1:몸무게(파운드)
X2:분당 정지 맥박수
X3:근력(파운드)
X4:1/4마일 시험주행속도(초)
Y:1마일 주행속도(초)

  1. 자료읽기
X1 <- c(217,141,152,153,180,193,162,180,205,168,232,146,173,155,212)
X2 <- c(67,52,58,56,66,71,65,80,77,74,65,68,51,64,66)
X3 <- c(260,190,203,183,170,178,160,170,188,170,220,158,243,198,220)
X4 <- c(91,66,68,70,77,82,74,84,83,79,72,68,56,59,77)
Y  <- c(481,292,338,357,396,429,345,469,425,358,393,346,279,311,401)
dataF <- data.frame(X1,X2,X3,X4,Y)
dataF
##     X1 X2  X3 X4   Y
## 1  217 67 260 91 481
## 2  141 52 190 66 292
## 3  152 58 203 68 338
## 4  153 56 183 70 357
## 5  180 66 170 77 396
## 6  193 71 178 82 429
## 7  162 65 160 74 345
## 8  180 80 170 84 469
## 9  205 77 188 83 425
## 10 168 74 170 79 358
## 11 232 65 220 72 393
## 12 146 68 158 68 346
## 13 173 51 243 56 279
## 14 155 64 198 59 311
## 15 212 66 220 77 401
head(dataF)
##    X1 X2  X3 X4   Y
## 1 217 67 260 91 481
## 2 141 52 190 66 292
## 3 152 58 203 68 338
## 4 153 56 183 70 357
## 5 180 66 170 77 396
## 6 193 71 178 82 429
  1. 기술통계량 및 상관계수 보기
    독립변수와 종속변수의 상관계수가 전반적으로 높음
    X3 과 Y 간에서는 상관계수가 낮음을 알 수 있음
summary(dataF)
##        X1              X2              X3              X4       
##  Min.   :141.0   Min.   :51.00   Min.   :158.0   Min.   :56.00  
##  1st Qu.:154.0   1st Qu.:61.00   1st Qu.:170.0   1st Qu.:68.00  
##  Median :173.0   Median :66.00   Median :188.0   Median :74.00  
##  Mean   :177.9   Mean   :65.33   Mean   :194.1   Mean   :73.73  
##  3rd Qu.:199.0   3rd Qu.:69.50   3rd Qu.:211.5   3rd Qu.:80.50  
##  Max.   :232.0   Max.   :80.00   Max.   :260.0   Max.   :91.00  
##        Y        
##  Min.   :279.0  
##  1st Qu.:341.5  
##  Median :358.0  
##  Mean   :374.7  
##  3rd Qu.:413.0  
##  Max.   :481.0
cor(dataF)
##           X1         X2          X3          X4          Y
## X1 1.0000000  0.4060777  0.51445988  0.57521659 0.68815631
## X2 0.4060777  1.0000000 -0.36969292  0.72916894 0.73972520
## X3 0.5144599 -0.3696929  1.00000000 -0.04189341 0.07542175
## X4 0.5752166  0.7291689 -0.04189341  1.00000000 0.92465476
## Y  0.6881563  0.7397252  0.07542175  0.92465476 1.00000000
  1. 회귀모형 적합하기
    추정된 회귀방정식 :
    formular
    결정계수 : R^2 = 0.9055
    X1 유의확률 p-값=0.4196 이므로 유의수준 a=0.05 에서 귀무가설 기각 불가
    X2 유의확률 P-값=0.2545 이므로 유의수준 a=0.05 에서 귀무가설 기각 불가
    X3 유의확률 P-값=0.5305 이므로 유의수준 a=0.05 에서 귀무가설 기각 불가
    X4 유의확률 p-값=0.0016 이므로 유의수준 a=0.05 에서 귀무가설 기각
dataF.lm = lm(Y~X1+X2+X3+X4, data=dataF)
summary(dataF.lm)
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3 + X4, data = dataF)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -44.645 -10.608   3.326   9.131  31.511 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)   
## (Intercept) -144.7750    85.2800  -1.698   0.1204   
## X1             0.3204     0.3807   0.842   0.4196   
## X2             1.5955     1.3198   1.209   0.2545   
## X3             0.2176     0.3348   0.650   0.5305   
## X4             4.2852     1.0001   4.285   0.0016 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 21.92 on 10 degrees of freedom
## Multiple R-squared:  0.9055, Adjusted R-squared:  0.8677 
## F-statistic: 23.96 on 4 and 10 DF,  p-value: 4.158e-05
  1. 분산분석표
    회귀제곱합 = 24081.1 + 12900.5 + 246.9 + 8819 = 46,047.5
    평균제곱 = 46,047.5 / 4 = 11,511.875
    F-값 = 4
anova(dataF.lm)
## Analysis of Variance Table
## 
## Response: Y
##           Df  Sum Sq Mean Sq F value    Pr(>F)    
## X1         1 24081.1 24081.1 50.1298 3.374e-05 ***
## X2         1 12900.5 12900.5 26.8552 0.0004118 ***
## X3         1   246.9   246.9  0.5141 0.4897926    
## X4         1  8819.0  8819.0 18.3585 0.0015995 ** 
## Residuals 10  4803.7   480.4                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
  1. 잔차산점도 그리기
    독립변수, 종속변수의 추정값과 잔차 간의 관계
    X1 과 잔차의 산점도
plot(dataF$X1, dataF.lm$resid)

X2 와 잔차의 산점도

plot(dataF$X2, dataF.lm$resid)

X3 와 잔차의 산점도

plot(dataF$X3, dataF.lm$resid)

X4 와 잔차의 산점도

plot(dataF$X4, dataF.lm$resid)

추정값과 잔차의 산점도

plot(dataF$Y, dataF.lm$resid)