A robust function to compute the log-likelihood of a model, as well as
individual log-likelihoods (for each observation) whenever possible. Can be
used as a replacement for
stats::logLik() out of the box, as the
returned object is of the same class (and it gives the same results by
get_loglikelihood(x, ...) loglikelihood(x, ...) # S3 method for lm get_loglikelihood( x, estimator = "ML", REML = FALSE, check_response = FALSE, verbose = TRUE, ... )
Passed down to
logLik(), if possible.
Corresponds to the different estimators for the standard deviation of the errors. If
estimator="ML"(default), the scaling is done by n (the biased ML estimator), which is then equivalent to using
estimator="OLS", it returns the unbiased OLS estimator.
estimator="REML"will give same results as
Only for linear models. This argument is present for compatibility with
stats::logLik(). Setting it to
TRUEwill overwrite the
estimatorargument and is thus equivalent to setting
estimator="REML". It will give the same results as
stats::logLik(..., REML=TRUE). Note that individual log-likelihoods are not available under REML.
TRUE, checks if the response variable is transformed (like
sqrt()), and if so, returns a corrected log-likelihood. To get back to the original scale, the likelihood of the model is multiplied by the Jacobian/derivative of the transformation.
Toggle warnings and messages.
An object of class
"logLik", also containing the
log-likelihoods for each observation as a
attributes(get_loglikelihood(x))$per_observation) when possible.
The code was partly inspired from the nonnest2 package.
x <- lm(Sepal.Length ~ Petal.Width + Species, data = iris) get_loglikelihood(x, estimator = "ML") # Equivalent to stats::logLik(x) #> 'log Lik.' -101.0339 (df=5) get_loglikelihood(x, estimator = "REML") # Equivalent to stats::logLik(x, REML=TRUE) #> 'log Lik.' -107.0896 (df=5) get_loglikelihood(x, estimator = "OLS") #> 'log Lik.' -101.0611 (df=5)