[R] Function hatTrace in package lme4
Ben Bolker
bbolker at gmail.com
Mon Oct 15 02:41:27 CEST 2012
ingaschwabe <ingaschwabe <at> gmail.com> writes:
>
> Dear all,
>
> For a project I need to calculate the conditional AIC of a mixed effects
> model.
> Luckily, I found a reference in the R help forum for a function to be used:
>
> CAIC <- function(model) {
>
> sigma <- attr(VarCorr(model), 'sc')
> observed <- attr(model, 'y')
> predicted <- fitted(model)
> cond.loglik <- sum(dnorm(observed, predicted, sigma, log=TRUE))
>
> rho <- hatTrace(model)
> p <- length(fixef(model))
> N <- nrow(attr(model, 'X'))
> K.corr <- N*(N-p-1)*(rho+1)/((N-p)*(N-p-2)) +
> N*(p+1)/((N-p)*(N-p-2))
>
> CAIC <- -2*cond.loglik + 2*K.corr
>
> return(CAIC)
>
> }
>
> Reference:
> http://r.789695.n4.nabble.com/Using-Conditional-AIC-with-lmer-td847899.html
>
> However, in this function the function hatTrace of the lme4 package was used
> to calcuate rho
> (line: rho <- hatTrace(model) )
>
> Sadly, R tells me that this function could not be found. A search on the
> internet revealed that this function was dropped out of the new package
> release of lme4.
>
> Can anyone help me with this? Is there an alternative function that gives me
> the same result as the hatTrace function?
You're not the first to ask about this.
Unfortunately, this disappeared from lme4 when the internal
structures of the fitted models changed, and the computation is
not trivially easy to re-implement. Searching with
library(sos)
findFn("{hat matrix} trace lme4")
didn't turn up anything either.
Details of the old calculation are available at
http://sourcecodebrowser.com/lme4/0.99875-9
/lmer_8c.html#ac7ea98c698b5bd4fe72bb06da1bba62a
followups to r-sig-mixed-models <at> r-project.org
(broken URL for gmane length limits)
More information about the R-help
mailing list