0

我对以下代码有疑问。它正确计算了drc曲线,但错误地计算了ec50,尽管它们密切相关......

    x <- c(-1, -0.114074, 0.187521, 0.363612, 0.488551, 0.585461, 0.664642, 0.730782, 0.788875, 0.840106, 0.885926, 0.92737, 0.965202, 1)
    y <- c(100, 3.978395643, 0.851717911, 0.697307565, 0.512455497, 0.512455497, 0.482273052, 0.479293487, 0.361024717, 0.355324864, 0.303120838, 0.286539832, 0.465692047, 0.358045152)
    
    mat <- cbind(x, y)
    df <- as.data.frame(mat)

      calc <- drm(
        formula = y ~ x,
        data = df,
        fct = L.4(names = c("hill", "min_value", "max_value", "ec50"))
      )
      
      plot <- ggplot(df, aes(x=x, y=y), color="black") +
        geom_point() +
        labs(x = "x", y = "y") +
        theme(
          axis.title.x = element_text(color="black", size=10),
          axis.title.y = element_text(color="black", size=10),
          axis.line.x = element_line(color = "black"),
          axis.line.y = element_line(color = "black")
        ) +
        stat_smooth(
          formula = y ~ x,
          method = "drm", color="black",
          method.args = list(fct = L.4(names = c("hill", "min_value", "max_value", "ec50"))),
          se = FALSE
           ) +
        theme(panel.background=element_rect(fill="white"))+
        ylim(0, NA) 
      
     ec50 <- ED(calc,50)
      
  print(ec50)
  print(calc)
  print(plot)

这是我得到的图表: 在此处输入图像描述

但是如果我打印函数 L.4 的参数,我会得到以下结果:

    hill:(Intercept)       6.3181 
    min_value:(Intercept)  0.3943 
    max_value:(Intercept)  111.0511  
    ec50:(Intercept)       -0.6520 

max_value:(Intercept) 显然是错误的(它必须是 100),因此 ec50 也是错误的。

我还要补充一点,对于其他数据集, min_value:(Intercept) 也是错误的(值 < 0 ...)

我找不到错误,因为从同一函数 L.4 派生的图形显示了正确的值。

非常感谢您的帮助!

4

0 回答 0