Совокупная площадь под кривой выше предельного значения - PullRequest
0 голосов
/ 29 июня 2018

Я не студент по вычислительной технике / математике, который действительно плохо знаком с R и нуждается в некоторой помощи. Я предоставил фиктивный набор данных и пример, чтобы проиллюстрировать мои проблемы.

Примечание: AUC = площадь под кривой; ICP = внутричерепное давление; cumAUC = кумулятивный AUC;

Чтобы поместить вещи в контекст, любое значение ICP> 20 не является клинически-идеальным. Методом расчета этого физиологического оскорбления является мера, известная как нагрузка ICP-время-время, которая может быть представлена ​​AUC кривой ICP-Time над y-отсечкой, равной 20.

Следовательно, я хотел бы рассчитать совокупный AUC кривой времени ICP выше порогового значения ICP = 20. Однако мои коды не дают мне желаемый результат, потому что в идеале cumAUC должен оставаться постоянным при ICP значения <20 и не будут увеличиваться. Вот фиктивный набор данных и коды, которые я создал: </p>

require(MASS) #Using the area function in MASS 
require(dplyr)
require(ggplot2)

df <- data.frame(time=seq(1,20,by=1),
                 ICP=c(7,9,15,14,16,20,25,23,26,27,18,15,10,9,7,13,22,24,26,20))

ggplot(data=df, mapping=aes(x=time,y=ICP)) + geom_line() + geom_hline(yintercept = 20)

func_test <- approxfun(df$time, df$ICP, method="linear", rule=2)

area_single <- function(x) {area(func_test,0,x)}
area_multiple <- Vectorize(area_single)

area_cutoff <- function(x, level=20){
  tmp <- area_multiple(x)-lag(area_multiple(x))-level*(x-lag(x))
  tmp_test <- tmp>0
  tmp_test <- ifelse(is.na(tmp), FALSE, tmp_test)
  out <- ifelse(tmp_test, tmp, 0)
  return(out)
}

df_auc <- df %>%
  mutate(cumAUC = cumsum(area_cutoff(time)))  

Не могли бы вы указать любую возможную ошибку в моем коде, или любые альтернативные предложения будут отличными! :) Спасибо большое за вашу помощь; очень признателен!

...