Hoe dffits in r te berekenen


In de statistiek willen we vaak weten welke invloed verschillende observaties hebben op regressiemodellen.

Eén manier om de invloed van observaties te berekenen is door een metriek te gebruiken die bekend staat als DFFITS , wat staat voor ‘difference in fits’.

Deze metriek vertelt ons hoeveel de voorspellingen van een regressiemodel veranderen als we een individuele observatie weglaten.

Deze tutorial toont een stapsgewijs voorbeeld van hoe u DFFITS voor elke waarneming in een model in R kunt berekenen en visualiseren.

Stap 1: Maak een regressiemodel

Eerst zullen we een meervoudig lineair regressiemodel maken met behulp van de mtcars- dataset die in R is ingebouwd:

 #load the dataset
data(mtcars)

#fit a regression model
model <- lm(mpg~disp+hp, data=mtcars)

#view model summary
summary(model)

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 30.735904 1.331566 23.083 < 2nd-16 ***
available -0.030346 0.007405 -4.098 0.000306 ***
hp -0.024840 0.013385 -1.856 0.073679 .  
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.127 on 29 degrees of freedom
Multiple R-squared: 0.7482, Adjusted R-squared: 0.7309 
F-statistic: 43.09 on 2 and 29 DF, p-value: 2.062e-09

Stap 2: Bereken DFFITS voor elke waarneming

Vervolgens zullen we de ingebouwde functie dffits() gebruiken om de DFFITS-waarde voor elke waarneming in het model te berekenen:

 #calculate DFFITS for each observation in the model
dffits <- as . data . frame (dffits(model))

#display DFFITS for each observation
challenges

                    dffits(model)
Mazda RX4 -0.14633456
Mazda RX4 Wag -0.14633456
Datsun 710 -0.19956440
Hornet 4 Drive 0.11540062
Hornet Sportabout 0.32140303
Valiant -0.26586716
Duster 360 0.06282342
Merc 240D -0.03521572
Merc 230 -0.09780612
Merc 280 -0.22680622
Merc 280C -0.32763355
Merc 450SE -0.09682952
Merc 450SL -0.03841129
Merc 450SLC -0.17618948
Cadillac Fleetwood -0.15860270
Lincoln Continental -0.15567627
Chrysler Imperial 0.39098449
Fiat 128 0.60265798
Honda Civic 0.35544919
Toyota Corolla 0.78230167
Toyota Corona -0.25804885
Dodge Challenger -0.16674639
AMC Javelin -0.20965432
Camaro Z28 -0.08062828
Pontiac Firebird 0.67858692
Fiat X1-9 0.05951528
Porsche 914-2 0.09453310
Lotus Europa 0.55650363
Ford Pantera L 0.31169050
Ferrari Dino -0.29539098
Maserati Bora 0.76464932
Volvo 142E -0.24266054

Meestal bekijken we waarnemingen met DFFITS-waarden boven een drempel van 2√ p/n waarbij:

  • p: Aantal voorspellende variabelen dat in het model wordt gebruikt
  • n: Aantal waarnemingen gebruikt in het model

In dit voorbeeld zou de drempel 0,5 zijn:

 #find number of predictors in model
p <- length (model$coefficients)-1

#find number of observations
n <- nrow (mtcars)

#calculate DFFITS threshold value
thresh <- 2* sqrt (p/n)

thresh

[1] 0.5

We kunnen de waarnemingen sorteren op basis van hun DFFITS-waarden om te zien of een van hen de drempel overschrijdt:

 #sort observations by DFFITS, descending
dffits[ order (-dffits[' dffits(model) ']), ]

 [1] 0.78230167 0.76464932 0.67858692 0.60265798 0.55650363 0.39098449
 [7] 0.35544919 0.32140303 0.31169050 0.11540062 0.09453310 0.06282342
[13] 0.05951528 -0.03521572 -0.03841129 -0.08062828 -0.09682952 -0.09780612
[19] -0.14633456 -0.14633456 -0.15567627 -0.15860270 -0.16674639 -0.17618948
[25] -0.19956440 -0.20965432 -0.22680622 -0.24266054 -0.25804885 -0.26586716
[31] -0.29539098 -0.32763355

We kunnen zien dat de eerste vijf waarnemingen een DFFITS-waarde groter dan 0,5 hebben, wat betekent dat we deze waarnemingen wellicht nader willen bestuderen om te bepalen of ze een grote invloed op het model hebben.

Stap 3: Visualiseer de DFFITS voor elke waarneming

Ten slotte kunnen we een snelle grafiek maken om de DFFITS voor elke waarneming te visualiseren:

 #plot DFFITS values for each observation
plot(dffits(model), type = ' h ')

#add horizontal lines at absolute values for threshold
abline(h = thresh, lty = 2)
abline(h = -thresh, lty = 2)

DFFITS in R

Op de x-as wordt de index van elke waarneming in de dataset weergegeven en op de y-waarde wordt de overeenkomstige DFFITS-waarde voor elke waarneming weergegeven.

Aanvullende bronnen

Hoe eenvoudige lineaire regressie uit te voeren in R
Hoe meervoudige lineaire regressie uit te voeren in R
Hoe u hefboomstatistieken kunt berekenen in R
Hoe maak je een restplot in R

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert