绘制 dr4pl 剂量反应曲线,以及如何将它们与 ggplot2 集成?

2024-04-16

我正在尝试建立一种高通量方法来绘制大型筛选实验的剂量反应曲线。 Prism 显然有最简单的方法可以很好地绘制剂量反应曲线,但我无法复制和粘贴这么多数据。

自从 CRAN 被移除后drc, 包dr4pl似乎是可行的方法,但目前可用的指导还很少。

#make data frame 
dose <- c("0.078125","0.156250","0.312500","0.625000","1.250000","2.500000","5.000000","10.000000","20.000000")
POC<-c("1.05637425", "0.87380081", "0.79171200", "0.83166848", "0.77361290", "0.35199288", "0.19404609",  "0.09079221", "0.09850658")
data<-data.frame(dose, POC)


#use the dr4pl pakcage to calculate curve and IC50 etc
model<-dr4pl(POC~dose, data)

summary.model <- summary(model)

summary.model$coefficients

#plot this
plot(dr4pl(POC~dose, data=data))

上面将使用 dr4pl 生成我需要的曲线类型,并得到 IC50。但我如何在一张图上绘制多个数据集/曲线?

理想情况下,我宁愿使用 ggplot2 绘制数据:plot+geom_point()并使用 dr4pl 摘要作为剂量反应线添加+stat_smooth()模型,这是否有意义?但我不知道该怎么做。

任何帮助,将不胜感激


我可以走大部分路,但不能走完全程。主要步骤是写一个predict()方法用于dr4pl对象:

predict.dr4pl <- function (object, newdata=NULL, se.fit=FALSE, level, interval) {
    xseq <- if (is.null(newdata)) object$data$Dose else newdata$x
    pred <- MeanResponse(xseq, object$parameters)
    if (!se.fit) {
        return(pred)
    }
    qq <- qnorm((1+level)/2)
    se <- sapply(xseq,
                 function(x) car::deltaMethod(object, 
    "UpperLimit + (LowerLimit - UpperLimit)/(1 + (x/IC50)^Slope)")[["Estimate"]])
    return(list(fit=data.frame(fit=pred,lwr=pred-qq*se,
                                upr=pred+qq*se), se.fit=se))
}

我提供了一种通过 delta 方法计算置信区间的稍微有点古怪的方法 - 这可能不太可靠(引导会更好......)

它对您的数据工作正常(有点)(将名称更改为dd因为有时给数据命名很冒险data (fortunes::fortune("dog"))).

dd <- data.frame(dose = c(0.078125,0.156250,0.312500,0.625000,1.25,
                          2.50,5.0,10.0,20.0),
                 POC = c(1.05637425, 0.87380081, 0.79171200,
                         0.83166848, 0.77361290, 0.35199288,
                         0.19404609,  0.09079221, 0.09850658))

library(dr4pl)
ggplot(dd, aes(dose,POC)) + geom_point() +
     geom_smooth(method="dr4pl",se=TRUE) + coord_trans(x="log10")
  • 置信区间很糟糕,将其关闭se=FALSE
  • dr4pl默认情况下,将 x 轴置于 log10 刻度上,但标准scale_x_log10()搞砸了,因为它已被应用before拟合和预测,所以我用coord_trans(x="log10")反而。
  • 然而,coord_trans()如果轴处于非常宽的对数刻度上,则效果不太好 - 我尝试了上面的示例sample_data_1数据包中的数据,但它不起作用。

但恐怕我现在已经在这上面花了足够的时间了。

使用该方法会更加稳健predict上面的方法分别生成您想要的值,在您想要的范围内,然后使用geom_line() + geom_ribbon()将信息添加到绘图中......

如果您愿意先拟合模型(在外部geom_smooth)你可以这样做(这是使用sample_data_1 from dr4pl包 - 它来自第一个示例?dr4pl)

model2 <- dr4pl(dose = sample_data_1$Dose,
           response = sample_data_1$Response)

ggplot(sample_data_1, aes(Dose,Response)) + geom_point() +
    stat_function(fun=function(x) predict(model2,newdata=data.frame(x=x))) +
    scale_x_log10()

它对 x 轴缩放/取消缩放的顺序不太敏感。


改进但缓慢的引导 CI:

predictdf.dr4pl <- function (model, xseq, se, level, nboot=200) {
    pred <- MeanResponse(xseq, model$parameters)
    if (!se) {
        return(base::data.frame(x=xseq, y=pred))
    }
    ## bootstrap residuals
    pred0 <- MeanResponse(model$data$Dose, model$parameters)
    res <- pred0-model$data$Response
    bootres <- matrix(nrow=length(xseq), ncol=nboot)
    pb <- txtProgressBar(max=nboot,style=3)
    for (i in seq(nboot)) {
        setTxtProgressBar(pb,i)
        mboot <- dr4pl(model$data$Dose,
                       pred0 + sample(res, size=length(pred0),
                                      replace=TRUE))
        bootres[,i] <- MeanResponse(xseq, mboot$parameters)
    }
    fit <- data.frame(x = xseq,
                      y=pred,
                      ymin=apply(bootres,1,quantile,(1-level)/2),
                      ymax=apply(bootres,1,quantile,(1+level)/2))
    return(fit)
}

