It is a follow-up question. When I run the code given below, I get a plot with two R2 and p-value but p-value = 0. It is possibly due to very small p-value. I tried increasing no. of digits to 20 (here signif(..p.value.., digits = 4)
) but it did not work. I would rather prefer to mention exact p-value or use stars e.g., if (p<0.002) star='**' else if (p>=0.002&p<0.05) star='*' else star=''
. In addition, I would like to have r values listed in the plot. Have a look and please let me know which part needs to be amended. Looking forward!
UPDATE
Answer codes by @eipi10 for adding p-value work, but still seeking answers on adding correlation coefficient (r) in the ggplots.
Code:
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 - 1
p <- ggplot(df, aes(x,y, color=factor(cut)))
p <- p + stat_smooth(method = "lm", formula = y ~ x-1, size = 1, level=0.95)
p <- p + geom_point(alpha = 0.3)
p <- p + 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)
print(p)