# load pakken der kan indlæse statafiler (pakken hedder foreign)
library(foreign)
data<- read.dta(file.path("C:/Users/Vision/Desktop/STATISTIK/BIOSTATISTIK2/exercise20-1.dta"))
data
Y X1 X2 X3 X4
1 51.4 0.2 17.8 24.6 18.9
2 72.0 1.9 29.4 20.7 8.0
3 53.2 0.2 17.0 18.5 22.6
4 83.2 10.7 30.2 10.6 7.1
5 57.4 6.8 15.3 8.9 27.3
6 66.5 10.6 17.6 11.1 20.8
7 98.3 9.6 35.6 10.6 5.6
8 74.8 6.3 28.2 8.8 13.1
9 92.2 10.8 34.7 11.9 5.9
10 97.9 9.6 35.8 10.8 5.5
11 88.1 10.5 29.6 11.7 7.8
12 94.8 20.5 26.3 6.7 10.0
13 62.8 0.4 22.3 26.5 14.3
14 81.6 2.3 37.9 20.0 0.5
# Så laves en model hvor alle faktorer indgår som variable
#Modellen er Y=a + B1X1+B2X2+B3X3+B4X4
model.full <- lm(Y ~ X1 + X2 + X3 + X4, data=data)
summary(model.full) # show results
Call:
lm(formula = Y ~ X1 + X2 + X3 + X4, data = data)
Residuals:
Min 1Q Median 3Q Max
-4.1388 -1.3761 -0.7588 2.1733 4.0201
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -30.1369 37.5282 -0.803 0.44264
X1 2.0699 0.4562 4.537 0.00141 **
X2 2.5816 0.7397 3.490 0.00683 **
X3 0.6360 0.4603 1.382 0.20039
X4 1.1060 0.7648 1.446 0.18208
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 3.107 on 9 degrees of freedom
Multiple R-squared: 0.9757, Adjusted R-squared: 0.9648
F-statistic: 90.18 on 4 and 9 DF, p-value: 2.954e-07
#H-Null=no significant multiple regression relationship
# Kan ses i første output:
# svarende har vi igen fra første output
Y=-30.137 + 5.2*2.070 + 21.3*2.582 + 19.7*0.636 + 12.2*1.106
# plot af residualer
plot(residuals(model.full))
#residualer vs fitted values
layout(matrix(c(1,2,3,4),2,2))
plot(model.full)
### Det ses at betingelserne for normalfordeling er opfyldt (øverste venstre plot samt nederste venstre plot) ### Det er svært helt at forkaste heteroscedasitet, jeg synes grafisk ikke det er til stede og derfor er betingelserne opfyldt. Der findes vist test der kan spytte et tal ud for dette.
#Backward variable selection
#Det ser ud til at X3 er mindst signifikant, så vi starter med at smide den ud af modellen
model.reduced1 <- lm(Y ~ X1 + X2 + X4, data=data)
summary(model.reduced1) # show results
Call:
lm(formula = Y ~ X1 + X2 + X4, data = data)
Residuals:
Min 1Q Median 3Q Max
-4.4107 -1.9354 -0.4523 2.5472 4.4035
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.8304 16.6111 1.013 0.33485
X1 1.4769 0.1614 9.149 3.57e-06 ***
X2 1.7329 0.4306 4.024 0.00242 **
X4 0.2138 0.4281 0.499 0.62838
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 3.245 on 10 degrees of freedom
Multiple R-squared: 0.9705, Adjusted R-squared: 0.9616
F-statistic: 109.6 on 3 and 10 DF, p-value: 5.981e-08
#Når man kigger på adjusted R-squared er det ikke den store forskel på de to modeller. Siden den antageligt ikke bidrager nævneværdigt med information til modellen smider vi den ud.
#Næste variabel der forsøges smidt ud af modellen er X4:
model.reduced2 <- lm(Y ~ X1 + X2, data=data)
summary(model.reduced2) # show results
Call:
lm(formula = Y ~ X1 + X2, data = data)
Residuals:
Min 1Q Median 3Q Max
-4.609 -1.510 -0.799 2.341 4.827
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 24.9632 3.1426 7.944 6.99e-06 ***
X1 1.4761 0.1558 9.473 1.27e-06 ***
X2 1.5264 0.1157 13.195 4.36e-08 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 3.132 on 11 degrees of freedom
Multiple R-squared: 0.9698, Adjusted R-squared: 0.9643
F-statistic: 176.4 on 2 and 11 DF, p-value: 4.4e-09
#Igen når man kigger på adjusted R-squared er det ikke den store forskel på de to modeller. Siden den antageligt ikke bidrager nævneværdigt med information til modellen smider vi den ud. VI kan se at P-værdien bliver mindre som konsekvens af at der er flere DF i de reducerede modeller.
#Så prøver vi at smide X2 ud - her må man forvente at det påvirker modellens egnethed:
model.reduced3 <- lm(Y ~ X1, data=data)
summary(model.reduced3) # show results
Call:
lm(formula = Y ~ X1, data = data)
Residuals:
Min 1Q Median 3Q Max
-18.5817 -9.3153 -0.2446 7.5992 16.6881
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 62.3085 5.3632 11.618 6.93e-08 ***
X1 2.0108 0.5909 3.403 0.00524 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 12.3 on 12 degrees of freedom
Multiple R-squared: 0.4911, Adjusted R-squared: 0.4487
F-statistic: 11.58 on 1 and 12 DF, p-value: 0.005241
# Ganske rigtigt falder Adjusted R-squared betragteligt (og P-værdien stiger markant) og X2 må holdes i modellen.