It varies by what a function within a package brought into namespace with a library call returns as a value. Some functions will return an object that contains an element, which may or may not be shown by default, but can be examined with str()
. It is often identified as formula
or call
.
In the case of fitSmoothHazard()
from the {casebase}
package, the return value is an oddball S4
object.
library(casebase)
#> See example usage at http://sahirbhatnagar.com/casebase/
# Simulate censored survival data for two outcome types from exponential
# distributions
library(data.table)
nobs <- 500
tlim <- 20
# simulation parameters
b1 <- 200
b2 <- 50
# event type 0-censored, 1-event of interest, 2-competing event
# t observed time/endpoint
# z is a binary covariate
DT <- data.table(z = rbinom(nobs, 1, 0.5))
DT[, `:=`(
"t_event" = rweibull(nobs, 1, b1),
"t_comp" = rweibull(nobs, 1, b2)
)]
DT[, `:=`(
"event" = 1 * (t_event < t_comp) + 2 * (t_event >= t_comp),
"time" = pmin(t_event, t_comp)
)]
DT[time >= tlim, `:=`("event" = 0, "time" = tlim)]
out_linear <- fitSmoothHazard(event ~ time + z, DT, ratio = 10)
#> 'time' will be used as the time variable
out_log <- fitSmoothHazard(event ~ log(time) + z, DT, ratio = 10)
#> 'time' will be used as the time variable
out_linear@misc$formula
#> event ~ time + z + offset(offset)
# discovered by digging with\
str(out_linear)
#> Formal class 'CompRisk' [package "casebase"] with 41 slots
#> ..@ originalData :'data.frame': 500 obs. of 5 variables:
#> .. ..$ z : int [1:500] 0 0 1 0 0 1 0 1 1 1 ...
#> .. ..$ t_event: num [1:500] 167 250 348.5 25.9 129.4 ...
#> .. ..$ t_comp : num [1:500] 53.06 231.31 27.33 129.95 6.72 ...
#> .. ..$ event : num [1:500] 0 0 0 0 2 2 0 2 0 2 ...
#> .. ..$ time : num [1:500] 20 20 20 20 6.72 ...
#> ..@ typeEvents : num [1:3] 0 1 2
#> ..@ timeVar : chr "time"
#> ..@ eventVar : chr "event"
#> ..@ extra :List of 4
#> .. ..$ y.integer : logi TRUE
#> .. ..$ use.refLevel : num 1
#> .. ..$ signvec.damlm: num [1:3] 1 1 1
#> .. ..$ colnames.y : chr [1:3] "0" "1" "2"
#> ..@ family :Formal class 'vglmff' [package "VGAM"] with 23 slots
#> .. .. ..@ blurb : chr [1:7] "M" "ultinomial logit model\n\n" "" "Links: " ...
#> .. .. ..@ constraints : expression({ constraints <- cm.VGAM(matrix(1, M, 1), x = x, bool = FALSE, apply.int = TRUE, constraints = const| __truncated__
#> .. .. ..@ deviance :function (mu, y, w, residuals = FALSE, eta, extra = NULL, summation = TRUE)
#> .. .. ..@ fini : expression({ })
#> .. .. ..@ first : expression({ })
#> .. .. ..@ infos :function (...)
#> .. .. ..@ initialize : expression({ if (is.factor(y) && is.ordered(y)) warning("response should be nominal, not ordinal") delete.zero| __truncated__
#> .. .. ..@ last : expression({ misc$link <- "multilogitlink" misc$earg <- list(multilogitlink = list(M = M, refLevel = use.refLev| __truncated__
#> .. .. ..@ linkfun :function (mu, extra = NULL)
#> .. .. ..@ linkinv :function (eta, extra = NULL)
#> .. .. ..@ loglikelihood :function (mu, y, w, residuals = FALSE, eta, extra = NULL, summation = TRUE)
#> .. .. ..@ middle : expression({ })
#> .. .. ..@ middle2 : expression({ })
#> .. .. ..@ summary.dispersion: logi(0)
#> .. .. ..@ vfamily : chr [1:2] "multinomial" "VGAMcategorical"
#> .. .. ..@ validparams :function (eta, y, extra = NULL)
#> .. .. ..@ validfitted :function ()
#> .. .. ..@ simslot :function ()
#> .. .. ..@ hadof :function (eta, extra = list(), linpred.index = 1, w = 1, dim.wz = c(NROW(eta),
#> NCOL(eta) * (NCOL(eta) + 1)/2), deriv = 1, ...)
#> .. .. ..@ charfun :function ()
#> .. .. ..@ rqresslot :function ()
#> .. .. ..@ deriv : expression({ signvec <- extra$signvec.damlm use.refLevel <- extra$use.refLevel d.mlm <- extra$d.mlm ansd <- (| __truncated__
#> .. .. ..@ weight : expression({ mytiny <- (mu < sqrt(.Machine$double.eps)) | (mu > 1 - sqrt(.Machine$double.eps)) if (M == 1) { w| __truncated__
#> ..@ iter : num 6
#> ..@ predictors : num [1:2211, 1:2] -4.05 -4.14 -4.25 -3.82 -4.14 ...
#> .. ..- attr(*, "dimnames")=List of 2
#> .. .. ..$ : chr [1:2211] "5" "6" "8" "10" ...
#> .. .. ..$ : chr [1:2] "log(mu[,2]/mu[,1])" "log(mu[,3]/mu[,1])"
#> ..@ assign :List of 3
#> .. ..$ (Intercept): int 1
#> .. ..$ time : int 2
#> .. ..$ z : int 3
#> ..@ callXm2 : language `<undef>`()
#> ..@ contrasts : list()
#> ..@ df.residual : int 4416
#> ..@ df.total : int 4422
#> ..@ dispersion : num 1
#> ..@ effects : Named num [1:4422] 30.8859 47.2362 1.2632 -1.5339 -0.0351 ...
#> .. ..- attr(*, "names")= chr [1:4422] "(Intercept):1" "(Intercept):2" "time:1" "time:2" ...
#> ..@ offset : num [1:2211, 1] 1.35 1.35 1.35 1.35 1.35 ...
#> ..@ qr :List of 5
#> .. ..$ qr : num [1:4422, 1:6] -6.1875 0 0.0192 0 0.0182 ...
#> .. .. ..- attr(*, "dimnames")=List of 2
#> .. .. .. ..$ : chr [1:4422] "5:1" "5:2" "6:1" "6:2" ...
#> .. .. .. ..$ : chr [1:6] "(Intercept):1" "(Intercept):2" "time:1" "time:2" ...
#> .. ..$ qraux: num [1:6] 1.02 1.02 1.02 1.02 1.02 ...
#> .. ..$ pivot: int [1:6] 1 2 3 4 5 6
#> .. ..$ tol : num 1e-07
#> .. ..$ rank : int 6
#> ..@ R : num [1:6, 1:6] -6.19 0 0 0 0 ...
#> .. ..- attr(*, "dimnames")=List of 2
#> .. .. ..$ : chr [1:6] "(Intercept):1" "(Intercept):2" "time:1" "time:2" ...
#> .. .. ..$ : chr [1:6] "(Intercept):1" "(Intercept):2" "time:1" "time:2" ...
#> .. ..- attr(*, "rank")= int 6
#> ..@ rank : int 6
#> ..@ ResSS : num 4425
#> ..@ smart.prediction: list()
#> ..@ terms :List of 1
#> .. ..$ terms:Classes 'terms', 'formula' language event ~ time + z + offset(offset)
#> .. .. .. ..- attr(*, "variables")= language list(event, time, z, offset(offset))
#> .. .. .. ..- attr(*, "offset")= int 4
#> .. .. .. ..- attr(*, "factors")= int [1:4, 1:2] 0 1 0 0 0 0 1 0
#> .. .. .. .. ..- attr(*, "dimnames")=List of 2
#> .. .. .. .. .. ..$ : chr [1:4] "event" "time" "z" "offset(offset)"
#> .. .. .. .. .. ..$ : chr [1:2] "time" "z"
#> .. .. .. ..- attr(*, "term.labels")= chr [1:2] "time" "z"
#> .. .. .. ..- attr(*, "order")= int [1:2] 1 1
#> .. .. .. ..- attr(*, "intercept")= int 1
#> .. .. .. ..- attr(*, "response")= int 1
#> .. .. .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv>
#> .. .. .. ..- attr(*, "predvars")= language list(event, time, z, offset(offset))
#> .. .. .. ..- attr(*, "dataClasses")= Named chr [1:4] "numeric" "numeric" "numeric" "numeric"
#> .. .. .. .. ..- attr(*, "names")= chr [1:4] "event" "time" "z" "offset(offset)"
#> ..@ Xm2 : num[0 , 0 ]
#> ..@ Ym2 : num[0 , 0 ]
#> ..@ xlevels : list()
#> ..@ call : language fitSmoothHazard(formula = event ~ time + z, data = DT, ratio = 10)
#> ..@ coefficients : Named num [1:6] -5.6303 -3.7325 0.0335 -0.0219 0.0197 ...
#> .. ..- attr(*, "names")= chr [1:6] "(Intercept):1" "(Intercept):2" "time:1" "time:2" ...
#> ..@ constraints :List of 3
#> .. ..$ (Intercept): num [1:2, 1:2] 1 0 0 1
#> .. ..$ time : num [1:2, 1:2] 1 0 0 1
#> .. ..$ z : num [1:2, 1:2] 1 0 0 1
#> ..@ control :List of 16
#> .. ..$ checkwz : logi TRUE
#> .. ..$ Check.rank : logi TRUE
#> .. ..$ Check.cm.rank : logi TRUE
#> .. ..$ convergence : expression({ switch(criterion, coefficients = if (iter == 1) iter < maxit else (iter < maxit && max(abs(new.cri| __truncated__
#> .. ..$ criterion : chr "deviance"
#> .. ..$ epsilon : num 1e-07
#> .. ..$ half.stepsizing: logi TRUE
#> .. ..$ maxit : num 31
#> .. ..$ noWarning : logi FALSE
#> .. ..$ min.criterion : Named logi TRUE
#> .. .. ..- attr(*, "names")= chr "deviance"
#> .. ..$ save.weights : logi FALSE
#> .. ..$ stepsize : num 1
#> .. ..$ trace : logi FALSE
#> .. ..$ wzepsilon : num 1.82e-12
#> .. ..$ xij : NULL
#> .. ..$ panic : logi FALSE
#> ..@ criterion :List of 2
#> .. ..$ deviance : num 1540
#> .. ..$ loglikelihood: num -770
#> ..@ fitted.values : num [1:2211, 1:3] 0.911 0.9 0.895 0.909 0.909 ...
#> .. ..- attr(*, "dimnames")=List of 2
#> .. .. ..$ : chr [1:2211] "5" "6" "8" "10" ...
#> .. .. ..$ : chr [1:3] "0" "1" "2"
#> ..@ misc :List of 22
#> .. ..$ colnames.x : chr [1:3] "(Intercept)" "time" "z"
#> .. ..$ colnames.X.vlm : chr [1:6] "(Intercept):1" "(Intercept):2" "time:1" "time:2" ...
#> .. ..$ criterion : chr "deviance"
#> .. ..$ function.name : chr "vglm"
#> .. ..$ history : num [1:6, 1] 1639 1553 1541 1540 1540 ...
#> .. .. ..- attr(*, "dimnames")=List of 2
#> .. .. .. ..$ : NULL
#> .. .. .. ..$ : chr "deviance"
#> .. ..$ intercept.only : logi FALSE
#> .. ..$ predictors.names: chr [1:2] "log(mu[,2]/mu[,1])" "log(mu[,3]/mu[,1])"
#> .. ..$ M : int 2
#> .. ..$ n : int 2211
#> .. ..$ nonparametric : logi FALSE
#> .. ..$ nrow.X.vlm : int 4422
#> .. ..$ orig.assign :List of 3
#> .. .. ..$ (Intercept): int 1
#> .. .. ..$ time : int 2
#> .. .. ..$ z : int 3
#> .. ..$ p : int 3
#> .. ..$ ncol.X.vlm : int 6
#> .. ..$ ynames : chr [1:3] "0" "1" "2"
#> .. ..$ link : chr "multilogitlink"
#> .. ..$ earg :List of 1
#> .. .. ..$ multilogitlink:List of 2
#> .. .. .. ..$ M : int 2
#> .. .. .. ..$ refLevel: num 1
#> .. ..$ parallel : logi FALSE
#> .. ..$ refLevel : num 1
#> .. ..$ refLevel.orig : num 1
#> .. ..$ dataname : chr "sampleData"
#> .. ..$ formula :Class 'formula' language event ~ time + z + offset(offset)
#> .. .. .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv>
#> ..@ model :'data.frame': 0 obs. of 0 variables
#> ..@ na.action : list()
#> ..@ post : list()
#> ..@ preplot : list()
#> ..@ prior.weights : num[0 , 0 ]
#> ..@ residuals : num [1:2211, 1:2] 6.44e-05 8.78e-05 1.10e-04 2.26e-05 8.12e-05 ...
#> .. ..- attr(*, "dimnames")=List of 2
#> .. .. ..$ : chr [1:2211] "5" "6" "8" "10" ...
#> .. .. ..$ : chr [1:2] "log(mu[,2]/mu[,1])" "log(mu[,3]/mu[,1])"
#> ..@ weights : num[0 , 0 ]
#> ..@ x : num [1:2211, 1:3] 1 1 1 1 1 1 1 1 1 1 ...
#> .. ..- attr(*, "dimnames")=List of 2
#> .. .. ..$ : chr [1:2211] "5" "6" "8" "10" ...
#> .. .. ..$ : chr [1:3] "(Intercept)" "time" "z"
#> .. ..- attr(*, "assign")=List of 3
#> .. .. ..$ (Intercept): int 1
#> .. .. ..$ time : int 2
#> .. .. ..$ z : int 3
#> .. ..- attr(*, "orig.assign.lm")= int [1:3] 0 1 2
#> ..@ y : num [1:2211, 1:3] 0 0 0 0 0 0 0 0 0 0 ...
#> .. ..- attr(*, "dimnames")=List of 2
#> .. .. ..$ : chr [1:2211] "5" "6" "8" "10" ...
#> .. .. ..$ : chr [1:3] "0" "1" "2"
Created on 2023-01-27 with reprex v2.0.2