AIC(fit1)
Posted on

Forums
would it be worth getting this to work for Mx as an accessor function for AIC, with the benefit of being consilient with other functions in R?
AIC(fit1)
Error in UseMethod("logLik") :
no applicable method for 'logLik' applied to an object of class "MxModel"
AIC(fit1)
Error in UseMethod("logLik") :
no applicable method for 'logLik' applied to an object of class "MxModel"
AIC(...) and logLik(...)
logLik.MxModel<-function(model)
{
ll <- NA
if (!is.null(model@output) & !is.null(model@output$Minus2LogLikelihood))
ll <- -0.5*model@output$Minus2LogLikelihood
if (!is.null(model@data))
attr(ll,"nobs") <- model@data@numObs
else
attr(ll,"nobs") <- NA
if (!is.null(model@output))
attr(ll,"df")<- length(model@output$estimate)
else
attr(ll,"df") <- NA
class(ll) <- "logLik"
return(ll);
}
This can be used to obtain log-likelihood and/or AIC, e.g., by typing
model <- mxRun(mxModel(...))
logLik(model)
AIC(model)
There is one more thing. As far as I understand, R defines the AIC based on the -2loglikelihood and degrees of freedom equal to the freely estimated parameters in the model, whereas OpenMx defines AIC based on the chi^2 and the degrees of freedom equal to the difference of parameters between the model and the saturated model. The AIC difference between any two models will come out the same, either way, but this has great potential to confuse users. So, if this function was integrated into OpenMx, the different ways to calculate AIC should be stated in the summary()-function.
Log in or register to post comments
In reply to AIC(...) and logLik(...) by brandmaier
Patch to OpenMx
model <- mxRun(mxModel(...))
logLik(model)
AIC(model)
BIC(model)
Log in or register to post comments
In reply to Patch to OpenMx by brandmaier
great idea: let's roll this patch into the upcoming release!
Definately nice to be able to say AIC(model)
probably we should also implement a version of plot() which plots a model as a RAM graph...
Log in or register to post comments