[R-es] GFI en modelos estructurales con lavaan

José Luis Cañadas canadasreche en gmail.com
Jue Mayo 3 11:12:38 CEST 2012


Hola.

Añado algunas funciones más para calcular el AGFI ,GFI y PNFI, por si le 
sirven a alguien. (tiene que estar cargado el paquete lavaan)

# bondad de ajuste para modelos lavaan

GFI <- function (modelo) {

   # fitted matrix
   matriz.sigma <- fitted(modelo)$cov
   # inverse
   matriz.sigma.inv <- solve(matriz.sigma)

   #observed matrix
   matriz.muestral <- modelo en Sample@cov[[1]]

   # auxiliary matrix
   A <- matriz.sigma.inv %*% (matriz.muestral - matriz.sigma)
   A <- A %*% A
   B <- matriz.sigma.inv %*% matriz.muestral
   B <- B %*% B


   GFI <- 1- sum(diag(A))/sum(diag(B))
   return(GFI)
}


AGFI <- function(modelo){
   n <- modelo en Model@nvar
   df <- modelo en Fit@test[[1]]$df
   AGFI <-  1 - n * (n+1) / (2*df) * (1-GFI(modelo))
   AGFI
}

PGFI <- function(modelo){
   df0<-modelo en Model@nvar*(modelo en Model@nvar-1)/2
   dfmin <- modelo en Fit@test[[1]]$df
   pgfi <- dfmin/df0*GFI(modelo)
}

PNFI <- function(modelo){
   df0<-modelo en Model@nvar*(modelo en Model@nvar-1)/2
   dfmin <- modelo en Fit@test[[1]]$df
   f0 <- fitMeasures(modelo,'baseline.chisq')
   fmin <- fitMeasures(modelo,'chisq')
   pnfi <- dfmin/df0*(f0-fmin)/f0
   pnfi
}
medidasAjuste <- function(modelo){
   medidas <- fitMeasures(modelo,'all')
   medidas['gfi'] <- GFI(modelo)
   medidas['agfi'] <- AGFI(modelo)
   medidas['pgfi'] <- PGFI(modelo)
   medidas['pnfi'] <- PNFI(modelo)
   medidas
}



Más información sobre la lista de distribución R-help-es