r - 截止值以上的累积曲线下面积
问题描述
我是一名非计算机/数学学生,对 R 非常陌生,需要一些帮助。我提供了一个虚拟数据集和示例来说明我的问题。
注:AUC = 曲线下面积;ICP =颅内压;cumAUC = 累积 AUC;
综上所述,任何大于 20 的 ICP 值都不是临床理想的。计算这种生理损伤的方法是通过称为 ICP-times-Time 负担的度量,它可以由 y-cutoff 20 以上的 ICP-Time 曲线的 AUC 表示。
因此,我想计算 ICP 时间曲线在 ICP = 20 的截止值之上的累积 AUC。但是,我的代码没有给我想要的输出,因为理想情况下,cumAUC 应该在 ICP 值 < 20 时保持不变并且不会增加。这是我创建的虚拟数据集和代码:
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)))
你们能否指出我的代码中任何可能的错误,或者任何替代建议都会很棒!:) 非常感谢你的帮助; 非常感激!
解决方案
推荐阅读
- haskell - 自然数的初始代数
- android - Kotlin:检查多个布尔函数的惯用方法
- python - Python ctypes dll调用
- jenkins - 当这两个文件在不同的作业中时,如何将参数从 Jenkins 文件传递到 Groovy 脚本文件
- javascript - 无法从 vue 项目中删除依赖项
- java - 无法在 Google Fit Api 中累积过去一周的心率数据
- python - 在python中使用json中的符号
- testing - 当页面对象中声明的断言在 TestCafe 的同一测试中被调用两次时,DOM 快照警告
- rest - 谷歌云存储与谷歌云存储 JSON API
- c# - 局部变量未在 C# 中初始化