Làm thế nào để ggplot tính khoảng tin cậy cho hồi quy?


15

Gói âm mưu R ggplot2 có một chức năng tuyệt vời gọi là stat_smooth để vẽ đường hồi quy (hoặc đường cong) với dải tin cậy liên quan.

Tuy nhiên, tôi đang gặp khó khăn trong việc tìm ra chính xác cách tạo ra dải tin cậy này, cho mỗi lần đường hồi quy (hoặc "phương thức"). Làm thế nào tôi có thể tìm thấy thông tin này?


2
Xem phần có tiêu đề "Chi tiết" trong liên kết của bạn.
Stéphane Laurent

1
@ StéphaneLaurent: Tôi đã đọc phần đó, nhưng tôi vẫn gặp khó khăn khi kết nối các dấu chấm. Tôi sử dụng phương pháp "rlm" để khớp một dòng, khoảng tin cậy được tính như thế nào (về mặt toán học, phương trình / thuật toán nào?)? Làm thế nào tôi có thể tìm thấy thông tin đó?
static_rtti

1
Vì vậy, tôi nghĩ rằng bạn nên hỏi một câu hỏi chính xác hơn.
Stéphane Laurent

1
Tôi nghĩ rằng câu hỏi của bạn là chính xác hợp lý ... nhưng tôi nghi ngờ bạn sẽ không nhận được câu trả lời ở đây. Bạn có thể gặp may mắn hơn tại nhóm google ggplot2
russellpierce

Câu trả lời:


22

Từ Detailsphần trợ giúp

Tính toán được thực hiện bởi hàm chung dự đoán (hiện không có tài liệu) và các phương thức của nó. Đối với hầu hết các phương pháp, giới hạn tin cậy được tính bằng phương pháp dự đoán - các ngoại lệ là hoàng thổ sử dụng xấp xỉ dựa trên t và đối với glm khi khoảng tin cậy thông thường được xây dựng trên thang đo liên kết, sau đó được chuyển đổi trở lại thang đo phản hồi.

Vì vậy, dự đoán thường sẽ gọi stats::predict, lần lượt sẽ gọi predictphương thức đúng cho phương pháp làm mịn. Các chức năng khác liên quan đến stat_smooth cũng hữu ích để xem xét.

Hầu hết các chức năng phù hợp mô hình sẽ có predictphương pháp liên quan đến classmô hình. Chúng thường sẽ lấy một newdatađối tượng và một đối số se.fitsẽ biểu thị liệu các lỗi tiêu chuẩn sẽ được trang bị hay không. (xem ?predict) để biết thêm chi tiết.

se
hiển thị khoảng tin cậy xung quanh mịn? (TRUE theo mặc định, xem mức độ để kiểm soát

Điều này được truyền trực tiếp đến phương thức dự đoán để trả về các lỗi tiêu chuẩn thích hợp (phụ thuộc vào phương thức)

fullrange
sự phù hợp sẽ bao trùm toàn bộ phạm vi của cốt truyện, hoặc chỉ dữ liệu

Điều này xác định các newdatagiá trị xmà tại đó các dự đoán sẽ được đánh giá

level mức độ tin cậy để sử dụng (0,95 theo mặc định)

Chuyển trực tiếp đến phương thức dự đoán để khoảng tin cậy có thể xác định giá trị tới hạn thích hợp (ví dụ: predict.lmsử dụng qt((1 - level)/2, df)cho các lỗi tiêu chuẩn được nhân với

n số điểm để đánh giá mượt mà hơn tại

Được sử dụng cùng với fullrangeđể xác định các xgiá trị trong newdatađối tượng.

Trong một cuộc gọi đến, stat_smoothbạn có thể xác định đâu selà đối sánh một phần với se.fit(hoặc se) và sẽ xác định intervalđối số nếu cần. levelsẽ đưa ra mức độ của khoảng tin cậy (mặc định là 0,95).

Đối newdatatượng được xác định trong quá trình xử lý, tùy thuộc vào cài đặt của bạn về fullrangemột chuỗi độ dài ntrong phạm vi đầy đủ của âm mưu hoặc dữ liệu.

Trong trường hợp của bạn, sử dụng rlm, cái này sẽ sử dụng predict.rlm, được định nghĩa là

predict.rlm <- function (object, newdata = NULL, scale = NULL, ...)
{
    ## problems with using predict.lm are the scale and
    ## the QR decomp which has been done on down-weighted values.
    object$qr <- qr(sqrt(object$weights) * object$x)
        predict.lm(object, newdata = newdata, scale = object$s, ...)
}

Vì vậy, nó được gọi nội bộ predict.lmvới một tỷ lệ thích hợp của qrphân tách và scaleđối số.


... và dự đoán.rlm được ẩn bên trong MASS ... và lệnh gọi để dự đoán vượt qua các đối số mô hình, xseq, se và mức để dự đoán.rlm ... nhưng các giá trị đó đến từ đâu? Chà, tôi đoán điều đó phụ thuộc vào những gì xảy ra khi các đối số được truyền từ stat_smooth sang StatSmooth $ mới ... sau đó đến lượt nó gọi ...
russellpierce

1
Quan điểm của tôi, rằng câu trả lời của bạn là một bước đi đúng hướng, nhưng trả lời câu hỏi của OP hoàn toàn không tầm thường như trước tiên (mặc dù người ta kỳ vọng mã sẽ hành xử hợp lý ... người ta không chắc chắn trừ khi người ta theo dõi nó đầy đủ )
russellpierce

2
Người ta không mong đợi mã hành xử hợp lý, nếu predictphương thức đã được thiết lập theo cách chuẩn. Tôi đã chỉnh sửa câu trả lời của mình để giải quyết các vấn đề được nêu trong nhận xét đầu tiên của bạn.
mnel

@mnel: cảm ơn rất nhiều vì câu trả lời rất chi tiết và hữu ích này!
static_rtti
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.