Các phần mở rộng có thể cho các ô chẩn đoán mặc định cho lm (nói chung là R và nói chung)?


11

Tôi bắt đầu đào một chút vào hàm plot.lm , hàm này cung cấp sáu ô cho lm, chúng là:

  1. một lô của phần dư chống lại các giá trị được trang bị
  2. một biểu đồ tỷ lệ vị trí của sqrt (| phần dư |) so với các giá trị được trang bị
  3. một âm mưu QQ bình thường, một âm mưu về khoảng cách của Cook so với các nhãn hàng
  4. một âm mưu của phần dư chống lại đòn bẩy
  5. một âm mưu về khoảng cách của Cook chống lại đòn bẩy / (1 đòn bẩy)

Và tôi đang tự hỏi những phần mở rộng phổ biến / hữu ích nào khác của các ô hiện tại tồn tại cho các mô hình tuyến tính và làm thế nào chúng có thể được thực hiện trong R? (liên kết đến các bài viết của gói cũng được hoan nghênh)

Vì vậy, hàm boxcox (từ {MASS}) là một ví dụ về một biểu đồ chẩn đoán hữu ích khác (và câu trả lời như vậy sẽ rất tuyệt), tuy nhiên, tôi tò mò hơn về các biến thể / phần mở rộng trên các lô chẩn đoán mặc định hiện có cho lm trong R (mặc dù nói chung nhận xét khác về chủ đề luôn được hoan nghênh).

Dưới đây là một số ví dụ đơn giản về những gì tôi muốn nói:

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

Để vẽ các phần dư so với từng tiềm năng 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

Để thêm dòng 0-1 (dòng này được gọi bằng tiếng Anh như thế nào?!) Vào qqplot để xem qqline lệch khỏi nó bao nhiêu

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

Để vẽ đồ thị qq bằng cách sử dụng phần dư sinh viên bên ngoài

# 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

Về cơ bản, tôi đã hỏi câu hỏi này cho các đối tượng nhỏ hơn: stats.stackexchange.com/questions/17785/iêu và tôi hy vọng câu trả lời bổ sung sẽ được đưa ra.
Michael Giám mục

Câu trả lời:


17

Gói carcó khá nhiều chức năng hữu ích cho các sơ đồ chẩn đoán của mô hình tuyến tính tuyến tính và tổng quát. So với các lô vanilla R, chúng thường được tăng cường với thông tin bổ sung. Tôi khuyên bạn nên thử example("<function>")các chức năng sau để xem các ô trông như thế nào. Tất cả các âm mưu được mô tả chi tiết trong chương 6 của Fox & Weisberg. 2011. Một đồng hành R với hồi quy ứng dụng. Tái bản lần 2

  • residualPlots() vẽ sơ đồ Pearson dư đối với từng yếu tố dự đoán (biểu đồ phân tán cho các biến số bao gồm mức độ phù hợp Lowess, ô vuông cho các yếu tố)
  • marginalModelPlots() hiển thị các biểu đồ phân tán của biến trả lời theo từng yếu tố dự đoán số, bao gồm mức độ phù hợp Lowess
  • avPlots() hiển thị các biểu đồ hồi quy từng phần: đối với mỗi yếu tố dự đoán, đây là biểu đồ phân tán của a) phần dư từ hồi quy của biến phản ứng trên tất cả các yếu tố dự báo khác đối với b) phần dư từ hồi quy của dự báo so với tất cả các yếu tố dự báo khác
  • qqPlot() cho một âm mưu lượng tử - lượng tử bao gồm một phong bì niềm tin
  • influenceIndexPlot() hiển thị từng giá trị cho khoảng cách của Cook, giá trị mũ, giá trị p cho kiểm tra ngoại lệ và phần dư được học sinh trong một biểu đồ tăng đột biến so với chỉ số quan sát
  • influencePlot()đưa ra một biểu đồ bong bóng của phần dư được học sinh chống lại các giá trị mũ, với kích thước của bong bóng tương ứng với khoảng cách của Cook, cũng nhìn thấy dfbetaPlots()leveragePlots()
  • boxCox()hiển thị cấu hình của khả năng đăng nhập cho tham số chuyển đổi trong biến đổi năng lượng Box-Coxλ
  • crPlots() dành cho các lô thành phần + còn lại, một biến thể trong đó là các lô CERES (Kết hợp các kỳ vọng và điều kiện có điều kiện), được cung cấp bởi ceresPlots()
  • spreadLevelPlot() là để đánh giá phương sai lỗi không cố định và hiển thị số dư được sinh viên tuyệt đối theo các giá trị được trang bị
  • scatterplot() cung cấp các biểu đồ tán xạ được tăng cường nhiều bao gồm các ô vuông dọc theo các trục, các elip độ tin cậy để phân phối bivariate và các đường dự đoán với các dải tin cậy
  • scatter3d()được dựa trên gói rglvà hiển thị các biểu đồ tán xạ 3D tương tác bao gồm các hình elip độ tin cậy lưới và mặt phẳng dự đoán, đảm bảo chạyexample("scatter3d")

