2016-05-31 24 views
6

Mam ten wykresggplot2: dodawanie wartości p do działki

enter image description here

przy użyciu kodu poniżej

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) 

Oprócz R2, chcę dodać wartości p do aspekty również. Mogę to zrobić ręcznie, uruchamiając najpierw regresję, a następnie uzyskując wartości p i używając , aby dodać te wartości p. Czy istnieje jakiś szybszy lub automatyczny sposób na zrobienie tego? na przykład podobnie do sposobu, w jaki zostały dodane wartości R2.

Aktualizacja

Wartość p mówię jest nachylenie wartość p. Trendy są uważane za wysoce istotne statystycznie, gdy są określone jako p < 0,005.

+0

Existing że duplikat [tej kwestii] (http://stackoverflow.com/questions/26564434/automaticly-add-p-values-to-facet -plot? lq = 1). Zasadniczo mówi, aby użyć 'summary()' –

+0

Proszę zobaczyć [odpowiedź] (http://stackoverflow.com/a/35140066/3817004) do [ggplot2: Dodawanie równania linii regresji i R2 na wykresie] (http: //stackoverflow.com/q/7549694/3817004) autorstwa autora pakietu 'ggpmisc' po więcej szczegółów lub skontaktuj się z autorem. – Uwe

+0

Czy spojrzałeś na 'stat_fit_glance'? źródło: https://cran.r-project.org/web/packages/ggpmisc/vignettes/examples.html – bVa

Odpowiedz

11

Użyj stat_fit_glance, który jest częścią pakietu ggpmisc w R. Ten pakiet jest rozszerzeniem ggplot2, więc działa dobrze z nim.

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 zasadniczo bierze wszystko przeszło przez lm() w R i pozwala na przetwarzanie i drukowane przy użyciu ggplot2. Ta strona internetowa zawiera listę niektórych funkcji, takich jak stat_fit_glance: http://rpackages.ianhowson.com/cran/ggpmisc/. Sądzę również, że daje to modelową wartość p, a nie wartość nachylenia p (ogólnie), która byłaby różna dla wielu regresji liniowych. Dla prostej regresji liniowej powinny być jednak takie same.

Oto wykres:

enter image description here

+0

Wielkie dzięki za poświęcony czas i pomoc. W mojej analizie nachylenie p-wartości różni się od wartości p modelu. – aelwan

+0

FYI W Twojej nazwie pakietu występuje literówka. Powinien to być 'ggpmisc', a nie' ggmisc'. Twoje zdrowie :) –