นามสกุลที่เป็นไปได้สำหรับแผนการวินิจฉัยเริ่มต้นสำหรับ lm (ใน R และโดยทั่วไป)?


11

ฉันเริ่มขุดลงไปในฟังก์ชั่นplot.lmฟังก์ชั่นนี้ให้หกพล็อตสำหรับ lm คือ:

  1. พล็อตของสารตกค้างต่อค่าติดตั้ง
  2. พล็อตที่ตั้งมาตราส่วนของ sqrt (| residuals |) เทียบกับค่าติดตั้ง
  3. พล็อต QQ ปกติพล็อตระยะทางของ Cook เทียบกับฉลากแถว
  4. เนื้อเรื่องของส่วนที่เหลือเทียบกับการยกระดับ
  5. เนื้อเรื่องของระยะทาง Cook เทียบกับ leverage / (1-leverage)

และฉันสงสัยว่าส่วนขยายทั่วไป / ที่เป็นประโยชน์อื่น ๆ ของแปลงปัจจุบันมีอยู่สำหรับตัวแบบเชิงเส้นและพวกเขาสามารถทำได้ใน R อย่างไร (ยินดีต้อนรับลิงก์ไปยังบทความของแพ็คเกจ)

ดังนั้นฟังก์ชั่น boxcox (จาก {MASS}) เป็นตัวอย่างของพล็อตการวินิจฉัยอีกประโยชน์ (และเช่นคำตอบจะดี) แต่ผมอยากรู้เพิ่มเติมเกี่ยวกับรูปแบบ / ส่วนขยายในที่มีอยู่แปลงวินิจฉัยเริ่มต้นสำหรับ LM ใน R (แม้ว่าโดยทั่วไป ข้อสังเกตอื่น ๆ ในหัวข้อยินดีเสมอ)

นี่คือตัวอย่างง่ายๆของสิ่งที่ฉันหมายถึง:

#Some example code for all of us to refer to
set.seed(2542)
x1 <- rnorm(100)
x2 <- runif(100, -2,2)
eps <- rnorm(100,0,2)
y <- 1 + 2*x1 + 3*x2 + eps
y[1:4] <- 14 # adding some contaminated points
fit <- lm(y~x1+x2)

#plot(y~x1+x2)
#summary(fit)

เพื่อพล็อตค่าคงที่เทียบกับ x ที่มีศักยภาพแต่ละอัน

plot(resid(fit)~x1); abline (h = 0)
plot(resid(fit)~x2); abline (h = 0)
# plot(resid(fit)~x1+x2) # you can also use this, but then you wouldn't be able to use the abline on any plot but the last one

ในการเพิ่มบรรทัด 0-1 (บรรทัดนี้เรียกว่าเป็นภาษาอังกฤษได้อย่างไร!) ใน qqplot เพื่อดูว่า qqline เบี่ยงเบนไปจากเท่าไหร่

plot(fit, which = 2); abline(0,1, col = "green")

หากต้องการพล็อต qq-plot โดยใช้ส่วนที่เหลือที่ได้รับการศึกษาจากภายนอก

# plot(fit, which = 2); abline(0,1, col = "green") # The next command is just like this one
qqnorm(rstandard(fit), ylim = c(-2.2,4.2)); qqline(rstudent(fit), lty = 2) ;abline(0,1, col = "green")
qqnorm(rstudent(fit), ylim = c(-2.2,4.2)); qqline(rstudent(fit), lty = 2) ;abline(0,1, col = "green")
# We can note how the "bad" points are more extreme when using the rstudent

ฉันถามคำถามหลักสำหรับวัตถุ lmer นี้: stats.stackexchange.com/questions/17785/และฉันหวังว่าจะได้รับคำตอบเพิ่มเติม
Michael Bishop

คำตอบ:


17

