使用死亡率进行生存分析,而不是跟踪个人

时间:2019-05-15 22:29:43

标签: r survival-analysis survival

我想知道是否有可能对我的数据集使用生存分析。

在3种预测变量(全部连续)的50种独特治疗中,我具有生物的死亡率百分比。我想知道这些预测因素如何影响人口的死亡时间。问题是,每杯中每2天只有一个比率。例如,A杯第2天死亡20%,第4天死亡70%,第6天死亡,依此类推。但是由于我没有跟踪人口中的个体,即(从1000到800天还活着2,第4天还有600个活着,等等。)我不知道是否可以对这样的数据集进行Cox测试。我想使用这些预测变量来模拟人口的生存时间(生存率<15%)。

在我的50种治疗中,我可以使用达到15%的阈值时间,但这在很大程度上忽略了每种独特治疗中的生存率斜率。由于我在每个杯子中​​都有生存率(与生存概率相同),因此我有潜力为每种治疗方法制作一个生存分析图,不是吗?如何根据这些治疗变量预测死亡时间?

我已经使用“ survival”和“ survminer”软件包对我观察到的每次治疗的死亡时间进行建模(coxph(Surv(timetodead,status)〜var1 + var2 + var3),但我感觉自己正在输这样可以得到很多信息,这仅是死亡率低于或超过85%的二进制输出,但是将10%死亡的所有治疗与80%死亡的所有治疗混合在一起,并不是很有用。

创建2个dfs的代码。 df1是每种疗法在10天内的存活百分比。 df2是事件发生的时间(事件生存时间小于15%)。 df2是我知道可以用于cox测试的内容,但是我觉得我应该可以对df1做更多的事情,因为我实际上可以在时间线上获得50个生存概率,而不仅仅是1个。请原谅不完善的数据集构造。

# Pt.1 create df1 - all mortality ratios over time
#======================================================
set.seed(5)
df1 <- data.frame(matrix(ncol=7,nrow=300))
colnames(df1) <- c("Trt","Day","PercentSurv","Status","V1","V2","V3")
df1$Trt <- rep(1:50, each=6)
df1$Day <- rep(c(0,2,4,6,8,10), times=50)
for(i in df1$Trt){
  df1$PercentSurv[df1$Trt %in% c(i)] <- 
c("100",sort(sample(1:100,size=5),decreasing=TRUE))
  df1$V1[df1$Trt %in% c(i)] <- sample(12:30,size=1)
  df1$V2[df1$Trt %in% c(i)] <- sample(10:40,size=1)
  df1$V3[df1$Trt %in% c(i)] <- sample(1:5,size=1)
} 
df1$PercentSurv <- as.numeric(df1$PercentSurv)
df1$Status[df1$PercentSurv > 15] <- as.numeric(1) # status 1 = under 85% dead
df1$Status[df1$PercentSurv <=15] <-as.numeric(2)  # status 2 = over 85% dead




# Pt.2 create df2 -  time-to-event with variables only
#==========================================================
df2 <- data.frame(matrix(ncol = 6,nrow=50))
colnames(df2) <- c("Trt", "Time", "Status","V1","V2","V3")
df2$Trt <- c(1:50)
for(i in df2$Trt){
  df2$Status[df2$Trt %in% c(i)] <- ifelse(  min(  df1$PercentSurv[df1$Trt 
%in% c(i)]) <= 15,2,1)
  df2$Time[df2$Trt %in% c(i)] <- ifelse(df2$Status[df2$Trt %in% 
c(i)]=="2",   df1$Day[df1$Trt %in% c(i)] 
[min(which(df1$PercentSurv[df1$Trt %in% c(i)]<=15))],10)
  df2$V1[df2$Trt %in% c(i)] <- min(df1$V1[df1$Trt %in% c(i)])
  df2$V2[df2$Trt %in% c(i)] <- min(df1$V2[df1$Trt %in% c(i)])
  df2$V3[df2$Trt %in% c(i)] <- min(df1$V3[df1$Trt %in% c(i)])
  }
df2$Time <- as.numeric(df2$Time)


# Pt.3 use survival analysis on variables in df2  - cox test
#=========================================================

install.packages("survival")
install.packages("survminer")
library("survival")
library("survminer")

coxmodel <- coxph(Surv(Time, Status) ~ V1 + V2 + V3, data=df2)
summary(coxmodel)
ggsurvplot(survfit(coxmodel),data=df2, color = "#2E9FDF",
           ggtheme = theme_minimal())

Pt.3中的图形和摘要显示了所有50个杯子的一个生存概率图,表明在第8天生存率(即种群完全死亡)下降。而且,在这种情况下,所有变量都不重要(由于它们是随机的,所以很有意义)。但是,我仍然认为可以从DF1获得更多。我只是不确定是什么。

0 个答案:

没有答案