Plot of the LC50 Curve in R using ggplot2 with estimates obtained in the stan

假如想象 提交于 2021-01-28 19:34:44

问题


I'm trying to make the following graphic below in ggplot2. See that I am adjusting a logistic regression model under the Bayesian approach using the stan package.

data: https://drive.google.com/file/d/1NNA6DFYFSVkwuL92RYe58E_Z99BXl7HE/view?usp=sharing

library(dplyr)
library(rstanarm)
library(ggplot2)
dados<- read.table("dados.csv", header = T, sep=";", dec = ",")
dados$periodo <-  as.factor(dados$periodo)
dados <- dados %>% mutate(proporcao =  (dados$resposta)/60)
dados <- dados %>% mutate(logdose = log(dados$concentracao))
dados<- mutate(dados, 
               C_resposta=60-resposta)
fitstanglm24 <- stan_glm(cbind(resposta, C_resposta)~ logdose, 
                         family = binomial(link = "logit"), 
                         data = dados,
                         subset=periodo=="24h")
summary(fitstanglm24)
plot(dados$proporcao[dados$periodo=="24h"]~dados$logdose[dados$periodo=="24h"], 
     pch=16, main="Experiment Duration: 24h", col="black", lwd=3, xlim=c(-8,-1),
     ylim=c(0,1),xlab="log(Concentrations g.a.i/L)",
     ylab="Proportion of bees killed")
lines(c(-3.53,-3.53),c(0,0.50),lty=3)
lines(c(-3.53,-8),c(0.50,0.50),lty=3)
legend(-7.8,0.52,c(expression(paste(LC[50], "= -3.53"))),bty="n",cex=1.1)
points(fitstanglm24$fitted.values~dados$logdose[dados$periodo=="24h"], 
       pch=16, col="red", lwd=3)
curve(plogis(coef(fitstanglm48)[1] + coef(fitstanglm48)[2]*x),-10,-1,
      add=TRUE, col="black",lty=2)
legend("topleft",c("Real Values","Adjusted Values"), 
       col=c("black","red"),pch=16)

However, the following error appears.

ggplot(data = dados, aes(x = dados$logdose[dados$periodo=="24h"], y = (dados$proporcao[dados$periodo=="24h"]))) + 
   geom_point(size = 2, colour = "#FF4D87") +
   labs(title="Experiment Duration: 24h",
        x ="log(Concentrations g.a.i/L)", y = "Proportion of bees killed") +
   theme(
      plot.title = element_text(hjust = 0.5, size = 15),
      plot.subtitle = element_text(hjust = 0.5, size = 12),
      axis.title.x = element_text(size = 13),
      axis.title.y = element_text(size = 13)) +
   geom_smooth(method = "glm", lwd = 1.4, 
               method.args = list(family = binomial(link = "logit")), 
               aes(weight = total), colour = "#FF4D87", se = TRUE, fill = "#FFA2C1")
Erro: Aesthetics must be either length 1 or the same as the data (15): x and y
Run `rlang::last_error()` to see where the error occurred.
Além disso: Warning messages:
1: Use of `dados$logdose` is discouraged. Use `logdose` instead. 
2: Use of `dados$periodo` is discouraged. Use `periodo` instead. 
3: Use of `dados$proporcao` is discouraged. Use `proporcao` instead. 
4: Use of `dados$periodo` is discouraged. Use `periodo` instead. 

来源:https://stackoverflow.com/questions/65521648/plot-of-the-lc50-curve-in-r-using-ggplot2-with-estimates-obtained-in-the-stan

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