Wstęp

Column

Wymagania do przeprowadzenia analizy pola pod krzywą KM

  1. Środowisko R
https://cran.r-project.org/
  1. RStudio
https://rstudio.com/products/rstudio/download/
  1. Pakiet survHE
install.packages("survHE")  #zainstaluj pakiet przed pierwszym użyciem
library(survHE)             #wczytaj pakiet każdorazowo po nowym uruchomieniu środowiska
  1. Plik źródłowy zawierający zmienne: time jako czas zdarzenia, surv jako indeks zdarzenia, treat jako indeks grupy
library(readxl)
ipd_daurismo <- read_excel("ekstrapolacja_daurismo.xlsx")

Column

Opis funkcji pomocniczych

Funkcje pomocnicze

Dostęp do szczegółowego opisu funkcji zapewnia funkcjia help() lub znak zapytania postawiony przed nazwą funkcji

?survHE
help("survHE")

 

Operatory przypisania

Nazwy dla obiektów będących wynikami zastosowanej funkcji nadajemy używając operatora <= lub =

Distribution <- c("Expotential", "Weibulls", "Gamma", "Log normal","Log-logistic","Gompertz")           

 

Odwołanie do elementów obiektu

Dostep do elemntów utworzonego obiektu (np. kolumn lub tabel) zapewnia użycie znaku dolara na końcu nazwy obiektu

rmean_dau$unadjusted.result

 

Zapisywanie danych

write.csv2(rmean_dau$unadjusted.result,        #wskazujemy obiekt do zapisu
           "unadjusted.result.csv",                 #nadajemy nazwę wraz z rozszerzeniem
           row.names = FALSE)                  #określamy, czy pierwsza kolumna ma zawierać liczbę porządkową

Dopasowanie rozkładu parametrycznego

Column

Porównanie ograniczonego średniego czasu przeżycia - funkcja rmst2()

Metodyka

Funkcja rmst2() przeprowadza porównania dwóch prób przy użyciu ograniczonego średniego czasu przeżycia (RMST). Obliczane są trzy miary:

  • różnica w RMST (arm=1)-(arm=0)
  • iloraz RMST (arm=1)/(arm=0)
  • stosunek ograniczonej średniej utraty czasu (RMTL) RMTL = (arm=1)/(arm=0))

 

Instrukcja

formula <- Surv(time, status) ~ as.factor(treat)
mods <- c("exp", "weibull", "gamma", "lnorm", "llogis", "gompertz") 
Distribution <- c("Expotential", "Weibulls", "Gamma", "Log normal","Log-logistic","Gompertz")


m1 <- fit.models(formula = formula, 
                 data = ipd_daurismo, 
                 distr = mods)

 

Otrzymane zbiory danych

models - wynik analizy

model.fitting - wynik AIC i BIC

 

Pomoc

?fit.models

Column

Wynik funkcji


Estimated average survival time distribution* 
                        mean        sd     2.5%    median     97.5%
as.factor(treat)=0 11.962412 1.2136954 9.637701 11.942020 14.385323
as.factor(treat)=1  5.413511 0.9172816 3.839308  5.359219  7.361374

*Computed over the range: [ 0.1328-33.0880] using 1000 simulations.
NB: Check that the survival curves tend to 0 over this range!

Wizualizacja wyników

Wizualna ocena dopasowania rozkładów parametrycznych

plot(m1,
     add.km = T,
     lab.profile = c("Daurismo","Komparator"),
     ylab = "Prawdopodobieństwo \nprzeżycia",
     xlab = "Czas (miesiącach)")  +
  theme_survminer()+
  theme(legend.direction = "horizontal")+
  theme(legend.text = element_text(size = 13),
        legend.title = element_text(size = 13))

Ocena dopasowania na podstawie kryterium informacyjnego

aic_plot <- model.fit.plot(MLE = m1, colour = "deepskyblue4",
                           stacked = T, 
                           scale = "relative",
                           type = "aic",
                           name_legend = "Zastosowana metoda",
                           labs(title = "Test AIC"))+
  theme_half_open()+
  theme(legend.position = "null")+
  labs(title = "")+
  xlab(label = "")

bic_plot <- model.fit.plot(MLE =m1, 
                           colour = "deepskyblue4",
                           stacked = T, 
                           scale = "relative", 
                           type = "bic",
                           name_legend = "Zastosowana metoda",
                           labs(title = "Test AIC"))+
  theme_half_open()+
  theme(legend.position = "null")+
  labs(title = "")+
  xlab(label = "")

