Compare two mkinfit models based on their likelihood. If two fitted mkinfit objects are given as arguments, it is checked if they have been fitted to the same data. It is the responsibility of the user to make sure that the models are nested, i.e. one of them has less degrees of freedom and can be expressed by fixing the parameters of the other.
An mkinfit
object, or an mmkin
column
object containing two fits to the same data.
Optionally, another mkinfit object fitted to the same data.
Argument to mkinfit
, passed to
update.mkinfit
for creating the alternative fitted object.
Alternatively, an argument to mkinfit can be given which is then passed
to update.mkinfit
to obtain the alternative model.
The comparison is then made by the lrtest.default
method from the lmtest package. The model with the higher number of fitted
parameters (alternative hypothesis) is listed first, then the model with the
lower number of fitted parameters (null hypothesis).
# \dontrun{
test_data <- subset(synthetic_data_for_UBA_2014[[12]]$data, name == "parent")
sfo_fit <- mkinfit("SFO", test_data, quiet = TRUE)
dfop_fit <- mkinfit("DFOP", test_data, quiet = TRUE)
lrtest(dfop_fit, sfo_fit)
#> Likelihood ratio test
#>
#> Model 1: DFOP with error model const
#> Model 2: SFO with error model const
#> #Df LogLik Df Chisq Pr(>Chisq)
#> 1 5 -42.453
#> 2 3 -63.954 -2 43.002 4.594e-10 ***
#> ---
#> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
lrtest(sfo_fit, dfop_fit)
#> Likelihood ratio test
#>
#> Model 1: DFOP with error model const
#> Model 2: SFO with error model const
#> #Df LogLik Df Chisq Pr(>Chisq)
#> 1 5 -42.453
#> 2 3 -63.954 -2 43.002 4.594e-10 ***
#> ---
#> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# The following two examples are commented out as they fail during
# generation of the static help pages by pkgdown
#lrtest(dfop_fit, error_model = "tc")
#lrtest(dfop_fit, fixed_parms = c(k2 = 0))
# However, this equivalent syntax also works for static help pages
lrtest(dfop_fit, update(dfop_fit, error_model = "tc"))
#> Likelihood ratio test
#>
#> Model 1: DFOP with error model tc
#> Model 2: DFOP with error model const
#> #Df LogLik Df Chisq Pr(>Chisq)
#> 1 6 -34.587
#> 2 5 -42.453 -1 15.731 7.302e-05 ***
#> ---
#> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
lrtest(dfop_fit, update(dfop_fit, fixed_parms = c(k2 = 0)))
#> Likelihood ratio test
#>
#> Model 1: DFOP with error model const
#> Model 2: DFOP with error model const and fixed parameter(s) k2
#> #Df LogLik Df Chisq Pr(>Chisq)
#> 1 5 -42.453
#> 2 4 -57.340 -1 29.776 4.851e-08 ***
#> ---
#> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# }