From 16b695fa106e364d3a0832d07b55566687e1d2a4 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 | 24 ++++++++++++++---------- man/figures/README-plot-1.png | Bin 17286 -> 17802 bytes 5 files changed, 30 insertions(+), 23 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..2d4ae45 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 + binary covariate 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..432b70c 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 @@ -101,7 +101,7 @@ Now let’s carry the of net survival: 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 + binary covariate data = crude_synth_idm_data, # Use a standard ratetable ratetable = const_ratetable, @@ -111,21 +111,25 @@ 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()`). +``` diff --git a/man/figures/README-plot-1.png b/man/figures/README-plot-1.png index 7b4f2a7b376bbedfd3f6cb5f62653d10b77fefc5..9dc6f49a95fd1215da1b8f880785f034413ccede 100644 GIT binary patch literal 17802 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