flexplot <- plot_grid(aic_plot, bic_plot, ncol = 2)
flexplot

Propabilistyczna analiza wrażliwości

plot(m1, mods=c(4,5), 
     nsim = 1000, 
     t = seq(.1, 63),
                colour = c("deepskyblue4", "aquamarine3"),
     add.km = T,
     lab.profile = c("Daurismo","Komparator"),
     ylab = "Prawdopodobieństwo \nprzeżycia",
     xlab = "Czas (miesiącach)")  +
  theme_survminer()+
  theme(legend.direction = "horizontal")+
  theme(legend.text = element_text(size = 13),
        legend.title = element_text(size = 13))

Ekstrapolacja

plot(m1, mods = c(1,2,3,4,5,6), add.km = T,
     nsim = 1000, t = seq(.1, 200), 
     lab.profile = c("Daurismo","Komparator"),
     annotate = T,
     legend.title = element_text(size = 15, face = "bold"),
     legend.text = element_text(size = 15, face = "plain"),
     ylab = "Prawdopodobieństwo \nprzeżycia",
     xlab = "Czas (miesiącach)")

Instrukcja

Kroki w systemie operacyjnym typu Windows

 

  1. Zainstaluj środowisko R na komputerze
https://cran.r-project.org/
  1. Zainstaluj RStudio na komputerze
https://rstudio.com/products/rstudio/download/

 

Kroki w środowisku R

 

  1. Zainstaluj pakiet survHE w środowisku R
install.packages("survHE")  #zainstaluj pakiet przed pierwszym użyciem
library(survHE)             #wczytaj pakiet każdorazowo po nowym uruchomieniu środowiska
  1. Wczytaj plik źródłowy zawierający zmienne: time jako czas zdarzenia, surv jako indeks zdarzenia, treat jako indeks grupy
library(readxl)
ipd_daurismo <- read_excel("ekstrapolacja_daurismo.xlsx")
  1. Zbuduj model
formula <- Surv(time, status) ~ as.factor(treat)
mods <- c("exp", "weibull", "gamma", "lnorm", "llogis", "gompertz") 
Distribution <- c("Expotential", "Weibulls", "Gamma", "Log normal","Log-logistic","Gompertz")


m1 <- fit.models(formula = formula, 
                 data = ipd_daurismo, 
                 distr = mods)        
  1. Wizualna ocena dopasowania rozkładów parametrycznych

  1. Ocena dopasowania na podstawie kryterium informacyjnego
aic_plot <- model.fit.plot(MLE = m1, colour = "deepskyblue4",
                           stacked = T, 
                           scale = "relative",
                           type = "aic",
                           name_legend = "Zastosowana metoda",
                           labs(title = "Test AIC"))+
  theme_half_open()+
  theme(legend.position = "null")+
  labs(title = "")+
  xlab(label = "")

bic_plot <- model.fit.plot(MLE =m1, 
                           colour = "deepskyblue4",
                           stacked = T, 
                           scale = "relative", 
                           type = "bic",
                           name_legend = "Zastosowana metoda",
                           labs(title = "Test AIC"))+
  theme_half_open()+
  theme(legend.position = "null")+
  labs(title = "")+
  xlab(label = "")

flexplot <- plot_grid(aic_plot, bic_plot, ncol = 2)
flexplot
  1. Propabilistyczna analiza wrażliwości
plot(m1, mods=c(4,5), 
     nsim = 1000, 
     t = seq(.1, 63),
                colour = c("deepskyblue4", "aquamarine3"),
     add.km = T,
     lab.profile = c("Daurismo","Komparator"),
     ylab = "Prawdopodobieństwo \nprzeżycia",
     xlab = "Czas (miesiącach)")  +
  theme_survminer()+
  theme(legend.direction = "horizontal")+
  theme(legend.text = element_text(size = 13),
        legend.title = element_text(size = 13))
  1. Ekstrapolacja
plot(m1, mods = c(1,2,3,4,5,6), add.km = T,
     nsim = 1000, t = seq(.1, 200), 
     lab.profile = c("Pola+Br","Br"),
     annotate = T,
     legend.title = element_text(size = 15, face = "bold"),
     legend.text = element_text(size = 15, face = "plain"),
     ylab = "Prawdopodobieństwo \nprzeżycia",
     xlab = "Czas (miesiącach)")

Literatura

-A. Health, I Manolopoulou, G Baio Efficient Monte Carlo Estimation of the Expected Value of Sample Information Using Moment Matching - https://journals.sagepub.com/doi/10.1177/0272989X17738515