Ngoài ra, hãy xem bplot()từ gói rmscho một cách tiếp cận khác để minh họa phân phối chung của ba biến.


1
(+1) Đó là một tổng quan rất tốt sẽ hữu ích cho tất cả chúng ta!
chl

Caracal - đây là một danh sách tuyệt vời, cảm ơn bạn! Nếu bạn thấy ổn, tôi có thể sẽ đăng lại bài này trên blog của mình (sau khi nhiều người hơn, có thể, thêm ý kiến ​​của họ)
Tal Galili

@TalGalili Chắc chắn, điều đó tốt với tôi.
caracal

4
Bạn có thể xem các ví dụ về một số trong số này tại đây: statmethods.net/stats/rdiagnostics.html
Michael Giám mục

Caracal - cảm ơn lần nữa :) Michael - đó là một liên kết tốt. Nếu bạn muốn thêm nó dưới dạng câu trả lời (và có thể sao chép dán một số ô có liên quan không hiển thị trên câu trả lời caracal) - Tôi sẽ vui lòng bỏ phiếu ...
Tal Galili

7

Câu trả lời này tập trung vào những gì có sẵn trong cơ sở R, thay vì các gói bên ngoài, mặc dù tôi đồng ý rằng gói của Fox đáng để áp dụng.

Hàm influence()(hoặc trình bao bọc của nó, influence.measures()) trả về hầu hết những gì chúng ta cần cho chẩn đoán mô hình, bao gồm cả số liệu thống kê được đánh dấu. Như đã nêu trong Mô hình thống kê của Chambers và Hastie ở S (Wadsworth & Brooks, 1992), nó có thể được sử dụng kết hợp với summary.lm(). Một trong những ví dụ được cung cấp trong cái gọi là "sách trắng" (trang 130-131) cho phép tính toán tiêu chuẩn hóa (phần dư có phương sai bằng nhau) và được sinh viên hóa (giống với ước tính khác nhau cho phần dư SE), DFBETAS (thay đổi trong các hệ số được đo bằng SE cho các hệ số hồi quy), DFFIT (thay đổi giá trị phù hợp khi quan sát bị giảm) và các biện pháp DFFITS (tương tự, với phương sai đơn vị) mà không gặp nhiều khó khăn.

Dựa trên ví dụ của bạn và xác định các đối tượng sau:

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)

chúng ta có thể tính các đại lượng trên như sau:

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

(Đây là Bảng 4.1 , trang 131.)

Chambers và Hastie cung cấp mã S / R sau để tính toán 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)
}

Tại sao tôi lại đề cập đến cách tiếp cận đó? Bởi vì, trước tiên, tôi thấy điều này thú vị từ góc độ sư phạm (đó là những gì tôi đang sử dụng khi giảng dạy các khóa học thống kê giới thiệu) vì nó cho phép minh họa những gì có thể được tính toán từ đầu ra của một mô hình tuyến tính được trang bị trong R (nhưng tương tự như vậy áp dụng với bất kỳ gói thống kê nào khác). Thứ hai, vì các đại lượng trên sẽ được trả về dưới dạng các vectơ hoặc ma trận đơn giản trong R, điều đó cũng có nghĩa là chúng ta có thể chọn thiết bị đồ họa mà chúng ta muốn --- mạng hoặc ggplot --- để hiển thị các thống kê đó hoặc sử dụng chúng để tăng cường số liệu hiện có âm mưu (ví dụ: làm nổi bật các giá trị DFFITS trong biểu đồ phân tán bằng cách thay đổi kích thước điểm cex).


Rất nhiều thông tin và câu trả lời hữu ích. Việc tập trung vào R không thực sự làm giảm giá trị của nó vì bạn đã ghi lại logic thống kê,
DWin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.