[R-es] GFI en modelos estructurales con lavaan
Jose Luis Cañadas
canadasreche en gmail.com
Mie Abr 25 21:17:27 CEST 2012
Bueno, después de una tarde ardua buscando información y olvidándome del
fútbol, creo que he dado con la solución. En la página
http://www.sfu.ca/sasdoc/sashtml/stat/chap19/sect34.htm sobre el CALIS
Procedure de SAS, explican relativamente bien como se calcula el GFI
según el tipo de estimación utilizada. Como yo he utilizado máxima
verosimilitud creo que esta función puede funcionar, aplicada a un
objeto de tivo lavaan.
GFI <- function (modelo) {
matriz.sigma <- fitted(modelo)$cov
matriz.sigma.inv <- solve(matriz.sigma)
matriz.muestral <- modelo en Sample@cov[[1]]
A <- t(matriz.muestral - matriz.sigma) %*% matriz.sigma.inv %*%
(matriz.muestral - matriz.sigma)
B <- t(matriz.muestral) %*% matriz.sigma.inv %*% matriz.muestral
GFI <- 1- sum(diag(A))/sum(diag(B))
return(GFI)
}
El 25/04/12 14:11, José Luis Cañadas escribió:
> Hola.
>
> Estoy utilizando el paquete lavaan para ajustar modelos de ecuaciones
> estructurales y dicho paquete no ofrece el cálculo del GFI y AGFI , así
> que estoy intentando hacerlo a mano , pero no acaba de salir.
>
> He visto en algunos artículos que GFI= 1-A/B
> dónde:
>
> A = traza{cov.estimadas^-1 * cov.muestrales - Identidad }^2
>
> y
>
> B = traza{cov.estimadas^-1 * cov.muestrales}^2
>
> El caso es que probando con un modelo simple que he ajustado antes con
> el uso del paquete sem , que si ofrece el GFI , no sale bien
>
> mi función es
>
> GFI<- function (matriz.sigma,matriz.muestral) {
> matriz.sigma.inv <- solve(matriz.sigma)
> A <- (matriz.sigma.inv %*% matriz.muestral) -
> diag(1,nrow=nrow(matriz.sigma))
> B <- matriz.sigma.inv %*% matriz.muestral
> GFI <- 1- sum(diag(A))^2/sum(diag(B))^2
> return(GFI)
> }
>
> Creo que lo que está mal es la definición del GFI, en otros artículos
> pone que
>
> GFI = 1- chi_cuadrado_modelo/chi_cuadrado_modelo_base
>
> Pero no sale parecido ni por casualidad.
>
> El valor que devuelve la función sem del pqeute sem es
>
> Model Chisquare = 574.65 Df = 71 Pr(>Chisq) = 7.0112e-80
> Chisquare (null model) = 4456 Df = 91
>
>
> Goodness-of-fit index = 0.92942
>
>
>
>
> Mientras que mi función devuelve 1 y la segunda definición del GFI da 0.87.
>
> ¿alguna idea, bibliografía??
Más información sobre la lista de distribución R-help-es