Exempel med multipel regression i R

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  
##           
##           
##           
## 

Inspektera variablerna

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

Har vi tillfredsställt antagandena för linjär regression?

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)