Vi kommer skapa en enkel regressionsmodell och utvärdera resultaten. Modellens syfte är att estimera effekten av fyra prediktorer som vi är intresserade av. Patienterna i denna studien är alla Pimaindianer, vilka är en indianstam som visat sig ha mycket hög risk att utveckla diabetes. Vi kommer studera hur vikt, ålder, blodtryck och insulin relaterar till blodsocker (glukos).
Vi börjar med att installera paketen “sjPlot” och “mlbench”. I sjPlot finns en funktion som skriver ut prydliga grafer och i mlbench finns data på Pimaindianer.
library(sjPlot)
library(mlbench)
# Här laddar vi datafilen med pimaindianer
data(PimaIndiansDiabetes)
# Vi inspekterar filen med "summary". Denna funktionen presenterar minimum, maximum, medelvärde, median och kvartilavstånd för alla variabler
summary(PimaIndiansDiabetes)
## pregnant glucose pressure triceps
## Min. : 0.000 Min. : 0.0 Min. : 0.00 Min. : 0.00
## 1st Qu.: 1.000 1st Qu.: 99.0 1st Qu.: 62.00 1st Qu.: 0.00
## Median : 3.000 Median :117.0 Median : 72.00 Median :23.00
## Mean : 3.845 Mean :120.9 Mean : 69.11 Mean :20.54
## 3rd Qu.: 6.000 3rd Qu.:140.2 3rd Qu.: 80.00 3rd Qu.:32.00
## Max. :17.000 Max. :199.0 Max. :122.00 Max. :99.00
## insulin mass pedigree age
## Min. : 0.0 Min. : 0.00 Min. :0.0780 Min. :21.00
## 1st Qu.: 0.0 1st Qu.:27.30 1st Qu.:0.2437 1st Qu.:24.00
## Median : 30.5 Median :32.00 Median :0.3725 Median :29.00
## Mean : 79.8 Mean :31.99 Mean :0.4719 Mean :33.24
## 3rd Qu.:127.2 3rd Qu.:36.60 3rd Qu.:0.6262 3rd Qu.:41.00
## Max. :846.0 Max. :67.10 Max. :2.4200 Max. :81.00
## diabetes
## neg:500
## pos:268
##
##
##
##
Man bör alltid inspektera hur variablerna beter sig. Här gör vi en korrelationsmatris med hjälp av funktionen “scatterplotMatrix” från “car”-paketet.
library(car)
scatterplotMatrix(~glucose+mass+age+insulin+pressure, data=PimaIndiansDiabetes)
Nu gör vi en linjär regression (multipel regression) där utfallsmåttet är glukos och vi har 4 prediktorer. Funktionen för linjär regression är “lm” som står för “linear model”. Modellen specificeras genom att den beroende variabeln (glukos) placeras till vänster om “~” och prediktorerna till höger om “~”. Därefter anges datafilen.
# Linjär regression (multipel regression)
modell <- lm(glucose ~ mass + age + insulin + pressure, data=PimaIndiansDiabetes)
# Skriv ut en snygg tabell med resultaten
sjt.lm(modell)
| glucose | ||||
| B | CI | p | ||
| (Intercept) | 68.89 | 58.11 – 79.67 | <.001 | |
| mass | 0.58 | 0.31 – 0.86 | <.001 | |
| age | 0.72 | 0.55 – 0.90 | <.001 | |
| insulin | 0.09 | 0.07 – 0.10 | <.001 | |
| pressure | 0.03 | -0.08 – 0.15 | .555 | |
| Observations | 768 | |||
| R2 / adj. R2 | .209 / .205 | |||
# alternativt kan vi använda funktionen "summary" men tabellen blir inte lika snygg
summary(modell)
##
## Call:
## lm(formula = glucose ~ mass + age + insulin + pressure, data = PimaIndiansDiabetes)
##
## Residuals:
## Min 1Q Median 3Q Max
## -123.65 -17.78 -2.50 16.23 86.57
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 68.893507 5.491146 12.546 < 2e-16 ***
## mass 0.583397 0.138432 4.214 2.81e-05 ***
## age 0.724746 0.090398 8.017 4.06e-15 ***
## insulin 0.086647 0.009137 9.483 < 2e-16 ***
## pressure 0.033732 0.057169 0.590 0.555
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 28.52 on 763 degrees of freedom
## Multiple R-squared: 0.2087, Adjusted R-squared: 0.2045
## F-statistic: 50.3 on 4 and 763 DF, p-value: < 2.2e-16
Detta undersöker vi med funktionen plot(). Glöm inte att du måste trycka på “Eneter” för att bläddra mellan dessa grafer.
plot(modell)