如何在MESS软件包中为auc()函数设置细分以防止收到错误消息?

时间:2019-03-25 14:15:09

标签: r auc

我有几个钙浓度的时间序列数据(野生型(WT)与敲除(KO))。特别是,我为每个样品得到2个峰,并使用第二个峰校准第一个峰,为此,我需要两个峰的AUC。 我的目标是将样条函数应用于时间序列数据并计算AUC。

到目前为止,我已使用MESS包和auc()函数并设置了type=spline

时间从0到1801204毫秒以毫秒为单位

df <- data

df
# A tibble: 551 x 7
    Time         KO_1     WT1           KO_2    WT2           KO_3    WT3

 1 29800            87      80            94      99           102      99
 2 30000            77      91            89      89            80     104
 3 31487           264     334           261     147           330     257
 4 31687           352     294           349     176           242     356
 5 31887           341     333           359     260           303     353
 6 32087           349     436           346     250           280     334
 7 32287           328     373           383     321           287     443
 8 32487           382     484           376     323           270     416
 9 32687           437     495           295     317           300     458
10 32887           351     542           387     378           312     422
# ... with 541 more rows


library(MESS)

auc(df$Time, df$WT1, from=min(df$Time, na.rm = TRUE), 
    to = max(df$Time, na.rm = TRUE) ,type = 'spline')

我的预期结果是我得到了WT1的AUC值。但我总是收到错误消息:

  

integration中的错误(myfunction,lower = from,upper = to):最大   达到的细分数量

1 个答案:

答案 0 :(得分:1)

错误消息来自integrate中使用的函数MESS::auc

更确切地说,它来自参数subdivisions(最大子间隔数),默认情况下将其设置为100。但是,在您的情况下,较高的值可能更有意义。

一种快速且简单的修复(但不是非常可持续的方法!)是,将auc函数复制并粘贴到R脚本中,使其适应您的需求(见下文),然后在使用之前先将其来源。

这是它的工作方式:

  1. 将auc函数复制+粘贴到R脚本中,并将其另存为mess_auc_adapted.R
  2. 将该功能分配为aucauc <- function...)。
  3. 在auc函数中,更改最后一位:

res <- integrate(myfunction, lower = from, upper = to)$value

成为

res <- integrate(myfunction, lower = from, upper = to, ...)$value

  1. 然后按以下方式使用auc

source("mess_auc_adapted.R")

auc(x = df$Time, y = df$WT1, from=min(df$Time, na.rm = TRUE), to = max(df$Time, na.rm = TRUE) ,type = 'spline', subdivisions = WHATEVER_NUMBER_THAT_MAKES_SENSE)

更好的解决方案是与维护人员联系,告诉他们您的问题以及可能的解决方案。只需在此处打开一个问题:https://github.com/ekstroem/MESS/issues。这样可以直接解决问题。