The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
This dMrs package is designed to fit survival data to the corresponding manuscript.
req_packs = c("sqldf","relsurv","ggplot2","data.table","dMrs")
for(pack in req_packs){
chk_pack = tryCatch(find.package(pack),
warning = function(ww){NULL},
error = function(ee){NULL})
if( !is.null(chk_pack) ){
library(pack,character.only = TRUE)
next
}
stop(sprintf("Install %s",pack))
}
Loading required package: gsubfn
Loading required package: proto
Loading required package: RSQLite
Loading required package: survival
Loading required package: date
The code below will load relsurv
’s working dataset
rdata
and import Slovenia’s latest ratetable from HMD.
time cens age sex year agegr
1 2657 1 68 female 8210 62-70
2 1097 1 63 female 8278 62-70
3 3764 1 60 male 8254 54-61
# Slovenia population death tables
female_fn = "./slovenia_female.txt"
male_fn = "./slovenia_male.txt"
slotab = transrate.hmd(female = female_fn,male = male_fn)
dimnames(slotab)
$age
[1] "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11"
[13] "12" "13" "14" "15" "16" "17" "18" "19" "20" "21" "22" "23"
[25] "24" "25" "26" "27" "28" "29" "30" "31" "32" "33" "34" "35"
[37] "36" "37" "38" "39" "40" "41" "42" "43" "44" "45" "46" "47"
[49] "48" "49" "50" "51" "52" "53" "54" "55" "56" "57" "58" "59"
[61] "60" "61" "62" "63" "64" "65" "66" "67" "68" "69" "70" "71"
[73] "72" "73" "74" "75" "76" "77" "78" "79" "80" "81" "82" "83"
[85] "84" "85" "86" "87" "88" "89" "90" "91" "92" "93" "94" "95"
[97] "96" "97" "98" "99" "100" "101" "102" "103" "104" "105" "106" "107"
[109] "108" "109" "110"
$year
[1] "1983" "1984" "1985" "1986" "1987" "1988" "1989" "1990" "1991" "1992"
[11] "1993" "1994" "1995" "1996" "1997" "1998" "1999" "2000" "2001" "2002"
[21] "2003" "2004" "2005" "2006" "2007" "2008" "2009" "2010" "2011" "2012"
[31] "2013" "2014" "2015" "2016" "2017" "2018" "2019"
$sex
[1] "male" "female"
Rate table with dimension(s): age year sex
, , sex = male
year
age 1983 1984 1985
0 3.890717e-05 4.168568e-05 4.315943e-05
1 2.985959e-06 3.643855e-06 2.821509e-06
2 9.036621e-07 9.310505e-07 9.584391e-07
, , sex = female
year
age 1983 1984 1985
0 3.452286e-05 3.297061e-05 2.701924e-05
1 4.164802e-06 1.807623e-06 8.488862e-07
2 2.492640e-06 7.941114e-07 1.013217e-06
[1] 1040 6
rdata$datediag_yr = as.Date(rdata$year)
rdata$datediag_yr = as.character(rdata$datediag_yr)
rdata$datediag_yr = sapply(rdata$datediag_yr,
function(xx) strsplit(xx,"-")[[1]][1])
rdata$datediag_yr = rdata$datediag_yr
table(rdata$datediag_yr)
1982 1983 1984 1985 1986
168 237 243 220 172
[1] "1983" "1984" "1985" "1986" "1987" "1988" "1989" "1990" "1991" "1992"
[11] "1993" "1994" "1995" "1996" "1997" "1998" "1999" "2000" "2001" "2002"
[21] "2003" "2004" "2005" "2006" "2007" "2008" "2009" "2010" "2011" "2012"
[31] "2013" "2014" "2015" "2016" "2017" "2018" "2019"
[1] 872 7
test = rs.surv(Surv(time,cens) ~ 1,
ratetable = slotab,data = rdata,
rmap = list(age = age*365.241))
str(test)
List of 14
$ n : int 872
$ time : num [1:804] 9 15 19 23 26 29 30 33 37 40 ...
$ n.risk : num [1:804] 872 871 870 869 868 867 866 865 864 862 ...
$ n.event : num [1:804] 1 1 1 1 1 1 1 1 2 1 ...
$ n.censor : num [1:804] 0 0 0 0 0 0 0 0 0 0 ...
$ std.err : num [1:804] 0.00115 0.00162 0.00199 0.0023 0.00258 ...
$ surv : num [1:804] 1 0.999 0.998 0.998 0.997 ...
$ lower : num [1:804] 0.997 0.996 0.995 0.993 0.992 ...
$ upper : num [1:804] 1 1 1 1 1 ...
$ conf.type: chr "log"
$ conf.int : num 0.95
$ method : int 1
$ call : language rs.surv(formula = Surv(time, cens) ~ 1, data = rdata, ratetable = slotab, rmap = list(age = age * 365.241))
$ type : chr "right"
- attr(*, "class")= chr [1:2] "survfit" "rs.surv"
COMP = data.frame(Time = test$time / 365.241,
SurvEst = test$surv,
SurvLow = test$lower,
SurvHigh = test$upper)
plot(COMP$Time,COMP$SurvEst,
xlab = "Time (yrs)",type = "l",
ylab = "Net Survival",main = "relsurv method",
ylim = c(min(COMP$SurvLow),1))
lines(COMP$Time,COMP$SurvLow,lty = 2)
lines(COMP$Time,COMP$SurvHigh,lty = 2)
Prep wDAT, working dataset’s initial fields.
wDAT = rdata[,c("datediag_yr","time","cens","age","sex")]
wDAT$delta = wDAT$cens
wDAT$datediag_yr = as.integer(wDAT$datediag_yr)
# time in years
wDAT$time = wDAT$time / 365.241
wDAT$age = as.integer(wDAT$age)
wDAT[1:5,]
datediag_yr time cens age sex delta
123 1983 11.4225949 1 56 male 1
124 1983 6.3492324 1 76 male 1
125 1983 0.8295892 1 61 male 1
126 1983 12.8791675 1 52 male 1
127 1983 10.4478960 1 82 male 1
Prep rDAT, the reference data.frame.
mm = fread(file = male_fn,data.table = FALSE)
ff = fread(file = female_fn,data.table = FALSE)
rDAT = rbind(data.frame(sex = "male",mm,stringsAsFactors = FALSE),
data.frame(sex = "female",ff,stringsAsFactors = FALSE))
rDAT[1:5,]
sex Year Age mx qx ax lx dx Lx Tx ex
1 male 1983 0 0.01429 0.01411 0.12 100000 1411 98759 6677791 66.78
2 male 1983 1 0.00109 0.00109 0.50 98589 107 98535 6579032 66.73
3 male 1983 2 0.00033 0.00033 0.50 98482 32 98465 6480497 65.80
4 male 1983 3 0.00070 0.00070 0.50 98449 69 98415 6382031 64.83
5 male 1983 4 0.00051 0.00051 0.50 98380 50 98355 6283617 63.87
rDAT = rDAT[,c("Year","Age","sex","qx")]
# table(rDAT$Age)
rDAT$Age = ifelse(rDAT$Age == "110+",110,rDAT$Age)
rDAT$Age = as.integer(rDAT$Age)
rDAT[1:5,]
Year Age sex qx
1 1983 0 male 0.01411
2 1983 1 male 0.00109
3 1983 2 male 0.00033
4 1983 3 male 0.00070
5 1983 4 male 0.00051
Perform matching to calculate log density and log cdf.
.872 out of 872 done
log_dens_t2 log_cdf_t2
1 -3.547065 -1.3748526
2 -2.641917 -0.6638762
3 -3.698327 -3.8746426
4 -3.812026 -1.4622169
5 -3.416823 -0.1247204
6 -3.290098 -0.8723565
datediag_yr time cens age sex delta log_dens_t2 log_cdf_t2
123 1983 11.4225949 1 56 male 1 -3.547065 -1.3748526
124 1983 6.3492324 1 76 male 1 -2.641917 -0.6638762
125 1983 0.8295892 1 61 male 1 -3.698327 -3.8746426
Prep dMrs
inputs.
len1 = 10
len2 = 15
A_range = c(0.4,4)
L_range = quantile(wDAT$time,c(0.5,1))
K_range = c(0.1,2)
T_range = c(0.1,20)
# Less fine grid for alpha/lambda
A_ugrid = log(seq(A_range[1],A_range[2],length.out = len1))
L_ugrid = log(seq(L_range[1],L_range[2],length.out = len1))
# Finer grid for kappa/theta
K_ugrid = log(seq(K_range[1],K_range[2],length.out = len2))
T_ugrid = log(seq(T_range[1],T_range[2],length.out = len2))
param_grid = list(A = A_ugrid,
L = L_ugrid,K = K_ugrid,T = T_ugrid)
param_grid
$A
[1] -0.9162907 -0.2231436 0.1823216 0.4700036 0.6931472 0.8754687
[7] 1.0296194 1.1631508 1.2809338 1.3862944
$L
[1] 2.060987 2.152588 2.236497 2.313908 2.385754 2.452783 2.515599 2.574702
[9] 2.630506 2.683359
$K
[1] -2.30258509 -1.44513486 -0.99039870 -0.67896255 -0.44183275 -0.25029454
[7] -0.08961216 0.04879016 0.17034537 0.27871340 0.37647757 0.46552935
[13] 0.54729530 0.62287798 0.69314718
$T
[1] -2.3025851 0.4196497 1.0793809 1.4734545 1.7553918 1.9750726
[7] 2.1550790 2.3075726 2.4398595 2.5566734 2.6612580 2.7559329
[13] 2.8424146 2.9220088 2.9957323
Run data fit with dMrs
’s main function.
res = run_analyses(DATA = wDAT,
param_grid = param_grid,
vec_time = seq(0,100,0.5),
ncores = 1,
verb = TRUE,
PLOT = TRUE)
####
Sun Jan 19 01:01:52 2025: Try copula = Independent, dist = Weibull, ...
Sun Jan 19 01:01:52 2025: Assume independence ...
Sun Jan 19 01:01:52 2025: Grid search for initial parameters ...
Sun Jan 19 01:01:52 2025: Start GRID
#ALPHA grid points = 11
#LAMBDA grid points = 10
#KAPPA grid points = 1
#THETA grid points = 1
Num grid points = 110
110 out of 110 done
Sun Jan 19 01:01:52 2025: End GRID
Sun Jan 19 01:01:52 2025: NR optimization w/ 1 profile point(s) ...
#---# Copula=Independent, Dist=weibull, Prof. point=1 out of 1
iPARS = (0, 2.68336, 0, -inf)
iter=5; LL=-1524.82; diff.LL=0.0142658; diff.PARS=0.0383152; nGRAD=0.0455929; meth=0; reach=0; PARS = (-0.364581, 4.1136, 0, -inf)
iter=10; LL=-1524.81; diff.LL=1.13687e-12; diff.PARS=2.03047e-11; nGRAD=0.00011729; meth=0; reach=5; PARS = (-0.364951, 4.11519, 0, -inf)
No more update
####
Num Iter = 11
Params = (-0.364951, 4.11519, 0, -inf)
LL = -1524.81
GRAD = (-0.000104319, -5.36147e-05, 0, 0)
Convergence Indicators:
NormGrad = 0.00011729
NormIHessGrad = 1.40873e-06
Var = (0.00686217, 0.0565211, 0, 0)
Sun Jan 19 01:01:52 2025: Get covariance ...
02.683359413789010-Inf-1589.91334418337-0.3649506242326234.115193240084370-Inf-1524.810.000117290238296447FALSE
c("alpha1", "lambda1", "kappa1", "theta")c(0.694230928216555, 61.2640517895095, 1, 0)c(0.0575088452067365, 14.5650189952957, 0, 0)c(0.581515662818862, 32.7171391245881, 1, 0)c(0.806946193614247, 89.8109644544309, 1, 0)c(0.590190138044431, 38.4449787938715, 1, 0)c(0.816612394252063, 97.6274187011909, 1, 0)
####
Sun Jan 19 01:01:52 2025: Try copula = Independent, dist = Exp-Weibull, ...
Sun Jan 19 01:01:52 2025: Assume independence ...
Sun Jan 19 01:01:52 2025: Grid search for initial parameters ...
Sun Jan 19 01:01:52 2025: Start GRID
#ALPHA grid points = 11
#LAMBDA grid points = 10
#KAPPA grid points = 16
#THETA grid points = 1
Num grid points = 1760
... 1760 out of 1760 done
Sun Jan 19 01:01:54 2025: End GRID
Sun Jan 19 01:01:54 2025: NR optimization w/ 1 profile point(s) ...
#---# Copula=Independent, Dist=expweibull, Prof. point=1 out of 1
iPARS = (-0.916291, 2.68336, 0.693147, -inf)
No more update
####
Num Iter = 1
Params = (-0.916291, 2.68336, 0.693147, -inf)
LL = -1531.8
GRAD = (31.6921, 31.5899, 83.6041, 0)
Convergence Indicators:
NormGrad = 94.8259
NormIHessGrad = 0.316124
Var = (-0.0103344, -0.0376988, -0.0164437, 0)
Sun Jan 19 01:01:54 2025: No converged solutions! ...
####
Sun Jan 19 01:01:54 2025: Try copula = Clayton, dist = Weibull, ...
Sun Jan 19 01:01:54 2025: Assume dependence: ...
Sun Jan 19 01:01:54 2025: theta = MLE ...
Sun Jan 19 01:01:54 2025: Grid search for initial parameters ...
Sun Jan 19 01:01:54 2025: Start GRID
#ALPHA grid points = 11
#LAMBDA grid points = 10
#KAPPA grid points = 1
#THETA grid points = 16
Num grid points = 1760
... 1760 out of 1760 done
Sun Jan 19 01:01:56 2025: End GRID
Sun Jan 19 01:01:56 2025: NR optimization w/ 1 profile point(s) ...
#---# Copula=Clayton, Dist=weibull, Prof. point=1 out of 1
iPARS = (0, 2.68336, 0, 0.41965)
iter=5; LL=-1525.22; diff.LL=0.26815; diff.PARS=1; nGRAD=2.16244; meth=0; reach=0; PARS = (-0.343036, 4.04924, 0, -4.28443)
iter=10; LL=-1524.86; diff.LL=0.0108357; diff.PARS=0.25; nGRAD=0.0405005; meth=0; reach=0; PARS = (-0.364222, 4.11026, 0, -5.37775)
iter=15; LL=-1524.84; diff.LL=0.00228082; diff.PARS=0.0936096; nGRAD=0.0255952; meth=0; reach=0; PARS = (-0.364416, 4.1119, 0, -5.86946)
iter=20; LL=-1524.82; diff.LL=5.50145e-05; diff.PARS=0.00712546; nGRAD=0.00946472; meth=0; reach=0; PARS = (-0.364761, 4.11407, 0, -6.97022)
iter=25; LL=-1524.82; diff.LL=3.27969e-06; diff.PARS=0.000453249; nGRAD=0.0156254; meth=0; reach=1; PARS = (-0.364899, 4.11465, 0, -7.05907)
iter=30; LL=-1524.82; diff.LL=1.82724e-05; diff.PARS=0.00306553; nGRAD=0.0148505; meth=0; reach=1; PARS = (-0.365051, 4.11519, 0, -7.3019)
iter=35; LL=-1524.82; diff.LL=7.28853e-05; diff.PARS=0.0135864; nGRAD=0.00619153; meth=0; reach=0; PARS = (-0.364788, 4.11429, 0, -7.33468)
iter=40; LL=-1524.81; diff.LL=0.000155857; diff.PARS=0.0322258; nGRAD=0.00842428; meth=0; reach=0; PARS = (-0.364929, 4.11483, 0, -7.44394)
iter=45; LL=-1524.81; diff.LL=0.000854395; diff.PARS=0.260748; nGRAD=0.06494; meth=0; reach=0; PARS = (-0.363941, 4.11183, 0, -7.87016)
iter=50; LL=-1524.81; diff.LL=0.000113742; diff.PARS=0.043695; nGRAD=0.00962198; meth=0; reach=0; PARS = (-0.364749, 4.11439, 0, -8.28866)
iter=55; LL=-1524.81; diff.LL=1.35936e-05; diff.PARS=0.0067181; nGRAD=0.00339567; meth=0; reach=0; PARS = (-0.364894, 4.11489, 0, -8.31562)
iter=60; LL=-1524.81; diff.LL=1.09125e-05; diff.PARS=0.00559048; nGRAD=0.0037728; meth=0; reach=0; PARS = (-0.364957, 4.11509, 0, -8.33561)
iter=65; LL=-1524.81; diff.LL=1.86089e-05; diff.PARS=0.00955709; nGRAD=0.00364773; meth=0; reach=0; PARS = (-0.364886, 4.11487, 0, -8.35142)
iter=70; LL=-1524.81; diff.LL=6.09548e-06; diff.PARS=0.00309094; nGRAD=0.00227521; meth=0; reach=3; PARS = (-0.364929, 4.11499, 0, -8.36763)
iter=75; LL=-1524.81; diff.LL=8.72633e-06; diff.PARS=0.0046756; nGRAD=0.00186553; meth=0; reach=3; PARS = (-0.36491, 4.11493, 0, -8.38638)
iter=80; LL=-1524.81; diff.LL=2.01537e-08; diff.PARS=3.56576e-06; nGRAD=0.0160512; meth=0; reach=2; PARS = (-0.365172, 4.1158, 0, -8.51842)
iter=85; LL=-1524.81; diff.LL=5.25293e-06; diff.PARS=0.00323047; nGRAD=0.00266432; meth=0; reach=7; PARS = (-0.364914, 4.11498, 0, -8.52886)
iter=90; LL=-1524.81; diff.LL=2.67506e-06; diff.PARS=0.00166774; nGRAD=0.00194806; meth=0; reach=12; PARS = (-0.364923, 4.115, 0, -8.54045)
Optimization criteria met
####
Num Iter = 93
Params = (-0.36493, 4.11502, 0, -8.54285)
LL = -1524.81
GRAD = (-0.000122009, -0.00104369, 0, -0.00159193)
Convergence Indicators:
NormGrad = 0.00190747
NormIHessGrad = 0.00329959
Var = (0.00695345, 0.057652, 0, 2.09317)
Sun Jan 19 01:02:02 2025: Get covariance ...
02.6833594137890100.419649743100121-1567.33915264465-0.3649297168259994.115017798610590-8.54285470023963-1524.8120.00190746698854164FALSE
c("alpha1", "lambda1", "kappa1", "theta")c(0.694245442936594, 61.2533044767636, 1, 0.000194932989852757)c(0.0578912931614559, 14.7074211844081, 0, 0.000282025206382938)c(0.58078059332169, 32.4272886498623, 1, -0.000357826257390278)c(0.807710292551497, 90.0793203036648, 1, 0.000747692237095792)c(0.589567574777206, 38.2603594210566, 1, 1.1438886049511e-05)c(0.81750889237822, 98.0640894674452, 1, 0.0033219030566844)
####
Sun Jan 19 01:02:03 2025: Try copula = Clayton, dist = Exp-Weibull, ...
Sun Jan 19 01:02:03 2025: Assume dependence: ...
Sun Jan 19 01:02:03 2025: theta = MLE ...
Sun Jan 19 01:02:03 2025: Grid search for initial parameters ...
Sun Jan 19 01:02:03 2025: Start GRID
#ALPHA grid points = 11
#LAMBDA grid points = 10
#KAPPA grid points = 16
#THETA grid points = 16
Num grid points = 28160
.......... 5000.......... 10000 out of 28160 done
.......... 15000.......... 20000 out of 28160 done
.......... 25000...... 28160 out of 28160 done
Sun Jan 19 01:02:35 2025: End GRID
Sun Jan 19 01:02:35 2025: NR optimization w/ 2 profile point(s) ...
#---# Copula=Clayton, Dist=expweibull, Prof. point=1 out of 2
iPARS = (-0.916291, 2.68336, 0.693147, -2.30259)
No more update
####
Num Iter = 1
Params = (-0.916291, 2.68336, 0.693147, -2.30259)
LL = -1530.67
GRAD = (30.6387, 27.1626, 74.4244, 0.846512)
Convergence Indicators:
NormGrad = 84.9485
NormIHessGrad = 1.05686
Var = (-0.0124412, -0.0586044, -0.0204214, -1.45715)
#---# Copula=Clayton, Dist=expweibull, Prof. point=2 out of 2
iPARS = (-0.223144, 2.68336, 0.278713, 0)
No more update
####
Num Iter = 1
Params = (-0.223144, 2.68336, 0.278713, 0)
LL = -1550.64
GRAD = (-52.2677, 44.7771, 2.73584, -2.50489)
Convergence Indicators:
NormGrad = 68.925
NormIHessGrad = 1.17749
Var = (-0.0105215, -0.00903437, -0.015051, 0.187011)
Sun Jan 19 01:02:37 2025: No converged solutions! ...
####
Sun Jan 19 01:02:37 2025: Try copula = Gumbel, dist = Weibull, ...
Sun Jan 19 01:02:37 2025: Assume dependence: ...
Sun Jan 19 01:02:37 2025: theta = MLE ...
Sun Jan 19 01:02:37 2025: Grid search for initial parameters ...
Sun Jan 19 01:02:37 2025: Start GRID
#ALPHA grid points = 11
#LAMBDA grid points = 10
#KAPPA grid points = 1
#THETA grid points = 16
Num grid points = 1760
... 1760 out of 1760 done
Sun Jan 19 01:02:39 2025: End GRID
Sun Jan 19 01:02:39 2025: NR optimization w/ 1 profile point(s) ...
#---# Copula=Gumbel, Dist=weibull, Prof. point=1 out of 1
iPARS = (0, 2.68336, 0, 0)
iter=5; LL=-1525.42; diff.LL=0.444766; diff.PARS=0.937506; nGRAD=0.235658; meth=0; reach=0; PARS = (-0.359236, 4.09115, 0, -4.34478)
iter=10; LL=-1524.83; diff.LL=0.00490524; diff.PARS=0.352634; nGRAD=0.0190056; meth=0; reach=0; PARS = (-0.364631, 4.11394, 0, -7.028)
iter=15; LL=-1524.82; diff.LL=0.000723369; diff.PARS=0.10248; nGRAD=0.00686415; meth=0; reach=0; PARS = (-0.3648, 4.11451, 0, -7.54197)
iter=20; LL=-1524.82; diff.LL=0.000872367; diff.PARS=0.161166; nGRAD=0.00844451; meth=0; reach=0; PARS = (-0.364801, 4.11461, 0, -7.83735)
iter=25; LL=-1524.81; diff.LL=1.40578e-05; diff.PARS=0.00288327; nGRAD=0.00630609; meth=0; reach=2; PARS = (-0.364806, 4.11459, 0, -7.85752)
iter=30; LL=-1524.81; diff.LL=2.33073e-05; diff.PARS=0.00511904; nGRAD=0.0100628; meth=0; reach=0; PARS = (-0.364996, 4.11528, 0, -7.98445)
iter=35; LL=-1524.81; diff.LL=3.24447e-06; diff.PARS=0.000856284; nGRAD=0.00464296; meth=0; reach=1; PARS = (-0.364872, 4.11485, 0, -8.11161)
iter=40; LL=-1524.81; diff.LL=7.35308e-06; diff.PARS=0.00214414; nGRAD=0.00472779; meth=0; reach=1; PARS = (-0.364918, 4.11502, 0, -8.2136)
iter=45; LL=-1524.81; diff.LL=0.000128156; diff.PARS=0.0424082; nGRAD=0.00358772; meth=0; reach=0; PARS = (-0.364903, 4.11497, 0, -8.36078)
iter=50; LL=-1524.81; diff.LL=1.6813e-06; diff.PARS=0.000685932; nGRAD=0.00455423; meth=0; reach=1; PARS = (-0.364952, 4.11516, 0, -8.56591)
iter=55; LL=-1524.81; diff.LL=0.000117103; diff.PARS=0.0524827; nGRAD=0.00827748; meth=0; reach=0; PARS = (-0.365043, 4.11545, 0, -8.65155)
iter=60; LL=-1524.81; diff.LL=1.73855e-05; diff.PARS=0.0103164; nGRAD=0.0025298; meth=0; reach=0; PARS = (-0.364925, 4.11508, 0, -8.92867)
iter=65; LL=-1524.81; diff.LL=2.85778e-05; diff.PARS=0.0177819; nGRAD=0.0026209; meth=0; reach=0; PARS = (-0.364913, 4.11504, 0, -8.9814)
iter=70; LL=-1524.81; diff.LL=1.60999e-05; diff.PARS=0.010547; nGRAD=0.00157054; meth=0; reach=0; PARS = (-0.364927, 4.11508, 0, -9.02594)
iter=75; LL=-1524.81; diff.LL=4.43144e-06; diff.PARS=0.00346161; nGRAD=0.00447832; meth=0; reach=1; PARS = (-0.364964, 4.11524, 0, -9.2094)
iter=80; LL=-1524.81; diff.LL=3.92854e-07; diff.PARS=0.000316689; nGRAD=0.00135826; meth=0; reach=2; PARS = (-0.364922, 4.11507, 0, -9.22849)
iter=85; LL=-1524.81; diff.LL=9.24128e-06; diff.PARS=0.00777069; nGRAD=0.00148635; meth=0; reach=0; PARS = (-0.364941, 4.11513, 0, -9.27101)
iter=90; LL=-1524.81; diff.LL=5.12218e-06; diff.PARS=0.00448773; nGRAD=0.00168266; meth=0; reach=4; PARS = (-0.364914, 4.11503, 0, -9.31396)
iter=95; LL=-1524.81; diff.LL=3.29298e-05; diff.PARS=0.030586; nGRAD=0.00284653; meth=0; reach=0; PARS = (-0.364887, 4.11494, 0, -9.37928)
iter=100; LL=-1524.81; diff.LL=2.89599e-05; diff.PARS=0.0284176; nGRAD=0.00159831; meth=0; reach=0; PARS = (-0.36493, 4.11509, 0, -9.43851)
iter=105; LL=-1524.81; diff.LL=1.28676e-06; diff.PARS=0.00129304; nGRAD=0.00129885; meth=0; reach=2; PARS = (-0.364946, 4.11515, 0, -9.45401)
iter=110; LL=-1524.81; diff.LL=1.3031e-05; diff.PARS=0.013437; nGRAD=0.00174012; meth=0; reach=0; PARS = (-0.364908, 4.11502, 0, -9.47997)
iter=115; LL=-1524.81; diff.LL=2.95512e-06; diff.PARS=0.00318446; nGRAD=0.00154572; meth=0; reach=2; PARS = (-0.364944, 4.11515, 0, -9.52054)
iter=120; LL=-1524.81; diff.LL=3.50795e-06; diff.PARS=0.0038511; nGRAD=0.000999176; meth=0; reach=2; PARS = (-0.364937, 4.11513, 0, -9.53946)
iter=125; LL=-1524.81; diff.LL=4.29556e-05; diff.PARS=0.0495436; nGRAD=0.00672694; meth=0; reach=0; PARS = (-0.36488, 4.11498, 0, -9.60671)
iter=130; LL=-1524.81; diff.LL=3.89602e-06; diff.PARS=0.00475033; nGRAD=0.000843891; meth=0; reach=3; PARS = (-0.364938, 4.11513, 0, -9.64472)
iter=135; LL=-1524.81; diff.LL=5.56522e-06; diff.PARS=0.00743135; nGRAD=0.000819621; meth=0; reach=0; PARS = (-0.364934, 4.11511, 0, -9.74889)
iter=140; LL=-1524.81; diff.LL=7.31939e-09; diff.PARS=1.03345e-05; nGRAD=0.000887789; meth=0; reach=1; PARS = (-0.364942, 4.11515, 0, -9.79488)
iter=145; LL=-1524.81; diff.LL=3.66894e-07; diff.PARS=0.000544256; nGRAD=0.000748335; meth=0; reach=1; PARS = (-0.364939, 4.11514, 0, -9.83907)
iter=150; LL=-1524.81; diff.LL=1.38975e-07; diff.PARS=0.000192945; nGRAD=0.00211247; meth=0; reach=1; PARS = (-0.364906, 4.11502, 0, -9.91011)
iter=155; LL=-1524.81; diff.LL=4.15586e-05; diff.PARS=0.0714183; nGRAD=0.00608527; meth=0; reach=0; PARS = (-0.365041, 4.11549, 0, -9.99336)
iter=160; LL=-1524.81; diff.LL=3.14753e-07; diff.PARS=0.000448372; nGRAD=0.00461267; meth=0; reach=1; PARS = (-0.365013, 4.1154, 0, -10.0395)
iter=165; LL=-1524.81; diff.LL=1.93038e-06; diff.PARS=0.00350327; nGRAD=0.000743859; meth=0; reach=1; PARS = (-0.364943, 4.11516, 0, -10.0545)
iter=170; LL=-1524.81; diff.LL=3.93386e-07; diff.PARS=0.000733345; nGRAD=0.00071975; meth=0; reach=3; PARS = (-0.364943, 4.11516, 0, -10.0735)
iter=175; LL=-1524.81; diff.LL=1.97834e-06; diff.PARS=0.00382138; nGRAD=0.000652825; meth=0; reach=1; PARS = (-0.364945, 4.11516, 0, -10.1006)
iter=180; LL=-1524.81; diff.LL=9.06025e-07; diff.PARS=0.00177848; nGRAD=0.000684617; meth=0; reach=3; PARS = (-0.364934, 4.11512, 0, -10.1168)
iter=185; LL=-1524.81; diff.LL=5.03537e-07; diff.PARS=0.000996948; nGRAD=0.000575152; meth=0; reach=8; PARS = (-0.364943, 4.11516, 0, -10.1243)
iter=190; LL=-1524.81; diff.LL=5.56865e-06; diff.PARS=0.0110993; nGRAD=0.000782013; meth=0; reach=0; PARS = (-0.364935, 4.11513, 0, -10.1399)
iter=195; LL=-1524.81; diff.LL=3.72539e-07; diff.PARS=0.000731757; nGRAD=0.00125031; meth=0; reach=1; PARS = (-0.364922, 4.11508, 0, -10.1607)
iter=200; LL=-1524.81; diff.LL=2.32239e-06; diff.PARS=0.00486576; nGRAD=0.00113166; meth=0; reach=2; PARS = (-0.364924, 4.11509, 0, -10.1788)
####
Num Iter = 201
Params = (-0.364924, 4.11509, 0, -10.1788)
LL = -1524.81
GRAD = (-0.000566615, 0.000854607, 0, -0.000478803)
Convergence Indicators:
NormGrad = 0.00113166
NormIHessGrad = 0.00451256
Var = (0.00680882, 0.0559227, 0, 9.26726)
Sun Jan 19 01:02:54 2025: Get covariance ...
02.6833594137890100-1565.92618810742-0.364924411774364.115092274826450-10.178835752156-1524.810.00113166168428236FALSE
c("alpha1", "lambda1", "kappa1", "theta")c(0.694249125954288, 61.2578665609712, 1, 1.00003796538433)c(0.0572863756056385, 14.4862485931599, 0, 0.000115574879391569)c(0.581969892962402, 32.8653410472839, 1, 0.999811442783202)c(0.806528358946173, 89.6503920746586, 1, 1.00026448798545)c(0.59057892488115, 38.5362888861027, 1, 1.00000009730728)c(0.816117590016081, 97.3764294401225, 1, 1.01481256454601)
####
Sun Jan 19 01:02:54 2025: Try copula = Gumbel, dist = Exp-Weibull, ...
Sun Jan 19 01:02:54 2025: Assume dependence: ...
Sun Jan 19 01:02:54 2025: theta = MLE ...
Sun Jan 19 01:02:54 2025: Grid search for initial parameters ...
Sun Jan 19 01:02:54 2025: Start GRID
#ALPHA grid points = 11
#LAMBDA grid points = 10
#KAPPA grid points = 16
#THETA grid points = 16
Num grid points = 28160
.......... 5000.......... 10000 out of 28160 done
.......... 15000.......... 20000 out of 28160 done
.......... 25000...... 28160 out of 28160 done
Sun Jan 19 01:03:29 2025: End GRID
Sun Jan 19 01:03:29 2025: NR optimization w/ 2 profile point(s) ...
#---# Copula=Gumbel, Dist=expweibull, Prof. point=1 out of 2
iPARS = (-0.916291, 2.68336, 0.693147, -2.30259)
No more update
####
Num Iter = 1
Params = (-0.916291, 2.68336, 0.693147, -2.30259)
LL = -1531.56
GRAD = (32.9268, 27.5153, 76.4866, -0.0741572)
Convergence Indicators:
NormGrad = 87.701
NormIHessGrad = 3.75999
Var = (-0.0122108, -0.0231552, -0.019186, 2.69044)
#---# Copula=Gumbel, Dist=expweibull, Prof. point=2 out of 2
iPARS = (-0.223144, 2.68336, 0.376478, 0)
No more update
####
Num Iter = 1
Params = (-0.223144, 2.68336, 0.376478, 0)
LL = -1549.28
GRAD = (-50.5325, 26.4988, -13.5553, -4.95901)
Convergence Indicators:
NormGrad = 58.8563
NormIHessGrad = 1.07062
Var = (-0.0156799, -0.0157895, -0.0253651, 0.124703)
Sun Jan 19 01:03:31 2025: No converged solutions! ...
Check dMrs
output
IDX COPULA DIST alpha1 lambda1 kappa1 theta LL NP
1 1 Independent weibull 0.6942309 61.26405 1 0.000000000 -1524.810 2
2 2 Clayton weibull 0.6942454 61.25330 1 0.000194933 -1524.812 3
3 3 Gumbel weibull 0.6942491 61.25787 1 1.000037965 -1524.810 3
BIC POST
1 -3063.162 0.99771623
2 -3069.936 0.00113960
3 -3069.932 0.00114417
[1] 1
PARS EST SE lowCI highCI
1 log_alpha1 -0.3649506 0.08283821 -0.5273105 -0.2025907
2 log_lambda1 4.1151932 0.23774169 3.6492281 4.5811584
3 unc_kappa1 0.0000000 0.00000000 0.0000000 0.0000000
4 log_theta -Inf 0.00000000 -Inf -Inf
PARS EST SE lowCI highCI lowCI_2 highCI_2
1 alpha1 0.6942309 0.05750885 0.5815157 0.8069462 0.5901901 0.8166124
2 lambda1 61.2640518 14.56501900 32.7171391 89.8109645 38.4449788 97.6274187
3 kappa1 1.0000000 0.00000000 1.0000000 1.0000000 1.0000000 1.0000000
4 theta 0.0000000 0.00000000 0.0000000 0.0000000 0.0000000 0.0000000
[1] -1524.81
log_alpha1 log_lambda1 unc_kappa1 log_theta
-1.043190e-04 -5.361471e-05 0.000000e+00 0.000000e+00
log_alpha1 log_lambda1 unc_kappa1 log_theta
log_alpha1 -390.6644 -107.78422 0 0
log_lambda1 -107.7842 -47.43015 0 0
unc_kappa1 0.0000 0.00000 0 0
log_theta 0.0000 0.00000 0 0
log_alpha1 log_lambda1 unc_kappa1 log_theta
log_alpha1 0.006862169 -0.01559416 0 0
log_lambda1 -0.015594163 0.05652111 0 0
unc_kappa1 0.000000000 0.00000000 0 0
log_theta 0.000000000 0.00000000 0 0
time log_F1 F1 log_surv surv SE low_surv high_surv
1 0.0 -Inf 0.00000000 0.0000 1.0000000 0.000000000 1.0000000 1.0000000
2 0.5 -3.355798 0.03488151 -0.0355 0.9651227 0.006074747 0.9532162 0.9770292
3 1.0 -2.885480 0.05582797 -0.0574 0.9442163 0.007933013 0.9286676 0.9597650
AA log_low_surv log_high_surv low_surv2 high_surv2
1 0.0000000 0.00000000 0.00000000 1.0000000 1.0000000
2 0.3474733 -0.05024977 -0.02507972 0.9509919 0.9752322
3 0.2866663 -0.07645563 -0.04309375 0.9263940 0.9578216
Compare dMrs
vs relsurv
tmp_pred = res[[idx]]$PRED
out = sqldf("
select
COMP.*,
'Pohar-Perme' as Method
from
COMP
union
select
DMRS.time as Time,
DMRS.surv as SurvEst,
DMRS.low_surv2 as SurvLow,
DMRS.high_surv2 as SurvHigh,
'dMrs' as Method
from
tmp_pred as DMRS
")
my_themes = theme(text = element_text(size = 28),
legend.position = "bottom",
plot.title = element_text(hjust = 0.5),
panel.background = element_blank(),
panel.grid.major = element_line(colour = "grey50",
linewidth = 0.5,linetype = "dotted"),
panel.border = element_rect(colour = "black",
fill = NA,linewidth = 1),
legend.key.width = unit(1.5, "cm"),
legend.key.size = unit(0.5, "inch"),
legend.text = element_text(size = 20))
ggplot(data = out,
mapping = aes(x = Time,y = SurvEst,group = Method,fill = Method)) +
geom_line(linewidth = 1.25,alpha = 1,
aes(color = Method),show.legend = FALSE) +
geom_ribbon(mapping = aes(ymin = SurvLow,
ymax = SurvHigh),alpha = 0.5) +
ylim(c(0.4,1)) + xlim(0,20) +
xlab("Time (yrs)") + ylab("Net Survival") +
my_themes
R version 4.2.2 (2022-10-31 ucrt)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19045)
Matrix products: default
locale:
[1] LC_COLLATE=C
[2] LC_CTYPE=English_United States.utf8
[3] LC_MONETARY=English_United States.utf8
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.utf8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] dMrs_1.0.0 data.table_1.14.8 ggplot2_3.4.0 relsurv_2.2-9
[5] date_1.2-42 survival_3.4-0 sqldf_0.4-11 RSQLite_2.3.1
[9] gsubfn_0.7 proto_1.0.0
loaded via a namespace (and not attached):
[1] Rcpp_1.0.10 ADGofTest_0.3 mvtnorm_1.1-3
[4] lattice_0.20-45 gtools_3.9.4 digest_0.6.31
[7] utf8_1.2.3 gmp_0.7-2 R6_2.5.1
[10] chron_2.3-61 stats4_4.2.2 pcaPP_2.0-3
[13] evaluate_0.20 highr_0.10 pillar_1.9.0
[16] gplots_3.1.3 rlang_1.1.1 jquerylib_0.1.4
[19] blob_1.2.4 Matrix_1.5-1 rmarkdown_2.20
[22] labeling_0.4.3 splines_4.2.2 bit_4.0.5
[25] munsell_0.5.0 compiler_4.2.2 numDeriv_2016.8-1.1
[28] xfun_0.42 pkgconfig_2.0.3 gsl_2.1-8
[31] htmltools_0.5.4 tcltk_4.2.2 tidyselect_1.2.0
[34] gridExtra_2.3 tibble_3.2.1 stabledist_0.7-1
[37] viridisLite_0.4.2 fansi_1.0.4 pspline_1.0-19
[40] dplyr_1.1.2 withr_2.5.0 bitops_1.0-7
[43] grid_4.2.2 jsonlite_1.8.5 gtable_0.3.4
[46] lifecycle_1.0.3 DBI_1.1.3 magrittr_2.0.3
[49] scales_1.2.1 KernSmooth_2.23-20 cli_3.6.1
[52] cachem_1.0.8 farver_2.1.1 Rmpfr_0.9-3
[55] viridis_0.6.2 bslib_0.4.2 generics_0.1.3
[58] vctrs_0.6.2 tools_4.2.2 bit64_4.0.5
[61] copula_1.1-2 glue_1.6.2 fastmap_1.1.1
[64] yaml_2.3.7 colorspace_2.1-0 caTools_1.18.2
[67] memoise_2.0.1 knitr_1.42 sass_0.4.5
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.