我有一个数据集(alldata),该数据集的时间变量为X小时( time ),对一些患有特定PID (allPID = vector )的患者有Y(值)的数值测量。在前24小时,我要计算曲线下的面积。首先,我使用了以下脚本:
AUC1 <- as.data.frame(allPID)
for(i in allPID) {
x <- alldata[alldata$PID == i & alldata$Time <= 24, "Time"]
y <- alldata[alldata$PID == i & alldata$Time <= 24, "Value"]
AUC1$AUC24trap[AUC1$allPID == i] <- AUC(x, y,
method = "trapezoid",
na.rm = TRUE)
}然而,这个脚本只为46种情况中的17种提供了一个AUC。虽然不完全确定这个脚本到底有什么问题,但解决方案似乎是先在dataframe中绑定x和y,然后只使用complete cases。
AUC2 <- as.data.frame(allPID)
for(i in allPID) {
x24 <- alldata[alldata$PID == i & alldata$Time <= 24, "Time"]
y24 <- alldata[alldata$PID == i & alldata$Time <= 24, "Value"]
df24 <- cbind(x24,y24)
df24 <- as.data.frame(df24[complete.cases(df24), ])
AUC2$AUC24[AUC2$allPID == i] <- AUC(df24$x24, df24$y24,
method = "trapezoid", na.rm = T
)
}我想,由于我使用了'complete.cases' (df24中确实没有NAs ),所以可以设置na.rm = F。但是:这提供了与我使用na.rm = T.完全不同的结果
剩下的问题是:为什么这些结果如此不同?在这种情况下,na.rm是做什么的?
希望有人能帮忙!
发布于 2021-11-23 06:44:18
这是AUC()的NA处理中的一个bug。它已在DescTools 0.99.44中得到修正。
https://stackoverflow.com/questions/69931044
复制相似问题