แพคเกจcarมีฟังก์ชั่นที่มีประโยชน์มากมายสำหรับแปลงวินิจฉัยของโมเดลเชิงเส้นและเชิงเส้นทั่วไป เมื่อเทียบกับแผนการของวานิลลา R มักจะปรับปรุงด้วยข้อมูลเพิ่มเติม ฉันขอแนะนำให้คุณลองexample("<function>")ใช้ฟังก์ชั่นต่อไปนี้เพื่อดูว่าพล็อตหน้าตาเป็นอย่างไร แปลงทั้งหมดมีการอธิบายรายละเอียดในบทที่ 6 ของ Fox & Weisberg 2554. คู่หูอาร์เพื่อการถดถอยประยุกต์ ฉบับที่ 2

  • residualPlots() แผนการเพียร์สันที่เหลือต่อการทำนายแต่ละครั้ง (scatterplots สำหรับตัวแปรตัวเลขรวมถึง Lowess fit, boxplots สำหรับปัจจัย)
  • marginalModelPlots() แสดง scatterplots ของตัวแปรการตอบสนองกับตัวทำนายตัวเลขแต่ละตัวรวมถึง Lowess fit
  • avPlots() แสดงพล็อตการถดถอยบางส่วน: สำหรับตัวทำนายแต่ละตัวนี่คือ scatterplot ของ a) ส่วนที่เหลือจากการถดถอยของตัวแปรตอบกลับบนตัวทำนายอื่น ๆ ทั้งหมดเทียบกับ b) ค่าส่วนที่เหลือจากการถดถอยของตัวทำนายกับตัวทำนายอื่น ๆ ทั้งหมด
  • qqPlot() สำหรับพล็อตแบบควอนตัลแบบควอไทล์ซึ่งรวมถึงซองจดหมายความเชื่อมั่น
  • influenceIndexPlot() แสดงแต่ละค่าสำหรับระยะทางของ Cook ค่าหมวกค่า p สำหรับการทดสอบนอกและเศษที่เหลือของนักเรียนในสไปค์พล็อตเทียบกับดัชนีการสังเกต
  • influencePlot()ให้พล็อตฟองของเศษซากนักเรียนที่มีค่าหมวกกับขนาดของฟองที่สอดคล้องกับระยะทางของ Cook, ดูdfbetaPlots()และleveragePlots()
  • boxCox()แสดงโปรไฟล์ของบันทึกความน่าจะเป็นสำหรับพารามิเตอร์การแปลงในการแปลงพลังงานแบบ Box-Coxλ
  • crPlots() ใช้สำหรับคอมโพเนนต์ + พล็อตส่วนที่เหลือซึ่งเป็นรูปแบบ CERES (รวมความคาดหวังตามเงื่อนไขและค่าตอบแทน) โดย ceresPlots()
  • spreadLevelPlot() ใช้สำหรับประเมินความแปรปรวนของข้อผิดพลาดแบบไม่คงที่และแสดงค่าคงที่ของนักเรียนที่แน่นอนกับค่าที่ติดตั้ง
  • scatterplot() ให้ scatterplots ที่ได้รับการปรับปรุงให้ดียิ่งขึ้นโดยไม่รวมถึง boxplots ตามแนวแกนจุดไข่ปลาที่มีความเชื่อมั่นสำหรับการกระจายตัวแบบ bivariate และเส้นทำนายที่มีแถบความเชื่อมั่น
  • scatter3d()ขึ้นอยู่กับแพ็คเกจrglและการแสดงผล 3D-scatterplots รวมถึงรูปไข่ความมั่นใจลวดตาข่ายและระนาบการทำนายตรวจสอบให้แน่ใจว่าได้รันexample("scatter3d")

นอกจากนี้ให้ดูbplot()จากแพคเกจrmsสำหรับวิธีการอื่นในการอธิบายการกระจายทั่วไปของตัวแปรสามตัว


1
(+1) นั่นเป็นภาพรวมที่ดีมากซึ่งจะเป็นประโยชน์สำหรับพวกเราทุกคน!
chl

Caracal - นี่คือรายการที่ยอดเยี่ยมขอบคุณ! ถ้ามันเป็นเรื่องปกติโดยคุณผมอาจจะจบลงอีกครั้งโพสต์นี้บนบล็อกของฉัน (หลังจากที่มีคนมากขึ้นจะอาจจะเพิ่มความคิดเห็นของพวกเขา)
Tal Galili

@ TalGalili แน่นอนว่าไม่เป็นไรโดยฉัน
caracal

4
คุณสามารถดูตัวอย่างของสิ่งเหล่านี้ได้ที่นี่: statmethods.net/stats/rdiagnostics.html
Michael Bishop

Caracal - ขอบคุณอีกครั้ง :) ไมเคิล - นั่นคือลิงค์ที่ดี หากคุณต้องการที่จะเพิ่มมันเป็นคำตอบ (และอาจคัดลอกวางบางส่วนของแผนการที่เกี่ยวข้องที่ไม่ได้แสดงในคำตอบ caracal) - ฉันยินดีที่จะลงคะแนนมัน ...
Tal Galili

