2016-05-31 26 views
6

tôi đã âm mưu nàyggplot2: thêm p-giá trị cốt truyện

enter image description here

Sử dụng mã dưới đây

library(dplyr) 
library(ggplot2) 
library(ggpmisc) 

df <- diamonds %>% 
    dplyr::filter(cut%in%c("Fair","Ideal")) %>% 
    dplyr::filter(clarity%in%c("I1" , "SI2" , "SI1" , "VS2" , "VS1", "VVS2")) %>% 
    dplyr::mutate(new_price = ifelse(cut == "Fair", 
            price* 0.5, 
            price * 1.1)) 

formula <- y ~ x  
ggplot(df, aes(x= new_price, y= carat, color = cut)) + 
    geom_point(alpha = 0.3) + 
    facet_wrap(~clarity, scales = "free_y") + 
    geom_smooth(method = "lm", formula = formula, se = F) + 
    stat_poly_eq(aes(label = paste(..rr.label..)), 
       label.x.npc = "right", label.y.npc = 0.15, 
       formula = formula, parse = TRUE, size = 3) 

Ngoài R2, tôi muốn thêm p-giá trị vào các khía cạnh là tốt. Tôi có thể làm điều này bằng tay thông qua chạy hồi quy đầu tiên sau đó nhận p-giá trị và sử dụng geom_text() để thêm các giá trị p này similar to the answer of this question.

Có cách nào nhanh hơn hoặc tự động để làm điều đó không? ví dụ. tương tự như cách giá trị R2 đã được thêm vào.

Cập nhật

Các giá trị p Tôi đang nói về là dốc p-giá trị. Các xu hướng được coi là có ý nghĩa thống kê cao khi p < 0,005.

+0

Isnt rằng một bản sao của [câu hỏi này] (http://stackoverflow.com/questions/26564434/automaticly-add-p-values-to-facet -plot? lq = 1). Về cơ bản nó cho bạn biết sử dụng 'summaryize()' –

+0

Vui lòng xem [answer] (http://stackoverflow.com/a/35140066/3817004) để [ggplot2: Thêm phương trình hồi quy dòng và R2 trên đồ thị] (http: //stackoverflow.com/q/7549694/3817004) bởi tác giả của gói 'ggpmisc' để biết thêm chi tiết hoặc liên hệ với tác giả. – Uwe

+0

Bạn đã xem 'stat_fit_glance' chưa? nguồn: https://cran.r-project.org/web/packages/ggpmisc/vignettes/examples.html – bVa

Trả lời

11

Sử dụng stat_fit_glance là một phần của gói ggpmisc trong R. Gói này là phần mở rộng của ggplot2 để nó hoạt động tốt với nó.

ggplot(df, aes(x= new_price, y= carat, color = cut)) + 
     geom_point(alpha = 0.3) + 
     facet_wrap(~clarity, scales = "free_y") + 
     geom_smooth(method = "lm", formula = formula, se = F) + 
     stat_poly_eq(aes(label = paste(..rr.label..)), 
     label.x.npc = "right", label.y.npc = 0.15, 
     formula = formula, parse = TRUE, size = 3)+ 
     stat_fit_glance(method = 'lm', 
         method.args = list(formula = formula), 
         geom = 'text', 
         aes(label = paste("P-value = ", signif(..p.value.., digits = 4), sep = "")), 
     label.x.npc = 'right', label.y.npc = 0.35, size = 3) 

stat_fit_glance về cơ bản phải mất bất cứ điều gì đi qua lm() trong R và cho phép nó xử lý và in sử dụng ggplot2. Trang web này có tóm tắt một số chức năng như stat_fit_glance: http://rpackages.ianhowson.com/cran/ggpmisc/. Tôi cũng tin rằng điều này cho giá trị p của mô hình, chứ không phải giá trị p dốc (nói chung), điều này sẽ khác với hồi quy tuyến tính nhiều. Đối với hồi quy tuyến tính đơn giản, chúng nên giống nhau.

Dưới đây là cốt truyện:

enter image description here

+0

Rất cám ơn vì đã dành thời gian của bạn và giúp đỡ. Trong phân tích của tôi, giá trị p dốc là khác với giá trị p của mô hình. – aelwan

+0

FYI có lỗi đánh máy trong tên gói của bạn. Nó phải là 'ggpmisc', không phải' ggmisc'. Chúc mừng :) –

Các vấn đề liên quan