setwd(file.path("D:", "Muhammad Yaseen", "Consultancy at UAF", "Iram Jahanzaib", "2012-10-12")) # source('http://openmx.psyc.virginia.edu/getOpenMx.R') library(OpenMx) # library(foreign) # Data <- read.spss(file = "ICT_data1.sav", to.data.frame = TRUE) # save.image(file = "Data.RData") # rm(list=ls(all=TRUE)) load(file = "Data.RData") str(Data) head(Data) names(Data) # The data for this model contain twelve variables.All twelve variables are ordered categorical variables. # use raw data for this model. oneFactorRaw <- Data[c( "z1", "z2", "z3", "z4")] z1 <- factor(x = oneFactorRaw$z1, order = TRUE) z2 <- factor(x = oneFactorRaw$z2, order = TRUE) z3 <- factor(x = oneFactorRaw$z3, order = TRUE) z4 <- factor(x = oneFactorRaw$z4, order = TRUE) oneFactorOrd <- data.frame( z1, z2, z3, z4) oneFactorOrd$z1 <- mxFactor(oneFactorOrd$z1, levels = c(1, 2, 3 ,4, 5)) oneFactorOrd$z2 <- mxFactor(oneFactorOrd$z2, levels = c(1, 2, 3 ,4, 5)) oneFactorOrd$z3 <- mxFactor(oneFactorOrd$z3, levels = c(1, 2, 3 ,4, 5)) oneFactorOrd$z4 <- mxFactor(oneFactorOrd$z4, levels = c(1, 2, 3 ,4, 5)) str(oneFactorOrd) # Model specification # Creating a path centric factor model in which three exogeous factors and one endogeous factor is defined oneFactorModel <- mxModel("Common Factor Model Path Specification", type="RAM" ,mxData( observed=oneFactorOrd ,type="raw" ) , manifestVars=c("z1","z2","z3","z4") ,latentVars="F3" # residual variances ,mxPath( from=c("z1","z2","z3","z4") ,arrows=2 ,free=FALSE ,values=c(1,1,1,1) ,labels=c("e1","e2","e3") ) # latent variance ,mxPath( from="F3" ,arrows=2 ,free=TRUE ,values=1 ,labels ="varF3" ) # factor loadings ,mxPath( from="F3" ,to=c("z1","z2","z3","z4") ,arrows=1 ,free=c(TRUE,TRUE,TRUE, FALSE) ,values=c(1,1,1,1) ,labels=c("RA","Com","Eas","obs") ) # means ,mxPath( from="one", ,to=c("z1","z2","z3","z4","F3") ,arrows=1 ,free=FALSE ,values=0 ,labels=c("meanz1","meanz2","meanz3","meanz4","meanF3") ) ,mxMatrix( type="Full" ,nrow=4 ,ncol=4 ,free=c(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE) ,values=c(-4, -3, -2, -1, 0, 1, 2, 3, 4), ,dimnames=list(c(), c('z1', 'z2', 'z3' , 'z4')) ,byrow=TRUE ,name="thresh" ) ,mxRAMObjective(A="A", S="S", F="F", M="M", thresholds="thresh") ) # close model This model may then be optimized using the mxRun command. oneFactorResults <- mxRun(oneFactorModel) summery(oneFactorFit)