em_illness_death_phmm_weight: Using EM Type Algorithm for MSM Illness-death General Markov...

View source: R/general_markov_model.R

em_illness_death_phmm_weightR Documentation

Using EM Type Algorithm for MSM Illness-death General Markov Model

Description

Under the general Markov illness-death model, with normal frailty term which is a latent variable. We use the EM type algorithm to estimate the coefficient in the MSM illness-death general Markov model.

Usage

em_illness_death_phmm_weight(data,X1,X2,event1,event2,w,Trt,
                            EM_initial,sigma_2_0)

Arguments

data

The dataset, includes non-terminal events, terminal events as well as event indicator.

X1

Time to non-terminal event, could be censored by terminal event or lost to follow up.

X2

Time to terminal event, could be censored by lost to follow up.

event1

Event indicator for non-terminal event.

event2

Event indicator for terminal event.

w

IP weights.

Trt

Treatment variable.

EM_initial

Initial value for the EM algorithm, the output of OUT_em_weights.

sigma_2_0

Initial value for σ^2, the variance of zero-mean normal frailty, usually starts with 1.

Details

Similar as the usual Markov model. We postulate the semi-parametric Cox models with a frailty term for three transition rates in marginal structural illness-death model:

λ_{1}(t_1 ; a) = λ_{01}(t)e^{β_1 a + b}, t_1 > 0 ;

λ_{2}(t_2 ; a) = λ_{02}(t)e^{β_2 a + b}, t_2 > 0 ;

and

λ_{12}(t_2 \mid t_1 ; a) = λ_{03}(t_2)e^{β_3 a + b}, 0 < t_1 < t_2 ,

where b \sim N(0,1). Since b is not observed in the data, we use the IP weighted EM type algorithm to estimate all the parameters in the MSM illness-death general Markov model.

Value

beta1

The EM sequence for estimating β_1 at each iteration.

beta2

The EM sequence for estimating β_2 at each iteration.

beta3

The EM sequence for estimating β_3 at each iteration.

Lambda01

List of two dataframes for estimated Λ_{01} and λ_{01} when EM converges.

Lambda02

List of two dataframes for estimated Λ_{02} and λ_{02} when EM converges.

Lambda03

List of two dataframes for estimated Λ_{03} and λ_{03} when EM converges.

sigma_2

The EM sequence for estimating σ^2 at each iteration.

loglik

The EM sequence for log-likelihood at each iteration.

em.n

Number of EM steps to converge.

data

Data after running the EM.

Examples

n <- 500
set.seed(1234)
Cens = runif(n,0.7,0.9)
set.seed(1234)
OUT1 <- sim_cox_msm_semicmrsk(beta1 = 1,beta2 = 1,beta3 = 0.5,
                              sigma_2 = 1,
                              alpha0 = 0.5, alpha1 = 0.1, alpha2 = -0.1, alpha3 = -0.2,
                              n=n, Cens = Cens)
data_test <- OUT1$data0

## Get the PS weights
vars <- c("Z1","Z2","Z3")
ps1 <- doPS(data = data_test,
            Trt = "A",
            Trt.name = 1,
            VARS. = vars,
            logistic = TRUE,w=NULL)
w <- ps1$Data$ipw_ate_stab

### Fit the General Markov model
EM_initial <- OUT_em_weights(data = data_test,
                             X1 = "X1",
                             X2 = "X2",
                             event1 = "delta1",
                             event2 = "delta2",
                             w = w,
                             Trt = "A")

res1 <- em_illness_death_phmm_weight(data = data_test,
                                     X1 = "X1",
                                     X2 = "X2",
                                     event1 = "delta1",
                                     event2 = "delta2",
                                     w = w,
                                     Trt = "A",
                                     EM_initial = EM_initial,
                                     sigma_2_0 = 2)

print(paste("The estimated value for beta1 is:", round(res1$beta1[res1$em.n],5) ) )


semicmprskcoxmsm documentation built on April 30, 2022, 1:08 a.m.