## data misdat <- read.csv("misdat_example.csv") # FIML approach 1 --------------------------------------------------------- # subset data for fiml data_fiml <- misdat %>% dplyr::select(smd,v,V1) # Create RAM formualtion ## A A1 <- matrix(c( 0,0,1,0, 0,0,0,1, 0,0,0,"0*b1", 0,0,0,0), byrow=TRUE, ncol=4) dimnames(A1) <- list(c("smd","V1","delta","eta1"), c("smd","V1","delta", "eta1")) A1 <- as.mxMatrix(A1) ## S S1 <- mxMatrix("Symm", nrow=4, ncol=4, values=0, byrow=TRUE, free=c(FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE), labels=c("v", NA, NA, NA, NA, "Tau2", NA, NA, NA, "VarV1"), name="S1") ## Create an M matrix for the means M1 <- matrix(c(0,0,"0*b0","0*V1"), nrow=1) dimnames(M1)[[2]] <- c("smd","V1","delta", "eta1") M1 <- as.mxMatrix(M1) ## Create an F matrix to selecting the observed variables F1 <- create.Fmatrix(c(1,1,0,0), name="F", as.mxMatrix=FALSE) dimnames(F1) <- list(c("smd","V1"), c("smd","V1","delta", "eta1")) F1 <- as.mxMatrix(F1) # Fit a model mxmodel <- mxModel("FIML", mxData(data_fiml, type="raw"), A1, S1, F1, M1, mxExpectationRAM("A1","S1","F1","M1", dimnames=c("smd","V1","delta", "eta1")), mxFitFunctionML()) fit <- mxRun(mxmodel, silent = TRUE) # Result sum<-summary(fit) sum$parameters # FIML approach 2 --------------------------------------------------------- # Fit a model fit_fiml <- metaFIML(y = smd, v = v, x = V1, data = misdat) # Result sum_fiml <- summary(fit_fiml) round(sum_fiml$coefficients,3)