[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