2016-05-31 20 views
6

ho avuto questa tramaggplot2: aggiungere valori di p per la trama

enter image description here

usando il codice seguente

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) 

Oltre a R2, voglio aggiungere p-value al sfaccettature pure. Posso farlo manualmente eseguendo la regressione prima di ottenere i p-value e usando geom_text() per aggiungere questi p-valori similar to the answer of this question.

Esiste un modo più rapido o automatico per farlo? per esempio. simile al modo in cui sono stati aggiunti i valori R2.

Aggiornamento

Il p-value di cui sto parlando è la pista p-value. Le tendenze sono considerate statisticamente significative quando p < 0,005.

+0

Isnt che un duplicato di [questa domanda] (http://stackoverflow.com/questions/26564434/automaticly-add-p-values-to-facet -plot? lq = 1). In pratica ti dice di usare 'riepiloga()' –

+0

Per favore, vedi la [risposta] (http://stackoverflow.com/a/35140066/3817004) a [ggplot2: Aggiunta dell'equazione della linea di regressione e R2 sul grafico] (http: //stackoverflow.com/q/7549694/3817004) dall'autore del pacchetto 'ggpmisc' per maggiori dettagli o contattare l'autore. – Uwe

+0

Hai dato un'occhiata a 'stat_fit_glance'? fonte: https://cran.r-project.org/web/packages/ggpmisc/vignettes/examples.html – bVa

risposta

11

Utilizzare stat_fit_glance che fa parte del pacchetto ggpmisc in R. Questo pacchetto è un'estensione di ggplot2 quindi funziona bene con esso.

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 assume sostanzialmente nulla attraversato lm() in R e gli permette di elaborati e stampati usando ggplot2. Questo sito Web ha il riepilogo di alcune delle funzioni come stat_fit_glance: http://rpackages.ianhowson.com/cran/ggpmisc/. Inoltre, credo che ciò dia al valore p del modello, non al valore p della pendenza (in generale), che sarebbe diverso per la regressione lineare multipla. Per una regressione lineare semplice dovrebbero essere uguali.

Ecco la trama:

enter image description here

+0

Molte grazie per il tuo tempo e aiuto. Nella mia analisi, il valore p della pendenza è diverso dal valore p del modello. – aelwan

+0

FYI c'è un errore di battitura nel nome del pacchetto. Dovrebbe essere 'ggpmisc', non' ggmisc'. Saluti :) –

Problemi correlati