Skip to content
This repository

semTools: Useful tools for structural equation modeling

The goal of this package is to collect useful functions for structural equation modeling in a single, easily accessible place. Everyone is invited to send functions to us and we will maintain the functions for you. Click here for the list of all current functionality of this package and the near future development.


[March 31, 2014] Latest Update: semTools, Version 0.4-3

This version is available in KRAN. This version is required if users use lavaan 0.5-16. Contributed by Ed Merkle, the kd function is added to implement the Kaiser-Dickman (1962) algorithm for data generation. Contributed by Terry Jorgensen, the bsBootMiss function is added to implement the Bollen-Stine bootstrap with missing observations by the method proposed by Savalei and Yuan (2009). He also provided the net function to compare models whether they are equivalent or nested. This method is provided by Bentler and Satorra (2010). This version also fixes the problem of the auxiliary function that the output cannot be run by the parameterEstimates function. The runMI function provides an appropriate error when the number of convergent results across imputed data sets is not over 1.

[June 10, 2013] Latest Update: semTools, Version 0.4-1

This version is available in KRAN. This version fixes the problem of the auxiliary function that cannot account for nonlinear constraints or defined parameters. The efaUnrotate function has the argument to add a list of auxiliary variables to account for missing data. The default of the runMI is to not combine chi-square values if saturate models are specified.

[May 3, 2013] Latest Update: semTools, Version 0.4-0

This version is available in CRAN and KRAN. This version adds the methods to implement exploratory factor analysis (EFA) by the lavaan package. The efaUnrotate function is used to fit an unrotated EFA model. Then, the orthRotate, oblqRotate, or funRotate functions can be used to rotate the standardized loadings from the unrotated solution. Fitting EFA model by the lavaan package allows users to use functionality of the lavaan package, such as scaled chi-square values, diagonal weighted least square for categorical indicators, or full information maximum likelihood. The imposeStart function is added to use parameter estimates of an analysis result as starting values of additional analysis. For example, the parameter estimates from a CFA model can be used as starting values for a multitrait-multimethod model. The compareFit function is also added to build a template for comparing multiple nested and nonnested models in a nice table format. The table can be exported to a file (via the saveFile function) or a clipboard (via the clipboard function). The bug of the parcelAllocation and moreFitIndices functions are also fixed.


Everyone is invited to be a developer! Here is the list of current developers.


Sunthud Pornprasertmanit

Patrick Miller

Alexander Schoemann


The project is still under development. The package can be installed by copying this line into the R program:


If you are interested in the source code, please click the code tab. You may install the testing recently developed version from KRAN (KU R Archive Network) by 1) making sure you have the lavaan package in your personal library and 2) copying this line into R program:

install.packages("semTools", repos="", type="source")

Some functions require the OpenMx package. This package is not available on CRAN. Please follow this link to see the download instruction.

Please report any bugs or give me any suggestions by email.


Version History


The development of semTools has been supported by the University of Kansas Center for Research Methods and Data Analysis.

Something went wrong with that request. Please try again.