7

คำตอบนี้มุ่งเน้นไปที่สิ่งที่มีอยู่ใน base R แทนที่จะเป็นแพ็คเกจภายนอกแม้ว่าฉันจะยอมรับว่าแพ็คเกจของ Fox นั้นคุ้มค่าที่จะนำมาใช้

ฟังก์ชั่นinfluence()(หรือเสื้อคลุมของมันinfluence.measures()) ส่งคืนส่วนใหญ่ของสิ่งที่เราต้องการสำหรับการวินิจฉัยรูปแบบรวมถึงสถิติ jacknifed ตามที่ระบุใน Chambers และ Hastie ของสถิติในรุ่น S (วัดส์และบรูคส์, 1992) summary.lm()ก็สามารถนำมาใช้ในการรวมกันไป หนึ่งในตัวอย่างที่ให้ไว้ในสิ่งที่เรียกว่า "สมุดปกขาว" (หน้า 130-131) อนุญาตให้คำนวณค่ามาตรฐาน (ค่าคงที่ที่มีความแปรปรวนเท่ากัน) และแบบรายได้ (เหมือนกับค่าประมาณที่ต่างกันสำหรับ SE) DFBETAS (เปลี่ยน ค่าสัมประสิทธิ์การปรับขนาดโดย SE สำหรับค่าสัมประสิทธิ์การถดถอย) DFFIT (เปลี่ยนค่าติดตั้งเมื่อการสังเกตถูกทิ้ง) และมาตรการ DFFITS (เดียวกันกับความแปรปรวนของหน่วย) โดยไม่ยาก

ตามตัวอย่างของคุณและกำหนดวัตถุต่อไปนี้:

lms <- summary(fit)
lmi <- influence(fit)
e <- residuals(fit)
s <- lms$sigma
xxi <- diag(lms$cov.unscaled)
si <- lmi$sigma
h <- lmi$hat
bi <- coef(fit) - coef(lmi)

เราสามารถคำนวณปริมาณข้างต้นดังต่อไปนี้:

std. residuals    e / (s * (1-h)^.5
stud. residuals   e / (si * (1-h)^.5
dfbetas           bi / (si %o% xxi^.5 
dffit             h * e / (1-h)
dffits            h^.5 * e / (si * (1-h))

(นี่คือตารางที่ 4.1 , p. 131. )

Chambers and Hastie ให้รหัส S / R ต่อไปนี้สำหรับการคำนวณ DFBETAS:

dfbetas <- function(fit, lms = summary(fit), lmi = lm.influence(fit)) {
  xxi <- diag(lms$cov.unscaled)
  si <- lmi$sigma
  bi <- coef(fit) - coef(lmi)
  bi / (si %o% xxi^0.5)
}

ทำไมฉันถึงพูดถึงวิธีการที่ เพราะก่อนอื่นฉันพบว่าสิ่งนี้น่าสนใจจากมุมมองการสอน (นั่นคือสิ่งที่ฉันใช้เมื่อสอนหลักสูตรสถิติเบื้องต้น) เนื่องจากมันช่วยให้สามารถอธิบายสิ่งที่สามารถคำนวณได้จากผลลัพธ์ของโมเดลเชิงเส้นที่พอดีใน R (แต่เหมือนกัน ใช้กับแพ็คเกจทางสถิติอื่น ๆ ) ประการที่สองเนื่องจากปริมาณข้างต้นจะถูกส่งคืนเป็นเวกเตอร์หรือเมทริกซ์ธรรมดาใน R นั่นก็หมายความว่าเราสามารถเลือกอุปกรณ์กราฟิกที่เราต้องการ --- ขัดเงาหรือ ggplot --- เพื่อแสดงสถิติเหล่านั้นหรือใช้เพื่อปรับปรุงประสิทธิภาพที่มีอยู่ พล็อต (เช่นไฮไลต์ค่า DFFITS ในสแกตเตอร์แปลงโดยเปลี่ยนขนาดพอยต์cex)


คำตอบที่ให้ข้อมูลและมีประโยชน์มาก การมุ่งเน้นที่ R ไม่ได้เบี่ยงเบนความสนใจไปจากค่าจริง ๆ ตั้งแต่คุณบันทึกตรรกะทางสถิติไว้
DWIN
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.