Анализ выживаемости с коэффициентами смертности вместо отслеживания отдельных лиц - PullRequest
0 голосов
/ 16 мая 2019

Мне интересно, можно ли использовать анализ выживания в моем наборе данных.

У меня процент смертности организмов в 50 уникальных обработках 3 переменных предиктора (все непрерывно). Я хочу знать, как эти предикторы влияют на время до смерти населения. Проблема в том, что у нас есть соотношение каждые 2 дня в каждой чашке. например, чашка А умерла на 20% на 2-й день, 40% - на 4-й день, 70% - на 6-й день и т. д. Но так как я не отслеживал людей в группе населения, т.е. (начиная с 1000, 800 живыми в день 2 600 в день 4 и т. Д.) Я не знаю, смогу ли я выполнить тест Кокса на таком наборе данных. Я хочу использовать эти предикторы для моделирования времени до смерти (выживаемость <15%) населения. </p>

Я могу использовать порог времени до 15% для моих 50 обработок, но это в значительной степени игнорирует наклон выживаемости в каждой уникальной обработке. Так как у меня есть коэффициент выживаемости (такой же, как вероятность выживания?) В каждой чашке, у меня есть потенциал, чтобы составить график анализа выживаемости для каждого лечения, нет? Как я могу предсказать время до смерти в зависимости от этих переменных лечения?

Я использовал пакеты «выживание» и «выживший» для моделирования с моим наблюдаемым временем до смерти по лечению уже (coxph (Surv (timetodead, status) ~ var1 + var2 + var3), но я чувствую, что теряю Таким образом, получается много информации. Это просто дает двоичный выход смертности ниже или выше 85%, но это объединяет все лечения, которые на 10% мертвы, с теми, которые на 80% мертвы, что не очень полезно.

Код для создания 2 DFS. df1 - это процент выживаемости при каждом лечении в течение 10 дней. df2 - время события (выживаемость составляет менее 15%). Я знаю, что df2 - это то, что я могу использовать для теста Кокса, но я чувствую, что должен быть в состоянии сделать что-то большее с 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. Я просто не уверен, что это такое.

...