Add p-value and R2 ggplot [follow-up]

匿名 (未验证) 提交于 2019-12-03 01:27:01

问题:

It is a follow-up question. When I run the code given below, I get warning message that I think is due to no facets requirement in my code while the source code mentioned in link included facets. Have a look and please let me know which part needs to be amended. Looking forward!

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))   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) 

Warning messages:

1: Computation failed in stat_poly_eq(): object of type 'closure' is not subsettable

2: Computation failed in stat_fit_glance(): object of type 'closure' is not subsettable

回答1:

Short answer: You need to add

formula <- y ~ x 

(or whatever you define your formula to be) before you call ggplot (i.e. before the line that reads p <- ggplot(...).


A "closure" is a type of function in R. So the warning message "object of type 'closure' is not subsettable" means that whatever code you were running was not expecting an object that's a function.

When we look closely at your code, we see formula = formula in your call to stat_poly_eq and stat_fit_glance. Note that formula is a function in R. If you don't define a formula object separately, R will take you to mean that you are referring to the formula function. stat_poly_eq() and stat_fit_glance() are complaining because they expect the formula argument in the function to be a formula-class object, not a function.

More generally, you shouldn't name your formulas "formula" because it creates confusion. You could use e.g. "model" instead.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!