From 2bb341f55e7f799f2d13e09e306ef9d33726fc1e Mon Sep 17 00:00:00 2001 From: Quentin Marcou <18257721+qmarcou@users.noreply.github.com> Date: Sat, 1 Jun 2024 17:19:26 +0200 Subject: [PATCH] Remove complete logging, update readme, set v0.1 --- DESCRIPTION | 2 +- R/renewnetTPreg.R | 7 ++++--- README.Rmd | 20 +++++++++++--------- README.md | 28 ++++++++++++++++------------ man/figures/README-plot-1.png | Bin 17286 -> 17942 bytes 5 files changed, 32 insertions(+), 25 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 170ea1f..ac7bfd9 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -2,7 +2,7 @@ Type: Package Package: netidmtpreg Title: Net Survival Binomial Regression for Progressive Illness Death Models -Version: 0.0.0.9000 +Version: 0.1.0 Authors@R: person("Quentin", "Marcou", , "quentin.marcou@univ-amu.fr", role = c("aut", "cre"), comment = c(ORCID = "0000-0001-7074-2761")) diff --git a/R/renewnetTPreg.R b/R/renewnetTPreg.R index 45a1490..4daacc0 100644 --- a/R/renewnetTPreg.R +++ b/R/renewnetTPreg.R @@ -1,6 +1,7 @@ -# Code adapted from idmTPreg package v1.1 under GNU-GPLv2 +# Code initially inspired from idmTPreg package v1.1 under GNU-GPLv2 # Original Authors: Leyla Azarang and Manuel Oviedo de la Fuente -# Adapted for net survival setting by Quentin Marcou, based on +# Largely rewritten and adapted for net survival setting by Quentin Marcou, +# based on #' @title Wraps the call to mod.glm.fit to handle convergence errors @@ -32,7 +33,7 @@ mod.glm.fit.errorwrapper <- maxmaxit = 1000, warning_str = "", ...) { - result <- tryCatchLog::tryCatchLog({ + result <- tryCatch({ # Try withCallingHandlers({ mod.glm.fit2( diff --git a/README.Rmd b/README.Rmd index 8b9567b..8562347 100644 --- a/README.Rmd +++ b/README.Rmd @@ -23,7 +23,7 @@ knitr::opts_chunk$set( The goal of netidmtpreg is to enable net survival estimation through direct binomial regression, allowing modeling continuous covariate effects that could -not be handled through stratified Pohar-Perme estimation, all this in a +not be handled through e.g stratified Pohar-Perme estimation, all this in a multistate Illness-Death setting. ## Installation @@ -59,7 +59,7 @@ n_ind <- 1e2 # number of simulated individuals synth_idm_data <- generate_uncensored_ind_exp_idm_data( n_individuals = n_ind, lambda_illness = 1.0, - lambda_death = 0.1 + lambda_death = 1.0 ) # Generate random age and sex labels @@ -77,7 +77,7 @@ synth_idm_data <- )) # Generate population mortality assuming equal constant population rate -l_pop_death <- 0.1 # extra disease mortality doubles the population mortality +l_pop_death <- 1.0 # extra disease mortality doubles the population mortality population_death_times <- generate_exponential_time_to_event( n_individuals = n_ind, lambda = l_pop_death @@ -92,13 +92,13 @@ crude_synth_idm_data <- netidmtpreg:::apply_iddata_death( ) ``` -Now let's carry the of net survival: +Now let's carry the of net survival estimation: ```{r estimation, echo=TRUE, warning=FALSE, message=FALSE} # Estimation can be sped up and carried in parrallel using futures: future::plan("multisession") # will work on any OS # future::plan("multicore") # more efficient but only works on UNIX systems net_estimate <- renewnetTPreg( - formula = ~ sex, # intercept + binary covariate + formula = ~1, # intercept only model, similar to Pohar-Perme estimation data = crude_synth_idm_data, # Use a standard ratetable ratetable = const_ratetable, @@ -108,8 +108,9 @@ net_estimate <- renewnetTPreg( year = start_date ), time_dep_popvars = list("age", "year"), - s = 0.5, - trans = "13", + s = 0.2, + by = n_ind / 10, + trans = "11", link = "logit", R = 100 # Number of bootstraps ) @@ -118,8 +119,9 @@ future::plan("sequential") # close the multisession, see future's documentation We obtain a `TPreg` object with a dedicated plotting method using ggplot: -```{r plot, echo = FALSE} -plot(net_estimate) +```{r plot} +plot(net_estimate) + ggplot2::ylim(-5, 5) ``` +Let's make sure we a More examples to come! \ No newline at end of file diff --git a/README.md b/README.md index 0279636..ccd635f 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ Status](https://img.shields.io/badge/lifecycle-maturing-blue.svg)](https://lifec The goal of netidmtpreg is to enable net survival estimation through direct binomial regression, allowing modeling continuous covariate -effects that could not be handled through stratified Pohar-Perme +effects that could not be handled through e.g stratified Pohar-Perme estimation, all this in a multistate Illness-Death setting. ## Installation @@ -61,7 +61,7 @@ n_ind <- 1e2 # number of simulated individuals synth_idm_data <- generate_uncensored_ind_exp_idm_data( n_individuals = n_ind, lambda_illness = 1.0, - lambda_death = 0.1 + lambda_death = 1.0 ) # Generate random age and sex labels @@ -79,7 +79,7 @@ synth_idm_data <- )) # Generate population mortality assuming equal constant population rate -l_pop_death <- 0.1 # extra disease mortality doubles the population mortality +l_pop_death <- 1.0 # extra disease mortality doubles the population mortality population_death_times <- generate_exponential_time_to_event( n_individuals = n_ind, lambda = l_pop_death @@ -94,14 +94,14 @@ crude_synth_idm_data <- netidmtpreg:::apply_iddata_death( ) ``` -Now let’s carry the of net survival: +Now let’s carry the of net survival estimation: ``` r # Estimation can be sped up and carried in parrallel using futures: future::plan("multisession") # will work on any OS # future::plan("multicore") # more efficient but only works on UNIX systems net_estimate <- renewnetTPreg( - formula = ~ sex, # intercept + binary covariate + formula = ~1, # intercept only model, similar to Pohar-Perme estimation data = crude_synth_idm_data, # Use a standard ratetable ratetable = const_ratetable, @@ -111,22 +111,26 @@ net_estimate <- renewnetTPreg( year = start_date ), time_dep_popvars = list("age", "year"), - s = 0.5, - trans = "13", + s = 0.2, + by = n_ind / 10, + trans = "11", link = "logit", R = 100 # Number of bootstraps ) +#> [1] "estimate" +#> [1] "bootstrap" future::plan("sequential") # close the multisession, see future's documentation ``` We obtain a `TPreg` object with a dedicated plotting method using ggplot: - #> Warning: Removed 1 row containing missing values or values outside the scale range - #> (`geom_line()`). - #> `geom_line()`: Each group consists of only one observation. - #> ℹ Do you need to adjust the group aesthetic? +``` r +plot(net_estimate) + ggplot2::ylim(-5, 5) +#> Warning: Removed 1 row containing missing values or values outside the scale range +#> (`geom_line()`). +``` -More examples to come\! +Let’s make sure we a More examples to come\! diff --git a/man/figures/README-plot-1.png b/man/figures/README-plot-1.png index 7b4f2a7b376bbedfd3f6cb5f62653d10b77fefc5..cf511c689187fdfc640643e303cfe7f2d3b49097 100644 GIT binary patch literal 17942 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 literal 17286 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