R Under development (unstable) (2023-08-08 r84908 ucrt) -- "Unsuffered Consequences" Copyright (C) 2023 The R Foundation for Statistical Computing Platform: x86_64-w64-mingw32/x64 R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > cat("# asis test\n") # asis test > library("qgcomp") > # does the checknames correctly intuit which are linear/non-linear models for common specifications > set.seed(50) > N=50 > dat <- data.frame(time=(tmg <- pmin(.1,rweibull(N, 10, 0.1))), + d=1.0*(tmg<0.1), x1=runif(N), x2=runif(N), z=runif(N)) > expnms=paste0("x", 1:2) > > > ##### non additive > > f0 = survival::Surv(time, d)~ x1 + x2 > f1 = survival::Surv(time, d)~ x1*x2 > f2 = survival::Surv(time, d)~ x1 + x2 + I(x1*x2) > f3 = survival::Surv(time, d)~x1 + x2 + x1:x2 > set.seed(12321) > #res = try(qgcomp(f0, expnms = expnms, data = dat, B=2, MCsize=50)) > #stopifnot(class(res)=="try-error") > res = try(obj0 <- qgcomp(f0, expnms = expnms, data = dat)) > stopifnot(inherits(res, "qgcompfit")) > set.seed(12321) > res = try(obj1 <- qgcomp(f1, expnms = expnms, data = dat, B=2, MCsize=50)) > stopifnot(inherits(res, "qgcompfit")) > set.seed(12321) > res = try(obj2 <- qgcomp(f2, expnms = expnms, data = dat, B=2, MCsize=50)) > stopifnot(inherits(res, "qgcompfit")) > set.seed(12321) > res = try(obj3 <- qgcomp(f3, expnms = expnms, data = dat, B=2, MCsize=50)) > stopifnot(inherits(res, "qgcompfit")) > stopifnot(all.equal( + obj0$fit$coefficients, + obj1$fit$coefficients, check.names=FALSE + )=="Numeric: lengths (2, 3) differ") > > stopifnot(all.equal( + obj1$fit$coefficients, + obj3$fit$coefficients, check.names=FALSE)) > stopifnot(all.equal( + obj1$fit$coefficients, + obj2$fit$coefficients, check.names=FALSE)) > stopifnot(all.equal( + obj1$msmfit$coefficients, + obj3$msmfit$coefficients, check.names=FALSE)) > stopifnot(all.equal( + obj1$msmfit$coefficients, + obj2$msmfit$coefficients, check.names=FALSE)) > > f0b = d ~ x1 + x2 > f4 = d ~ x1*x2 > f5 = d ~ x1 + x2 + I(x1*x2) > f6 = d ~ x1 + x2 + x1:x2 > res = try(obj0b <- qgcomp(f0b, expnms = expnms, data = dat, B=2, family=binomial())) > stopifnot(inherits(res,"qgcompfit")) > res = try(obj4 <- qgcomp(f4, expnms = expnms, data = dat, B=2, family=binomial())) > stopifnot(inherits(res,"qgcompfit")) > res = try(obj5 <- qgcomp(f5, expnms = expnms, data = dat, B=2, family=binomial())) > stopifnot(inherits(res,"qgcompfit")) > res = try(obj6 <- qgcomp(f6, expnms = expnms, data = dat, B=2, family=binomial())) > stopifnot(inherits(res,"qgcompfit")) > > stopifnot(all.equal( + obj0b$fit$coefficients, + obj4$fit$coefficients, check.names=FALSE + )=="Numeric: lengths (3, 4) differ") > > stopifnot(all.equal( + obj4$fit$coefficients, + obj6$fit$coefficients, check.names=FALSE)) > stopifnot(all.equal( + obj4$msmfit$coefficients, + obj6$msmfit$coefficients, check.names=FALSE)) > stopifnot(all.equal( + obj4$fit$coefficients, + obj5$fit$coefficients, check.names=FALSE)) > stopifnot(all.equal( + obj4$msmfit$coefficients, + obj5$msmfit$coefficients, check.names=FALSE)) > > > ##### non linear > > > # behavior changes when considering self interactions! > f0c = survival::Surv(time, d)~ x1 + x1:x1 > f1c = survival::Surv(time, d)~ x1^2 > f3c = survival::Surv(time, d)~ x1 + I(x1*x1) > f4c = survival::Surv(time, d)~ x1 + I(x1^2) > stopifnot(all.equal( + survival::coxph(f0c, data=dat)$coefficients, + survival::coxph(f1c, data=dat)$coefficients, check.names=FALSE)) > stopifnot(all.equal( + survival::coxph(f3c, data=dat)$coefficients, + survival::coxph(f4c, data=dat)$coefficients, check.names=FALSE)) > > stopifnot(all.equal( + survival::coxph(f0c, data=dat)$coefficients, + survival::coxph(f3c, data=dat)$coefficients, check.names=FALSE)=="Numeric: lengths (1, 2) differ") > > > > f0 = d~ x1 + x1:x1 > f1 = d~ x1^2 > f3 = d~ x1 + I(x1*x1) > f4 = d~ x1 + I(x1^2) > glm(f0, data=dat, family=binomial())$coefficients (Intercept) x1 0.7031927 -0.7495068 > glm(f1, data=dat, family=binomial())$coefficients (Intercept) x1 0.7031927 -0.7495068 > glm(f3, data=dat, family=binomial())$coefficients (Intercept) x1 I(x1 * x1) 0.2239853 2.5594880 -3.4638440 > glm(f4, data=dat, family=binomial())$coefficients (Intercept) x1 I(x1^2) 0.2239853 2.5594880 -3.4638440 > > stopifnot(all.equal( + glm(f0, data=dat, family=binomial())$coefficients, + glm(f1, data=dat, family=binomial())$coefficients, check.names=FALSE)) > stopifnot(all.equal( + glm(f3, data=dat, family=binomial())$coefficients, + glm(f4, data=dat, family=binomial())$coefficients, check.names=FALSE)) > > stopifnot(all.equal( + glm(f0, data=dat, family=binomial())$coefficients, + glm(f3, data=dat, family=binomial())$coefficients, check.names=FALSE)=="Numeric: lengths (2, 3) differ") > > > res = try(obj0 <- qgcomp(f0, expnms = expnms, + data = dat, B=2, family=binomial())) # defaults to RR > stopifnot(inherits(res,"qgcompfit")) > #res = try(obj0 <- qgcomp(f0, expnms = expnms, > # data = dat, B=2, family=gaussian())) # gives error due to B > > res = try(obj1 <- qgcomp(f1, expnms = expnms, data = dat, B=2, family=binomial())) > #res = try(obj1 <- qgcomp(f1, expnms = expnms, > # data = dat, B=2, family=gaussian())) # gives error due to B > > > res = try(obj3 <- qgcomp(f3, expnms = expnms, + data = dat, B=2, family=binomial())) # defaults to RR > stopifnot(inherits(res,"qgcompfit")) > #res = try(obj0 <- qgcomp(f0, expnms = expnms, > # data = dat, B=2, family=gaussian())) # gives error due to B > > res = try(obj4 <- qgcomp(f4, expnms = expnms, data = dat, B=2, family=binomial())) > #res = try(obj1 <- qgcomp(f1, expnms = expnms, > # data = dat, B=2, family=gaussian())) # gives error due to B > > stopifnot(inherits(res,"qgcompfit")) > stopifnot(all.equal( + obj0$fit$coefficients, + obj1$fit$coefficients, check.names=FALSE)) > stopifnot(all.equal( + obj3$fit$coefficients, + obj4$fit$coefficients, check.names=FALSE)) > > stopifnot(all.equal( + obj0$fit$coefficients, + obj3$fit$coefficients, check.names=FALSE)=="Numeric: lengths (2, 3) differ") > > # should result in different MSMs > stopifnot(substr(all.equal( + obj0$msmfit$coefficients, + obj3$msmfit$coefficients, check.names=FALSE), 1, 10)=="Mean relat") > > cat("done") done> > proc.time() user system elapsed 3.15 0.45 3.54