วิธีการคำนวณ dffits ใน r
ในสถิติ เรามักต้องการทราบว่าสิ่งใดมีอิทธิพลต่อ การสังเกต ต่างๆ ในแบบจำลองการถดถอย
วิธีหนึ่งในการคำนวณอิทธิพลของการสังเกตคือการใช้หน่วยเมตริกที่เรียกว่า DFFITS ซึ่งย่อมาจาก “difference in fit”
ตัวชี้วัดนี้บอกเราว่าการคาดการณ์ที่เกิดจากแบบจำลองการถดถอยเปลี่ยนแปลงไปมากเพียงใดเมื่อเราละเว้นการสังเกตของแต่ละคน
บทช่วยสอนนี้แสดงตัวอย่างทีละขั้นตอนของวิธีคำนวณและแสดงภาพ DFFITS สำหรับการสังเกตแต่ละรายการในแบบจำลองใน R
ขั้นตอนที่ 1: สร้างแบบจำลองการถดถอย
ขั้นแรก เราจะสร้าง โมเดลการถดถอยเชิงเส้นหลายตัว โดยใช้ชุดข้อมูล mtcars ที่สร้างไว้ใน R:
#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
ขั้นตอนที่ 2: คำนวณ DFFITS สำหรับการสังเกตแต่ละครั้ง
ต่อไป เราจะใช้ฟังก์ชัน dffits() ในตัวเพื่อคำนวณค่า DFFITS สำหรับการสังเกตแต่ละครั้งในโมเดล:
#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
โดยทั่วไป เราจะพิจารณาการสังเกตอย่างใกล้ชิดยิ่งขึ้นด้วยค่า DFFITS ที่สูงกว่าเกณฑ์ 2√ p/n โดยที่:
- p: จำนวนตัวแปรทำนายที่ใช้ในแบบจำลอง
- n: จำนวนข้อสังเกตที่ใช้ในแบบจำลอง
ในตัวอย่างนี้ เกณฑ์จะเป็น 0.5 :
#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
เราสามารถจัดเรียงการสังเกตตามค่า DFFITS เพื่อดูว่ามีค่าใดเกินเกณฑ์หรือไม่:
#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
เราจะเห็นได้ว่าการสังเกตห้ารายการแรกมีค่า DFFITS มากกว่า 0.5 ซึ่งหมายความว่าเราอาจต้องการศึกษาข้อสังเกตเหล่านี้อย่างใกล้ชิดมากขึ้น เพื่อพิจารณาว่าสิ่งเหล่านี้มีอิทธิพลอย่างมากต่อแบบจำลองหรือไม่
ขั้นตอนที่ 3: แสดงภาพ DFFITS สำหรับการสังเกตแต่ละครั้ง
สุดท้ายนี้ เราสามารถสร้างกราฟสั้นๆ เพื่อให้เห็นภาพ DFFITS สำหรับการสังเกตแต่ละครั้ง:
#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 จะแสดงดัชนีของการสังเกตแต่ละครั้งในชุดข้อมูล และค่า y จะแสดงค่า DFFITS ที่สอดคล้องกันสำหรับการสังเกตแต่ละครั้ง
แหล่งข้อมูลเพิ่มเติม
วิธีดำเนินการถดถอยเชิงเส้นอย่างง่ายใน R
วิธีดำเนินการถดถอยเชิงเส้นพหุคูณใน R
วิธีการคำนวณสถิติเลเวอเรจใน R
วิธีสร้างพล็อตที่เหลือใน R