print(ggplot(dd, aes(dose,POC))
    + geom_point()
    + geom_smooth(method="dr4pl",se=TRUE) + coord_trans(x="log10")
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

绘制 dr4pl 剂量反应曲线,以及如何将它们与 ggplot2 集成? 的相关文章

随机推荐

  • 如何在 R 数据库中将相似的字符串分组在一起

    我的小标题只有 1 列 称为 标题 gt dat A tibble 13 x 1 title
  • 在 ITextSharp 免费许可证下动态创建 .pdf

    在 ASP NET C 网站 服务器中 我使用名为 ITextSharp 的 pdf 创建器库来创建包含有关产品的文本和一些图像的 pdf 像往常一样 老板不想购买许可证 我知道如果我使用 ITextSharp 版本 4 1 6 或更低版本
  • BlazeDS 中的多个频道

    我正在尝试设置一个场景 其中 Flex 应用程序将能够使用在实现 BlazeDS 的两个不同 Web 应用程序中编写的资源 我最初尝试这样做在我的 mxml 代码中指定通道集 https stackoverflow com question
  • 无法在 Visual Studio 中将 Ajax Minifier 作为构建后运行

    我已经设置了构建后配置 如所示http www asp net ajaxlibrary ajaxminquickstart ashx http www asp net ajaxlibrary ajaxminquickstart ashx 但
  • Oracle SQL 查询中的表需要排序逻辑

    我有一个订单ORDER 1从MFG 1并前往PORT B 订单通过不同的地点移动 并在某些地点之间进行处理和维护 在此示例中 它分为 7 批货物 如果货物在同一地点停留数天 则运输模式为 处理 目标数据 https i stack imgu
  • 无法使用 Python 连接器和外部浏览器身份验证器连接到 Snowflake

    我正在尝试使用 Python 连接器和 SSO 连接到 Snowflake 我希望连接器打开浏览器来验证用户身份 但这不起作用 h Code bin gt python conn py Initiating login request wi
  • 根据匹配条件对 SQL 记录进行排序

    我有这样的疑问 SELECT FROM table WHERE key LIKE 1 2 3 OR key LIKE 1 2 OR key LIKE 1 是否可以根据首先匹配的条件对该查询返回的记录进行排序 我想获取所有匹配的记录key L
  • 是否可以“提示”字典键?

    In PyCharm 代码完成 https www jetbrains com help pycharm auto completing code html gt 基本完成 gt 调用基本完成 gt 字典 我发现 如果您将字典硬编码为某些值
  • 如何在 AngularJS 中使用按键事件?

    我想捕获下面文本框中的回车键按下事件 为了更清楚地说明我正在使用ng repeat填充 tbody 这是 HTML td td
  • decltype(some_vector)::size_type 不能用作模板参数

    以下类无法编译 template
  • 是否可以配置 Eclipse 以突出显示 XML 中的 Java 语法?

    我正在为一个产品进行编程 该产品包含嵌入较大 XML 文件中的 Java 实际上是 BeanShell 代码片段 这些是在运行时动态执行的 整个文档的各个级别可以有多个这些代码标签
  • 基于 C# .NET 文档的应用程序操作图

    我想开发一个新的应用程序 用户可以在其中创建描述流程的图表 我认为在这种情况下 基于文档的应用程序是我唯一的选择 我熟悉C net C MFC 和J2EE 根据您的经验 实现这一目标的最佳方法是什么 我应该关注哪个平台 图表必须由方框和箭头
  • java 文件名中带有美元符号和数字 .class (name$1.class) 是什么意思? [复制]

    这个问题在这里已经有答案了 当我编译我的java Enum Day时 它生成他的Day class文件和8个Day class文件 所以我想知道为什么编译器生成8个 class而不是7个 因为我有7个枚举常量 但是8 个覆盖注释 我知道 D
  • Google Play 定时发布

    在 Google Play 上使用 定时发布 更新应用程序时 上传 APK 后 是否应该选择 立即发布到生产环境 选项 这会将新的 APK 提交到生产环境吗 还是 Google Play 会直接处理它并等待我点击 上线 Google 或其他
  • Laravel 5 - 如何在视图中访问存储中上传的图像?

    我已将用户的头像上传到 Laravel 存储中 我如何访问它们并将它们呈现在视图中 服务器将所有请求指向 public 那么如果他们在的话我该如何向他们展示 storage folder The best方法是创建一个符号链接就像 Slat
  • bin目录和PATH

    我是编程初学者 有人可以解释一下 用简单的话 程序的 bin 目录中有什么吗 这是什么PATHwindows的环境变量 它是如何工作的 请不要以为我不会使用Google 我只是想更清楚地理解它 通常将程序的所有二进制文件放在 bin 目录中
  • CakePHP 总是让我退出

    最近我制作了三个蛋糕应用程序 这三个应用程序都有这个问题 配置大部分是库存的 我使用它作为会话选项 Configure write Session array defaults gt php cookie gt test 经过大量谷歌搜索后
  • 通过在 datagridviewcolum 中指定 DefaultCellStyle.Format 值来显示百分比

    With datagridview Columns PricePerUnit ValueType Type GetType System Decimal DefaultCellStyle Format C End With 数据表绑定到 d
  • 从数据库中检索图像

    我正在开发一个显示员工列表的项目 此处将显示该员工的信息和照片 我的项目现在可以在列表框中显示员工列表 当我双击员工时 他 她的个人资料将显示在文本框中 我的问题是我无法让他们的照片显示在picturebox 我已经将他们的照片以及他们的
  • 绘制 dr4pl 剂量反应曲线,以及如何将它们与 ggplot2 集成?

    我正在尝试建立一种高通量方法来绘制大型筛选实验的剂量反应曲线 Prism 显然有最简单的方法可以很好地绘制剂量反应曲线 但我无法复制和粘贴这么多数据 自从 CRAN 被移除后drc 包dr4pl似乎是可行的方法 但目前可用的指导还很少 ma