
This function is used to compare the BIC of several outputs obtained with the same data but with different set of parameters.
Each object must have associated logLik()
method with df and nobs attributes.
BIC for object x will be calculated as 2*factor.value*sum(logLik(x))+sum(attributes(logLik(x))$df)*log(attributes(logLik(x))$nobs))
.
When several data (i..n) are included, the global BIC is calculated as:
2*factor.value*sum(logLik(x)) for i..n+sum(attributes(logLik(x))$df) for i..n*log(attributes(logLik(x))$nobs for i..n))
compare_BIC(
...,
factor.value = -1,
silent = FALSE,
FUN = function(x) specify_decimal(x, decimals = 2)
)
A list with DeltaBIC and Akaike weight for the models.
Successive results to be compared as lists.
The $value of the list object is multiplied by factor.value to calculate BIC.
If TRUE, nothing is displayed.
Function used to show values
Marc Girondot marc.girondot@gmail.com
compare_BIC compares the BIC of several outputs obtained with the same data.
Other AIC:
ExtractAIC.glm()
,
FormatCompareAIC()
,
compare_AIC()
,
compare_AICc()
if (FALSE) {
library("HelpersMG")
# Here two different models are fitted
x <- 1:30
y <- rnorm(30, 10, 2)+log(x)
plot(x, y)
d <- data.frame(x=x, y=y)
m1 <- lm(y ~ x, data=d)
m2 <- lm(y ~ log(x), data=d)
compare_BIC(linear=m1, log=m2, factor.value=-1)
# Here test if two datasets can be modeled with a single model
x2 <- 1:30
y2 <- rnorm(30, 15, 2)+log(x2)
plot(x, y, ylim=c(5, 25))
plot_add(x2, y2, col="red")
d2 <- data.frame(x=x2, y=y2)
m1_2 <- lm(y ~ x, data=d2)
x_grouped <- c(x, x2)
y_grouped <- c(y, y2)
d_grouped <- data.frame(x=x_grouped, y=y_grouped)
m1_grouped <- lm(y ~ x, data=d_grouped)
compare_BIC(separate=list(m1, m1_2), grouped=m1_grouped, factor.value=-1)
}
Run the code above in your browser using DataLab