{quickfit}
is an R
package to help with simple model fitting tasks
in epidemiology.
{quickfit}
is developed at the Centre for the Mathematical Modelling
of Infectious
Diseases
at the London School of Hygiene and Tropical Medicine as part of the
Epiverse Initiative.
You can install the development version of quickfit from GitHub with:
# check whether {pak} is installed
if(!require("pak")) install.packages("pak")
pak::pak("epiverse-trace/quickfit")
These examples illustrate some of the current functionalities:
library(quickfit)
Generate some simulated data, define a likelihood, then estimate MLE, or MLE and 95% confidence interval based on profile likelihood:
sim_data <- rnorm(50, 4, 2)
# Define likelihood function
log_l <- function(x,a,b) dnorm(x, a, b, log = TRUE)
# Estimate MLE
estimate_mle(log_l, sim_data, n_param = 2, a_initial = 3, b_initial = 1)
#> $estimate
#> a b
#> 3.945122 2.223727
#>
#> $log_likelihood
#> [1] -110.9108
# Estimate 95% CI based on profile likelihood
calculate_profile(
log_l,
data_in = sim_data,
n_param = 2,
a_initial = 3,
b_initial = 1,
precision = 0.01
)
#> $estimate
#> a b
#> 3.945122 2.223727
#>
#> $profile_out
#> a1 a2 b1 b2
#> 3.317470 4.577470 1.848473 2.749082
Additionally, multiple distribution models can be compared (for censored and non-censored data).
multi_fitdist(
data = rlnorm(n = 100, meanlog = 1, sdlog = 1),
models = c("lnorm", "gamma", "weibull"),
func = fitdistrplus::fitdist
)
#> models loglik aic bic
#> 1 gamma -237.0588 478.1176 483.3280
#> 2 weibull -237.7660 479.5321 484.7424
#> 3 lnorm -240.0550 484.1099 489.3203
To report a bug please open an issue
Contributions are welcome via pull requests.
Please note that the quickfit project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.