R'de dffits nasıl hesaplanır
İstatistikte genellikle farklı gözlemlerin regresyon modellerinde ne gibi etkileri olduğunu bilmek isteriz.
Gözlemlerin etkisini hesaplamanın bir yolu, “uyumlardaki fark” anlamına gelen DFFITS olarak bilinen bir ölçüm kullanmaktır.
Bu ölçüm bize, bireysel bir gözlemi ihmal ettiğimizde regresyon modelinin yaptığı tahminlerin ne kadar değiştiğini gösterir.
Bu eğitimde, R’deki bir modeldeki her gözlem için DFFITS’nin nasıl hesaplanacağı ve görselleştirileceğine ilişkin adım adım bir örnek gösterilmektedir.
1. Adım: Bir regresyon modeli oluşturun
İlk olarak, R’de yerleşik mtcars veri kümesini kullanarak çoklu doğrusal regresyon modeli oluşturacağız:
#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
Adım 2: Her gözlem için DFFITS’yi hesaplayın
Daha sonra, modeldeki her gözlem için DFFITS değerini hesaplamak amacıyla yerleşik dffits() işlevini kullanacağız:
#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
Tipik olarak, DFFITS değerlerinin 2√ p/n eşiğinin üzerinde olduğu gözlemlere daha yakından bakarız; burada:
- p: Modelde kullanılan yordayıcı değişken sayısı
- n: Modelde kullanılan gözlem sayısı
Bu örnekte eşik 0,5 olacaktır:
#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
Herhangi birinin eşiği aşıp aşmadığını görmek için gözlemleri DFFITS değerlerine göre sıralayabiliriz:
#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
İlk beş gözlemin DFFITS değerinin 0,5’ten büyük olduğunu görebiliyoruz; bu, model üzerinde büyük bir etkiye sahip olup olmadıklarını belirlemek için bu gözlemleri daha yakından incelemek isteyebileceğimiz anlamına geliyor.
Adım 3: Her gözlem için DFFITS’yi görselleştirin
Son olarak, her gözlem için DFFITS’yi görselleştirmek üzere hızlı bir grafik oluşturabiliriz:
#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)
X ekseni, veri kümesindeki her gözlemin indeksini görüntüler ve y değeri, her gözlem için karşılık gelen DFFITS değerini görüntüler.
Ek kaynaklar
R’de basit doğrusal regresyon nasıl gerçekleştirilir
R’de çoklu doğrusal regresyon nasıl gerçekleştirilir
R’de kaldıraç istatistikleri nasıl hesaplanır
R’de artık arsa nasıl oluşturulur