R thực hiện hệ số xác định từng phần


9

Có ai có đề xuất hoặc gói sẽ tính hệ số xác định một phần?

Hệ số xác định từng phần có thể được định nghĩa là phần trăm biến thể không thể giải thích được trong mô hình rút gọn, nhưng có thể được giải thích bằng các yếu tố dự đoán được chỉ định trong mô hình (er) đầy đủ. Hệ số này được sử dụng để cung cấp cái nhìn sâu sắc về việc một hoặc nhiều dự đoán bổ sung có thể hữu ích trong mô hình hồi quy được chỉ định đầy đủ hơn hay không.

Tính toán cho một phần r ^ 2 tương đối đơn giản sau khi ước tính hai mô hình của bạn và tạo các bảng ANOVA cho chúng. Tính toán cho một phần r ^ 2 là:

(SSEreduces - SSEfull) / SSEreduces

Tôi đã viết hàm tương đối đơn giản này sẽ tính toán điều này cho mô hình hồi quy tuyến tính đa biến. Tôi không quen thuộc với các cấu trúc mô hình khác trong R nơi chức năng này có thể không hoạt động tốt:

partialR2 <- function(model.full, model.reduced){
    anova.full <- anova(model.full)
    anova.reduced <- anova(model.reduced)

    sse.full <- tail(anova.full$"Sum Sq", 1)
    sse.reduced <- tail(anova.reduced$"Sum Sq", 1)

    pR2 <- (sse.reduced - sse.full) / sse.reduced
    return(pR2)

    }

Bất kỳ đề xuất hoặc mẹo về các chức năng mạnh mẽ hơn để thực hiện nhiệm vụ này và / hoặc triển khai hiệu quả hơn của mã trên sẽ được đánh giá cao.


2
Tôi đề nghị thử các mô hình khác và xem mã có hoạt động hay không. R thường đẹp, vì vậy anova sẽ trả lại những thứ tương tự cho các mô hình khác nhau. Vấn đề là với công thức ban đầu của bạn. Nó giữ cho các mô hình khác? Nếu không, thì không có lý do gì để mã hoạt động, hơn nữa mã sẽ đưa ra cảnh báo rằng nó được sử dụng cho các mô hình mà công thức không giữ.
mpiktas

Tôi không thực sự thấy câu hỏi. Bạn muốn một hàm tính R2 một phần, nhưng bạn đã có một hàm. Bạn có biết độ nhạy của gói (không có R2 một phần nhưng pcc là trường hợp cụ thể được triển khai) không?
cướp girard

@robin - Tôi xin lỗi nếu câu hỏi của tôi không rõ ràng. Tôi quan tâm đến việc tìm kiếm một gói chứa tính toán này (vì nó có thể chứa nhiều hàm hữu ích khác sẽ hữu ích) và / hoặc đề xuất về cách cải thiện chức năng tôi đã viết ở trên. Rõ ràng là không có bất kỳ kiểm tra lỗi nào và có thể không áp dụng cho tất cả các loại mô hình.
Đuổi theo

Tôi đề nghị câu hỏi này được di chuyển đến SE. Trọng tâm của câu hỏi dường như là một vấn đề thực hiện, không phải là một vấn đề thống kê.
caracal

@caracal - bất cứ điều gì bạn thấy phù hợp. Tôi biết đã có một số lượng thảo luận hợp lý về việc nên vẽ đường thẳng trên cát giữa SO và CV liên quan đến các câu hỏi liên quan đến R. Tôi cũng không có một sở thích mạnh mẽ. Công việc của tôi đã đưa tôi ra khỏi vấn đề cụ thể này cho đến cuối cùng, nhưng sẽ xem xét lại nó trong vài tuần tới để tôi có thể tự mình đưa ra một giải pháp tốt hơn. Tôi cũng ổn khi để câu hỏi mờ dần vào ether ...
Đuổi theo

Câu trả lời:


0

Chà, r ^ 2 thực sự chỉ là hiệp phương sai trên sản phẩm của phương sai, vì vậy bạn có thể làm gì đó như cov (Yfull, Ytrue) / var (Ytrue) var (Yfull) - cov (YReduces, Ytrue) / var (Ytrue) ) var (YRed) bất kể loại mô hình; kiểm tra để xác minh rằng cung cấp cho bạn câu trả lời tương tự trong trường hợp lm mặc dù.

http://www.stator-afm.com/image-files/r-squared.gif

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.