pammtools icon indicating copy to clipboard operation
pammtools copied to clipboard

CI types: simultaneous confidence bands

Open fabian-s opened this issue 5 years ago • 3 comments

... instead of the pointwise intervals we do now.

Would probably make more sense for at least some of the functional estimates we return like hazard (ratios), survival functions etc.

Implementation could be based on code here: https://www.fromthebottomoftheheap.net/2016/12/15/simultaneous-interval-revisited/

fabian-s avatar Sep 10 '19 13:09 fabian-s

.. not sure how to pull this through the delta method, though.

fabian-s avatar Sep 10 '19 13:09 fabian-s

Could be obtained via the package gratia, developed by @gavinsimpson.

Example:

library(survival)
library(pammtools)
#> 
#> Attaching package: 'pammtools'
#> The following object is masked from 'package:stats':
#> 
#>     filter
library(gratia)

as_ped(Surv(time, status) ~ temperature + voltage, data = capacitor) |>
  pamm(formula = ped_status ~ s(tend, bs="ad", k = 20)+temperature+voltage) |>
  derivatives(interval = "simultaneous")
#> # A tibble: 200 x 8
#>    smooth  var    data derivative     se  crit    lower  upper
#>    <chr>   <chr> <dbl>      <dbl>  <dbl> <dbl>    <dbl>  <dbl>
#>  1 s(tend) tend   216      0.0823 0.0324  3.20 -0.0213  0.186 
#>  2 s(tend) tend   220.     0.0774 0.0281  3.20 -0.0125  0.167 
#>  3 s(tend) tend   225.     0.0724 0.0247  3.20 -0.00657 0.151 
#>  4 s(tend) tend   229.     0.0672 0.0220  3.20 -0.00325 0.138 
#>  5 s(tend) tend   234.     0.0618 0.0200  3.20 -0.00213 0.126 
#>  6 s(tend) tend   238.     0.0562 0.0184  3.20 -0.00265 0.115 
#>  7 s(tend) tend   243.     0.0505 0.0171  3.20 -0.00422 0.105 
#>  8 s(tend) tend   247.     0.0445 0.0159  3.20 -0.00623 0.0953
#>  9 s(tend) tend   252.     0.0384 0.0146  3.20 -0.00825 0.0852
#> 10 s(tend) tend   256.     0.0322 0.0132  3.20 -0.0100  0.0744
#> # ... with 190 more rows

StaffanBetner avatar Sep 03 '21 12:09 StaffanBetner

@StaffanBetner That would be for the derivative of the specified smooth though, not the smooth itself or a derived quantity like the hazard ratio etc.

I'm in the process of exposing the simulation-based approach to simultaneous intervals for smooths (it's there via confint() methods but it needs a tidy version like the output from derivatives(), and more general exposure if possible so users could apply it to other quantities than just smooths.

gavinsimpson avatar Sep 03 '21 12:09 gavinsimpson