Skip to contents
library(poreg)
require(survival)
#> Loading required package: survival

Generate simulated data.

set.seed(123)
df = 10
nn = 1000
beta = c(0.5,0,-0.5, rep(0,10))
sim_PO_data = PO.sim(nn, beta,
                     C.gen = function(n)
                       5+rbinom(n,1,0.5)*runif(n, -5, 0))
str(sim_PO_data)
#> List of 4
#>  $ delta: num [1:1000] 1 1 1 0 1 1 1 0 1 1 ...
#>  $ X    : num [1:1000] 0.0882 0.2656 0.0156 5 3.0214 ...
#>  $ Z    : num [1:1000, 1:13] -0.5605 -0.2302 1.5587 0.0705 0.1293 ...
#>  $ C    : num [1:1000] 5 5 5 5 5 ...

Use U-Method

res_umethod = PO(Surv(X, delta) ~ Z[,1]+ Z[,2]+ Z[,3]+ Z[,4]+ Z[,5]+ Z[,6]+ Z[,7]
         + Z[,8]+ Z[,9]+ Z[,10]+ Z[,11]+ Z[,12]+ Z[,13],
         data = sim_PO_data,method = 'U-method')
res_umethod$coefficients
#>       Z[, 1]       Z[, 2]       Z[, 3]       Z[, 4]       Z[, 5]       Z[, 6] 
#>  0.402583539 -0.132209349 -0.492876392 -0.050644450 -0.033285405 -0.088953476 
#>       Z[, 7]       Z[, 8]       Z[, 9]      Z[, 10]      Z[, 11]      Z[, 12] 
#>  0.059994696 -0.027726996 -0.007809205  0.061906345  0.041066723  0.043869927 
#>      Z[, 13] 
#>  0.030323057

Use NPMLE

res_npmle = PO(Surv(X, delta) ~ Z[,1]+ Z[,2]+ Z[,3]+ Z[,4]+ Z[,5]+ Z[,6]+ Z[,7]
         + Z[,8]+ Z[,9]+ Z[,10]+ Z[,11]+ Z[,12]+ Z[,13],
         data = sim_PO_data,method = 'NPMLE')
res_npmle$coefficients
#>       Z[, 1]       Z[, 2]       Z[, 3]       Z[, 4]       Z[, 5]       Z[, 6] 
#>  0.320173515 -0.105850088 -0.410840434 -0.035136734 -0.020578763 -0.067833862 
#>       Z[, 7]       Z[, 8]       Z[, 9]      Z[, 10]      Z[, 11]      Z[, 12] 
#>  0.046023576 -0.020481732 -0.003643924  0.042992550  0.040359826  0.024051147 
#>      Z[, 13] 
#>  0.030044174