A First Look at Lavaan

Published on January 2017 | Categories: Documents | Downloads: 52 | Comments: 0 | Views: 461
of 14
Download PDF   Embed   Report

Comments

Content

www.structuralequations.org presents!

A First Look at the lavaan R Package for Classical Structural Equation Modeling

last updated: July 31, 2013

1

Objective of this tutorial (Tutorial #1)
The objective in this tutorial is to introduce first-time lavaan users to the basic resources for the package. In addition to providing some links to on-line resources, this tutorial illustrates a few of the most basic lavaan commands and output. This tutorial requires preexisting knowledge of R, but the lavaan syntax is both familiar and largely stand-alone, so one does not have to be an expert to start using lavaan quickly.

2

A first look at lavaan
“lavaan” is an R package for classical structural equation modeling. The basic description of the package at the R website can be found at: http://cran.r-project.org/web/packages/lavaan/lavaan.pdf The developer’s website for lavaan is: http://lavaan.ugent.be/?q=node/2 At the developer’s website you will find a number of useful resources. In addition to those items, there is a Google Group where you can usually get quick answers to your coding issues. https://groups.google.com/forum/#!forum/lavaan
3

A first look at lavaan syntax
In addition to this tutorial, you will want to download R code and data for tutorial #1 at the following url: http://www.structuralequations.com/LavaanTutorials.html Our first model:
age firesev

The lavaan equation for this model is: ‘cover ~ age + firesev’

cover

ec

4

“A_First_Look_at_lavaan.R*”
*note: you can open .R files (or .r files) with any text reader.
### A FIRST LOOK AT LAVAAN # from www.structuralequations.org # This code accompanies tutorial "Lavaan_FirstLook.pdf" # # # # DATA and example used in this demonstration from Grace and Keeley (2006) Ecol. Apps. 16:503-514. download:(http://www.werc.usgs.gov/OLDsitedata/seki/pdfs /k2006_grace_sem_ea.pdf)

# Note: comments are in regular font, commands in bold. # Set your working directory setwd("F:/Documents/LavaanTutorials") # Load data and name file “k.dat” k.dat<-read.csv("./Keeley_rawdata_select4.csv") # Examine contents of keeley data file names(k.dat) head(k.dat)

5

“A_First_Look_at_lavaan.R” (cont.)
R code continued . . .
### Load Libraries library(lavaan) ### Lavaan syntax for a single-equation ################ # Write lavaan code for this single equation model mod1 <- 'cover ~ age + firesev' # Fit the model (i.e. est. parameters) mod1.fit <- sem(mod1, data=k.dat)

# Output a summary of the computed results summary(mod1.fit, rsq=T) # rsq=T means output the r-sqr
########################################################

Note: exogenous variables are automatically allowed to freely intercorrelate in lavaan.

6

Output from single-equation model
R output
Warning message: In getDataFull(data = data, group = group, group.label = group.label, : lavaan WARNING: some observed variances are (at least) a factor 100 times larger than others; please rescale

# Fix the data summary(k.dat$cover); summary(k.dat$age); summary(k.dat$firesev) k.dat$age <- k.dat$age/100 # scale age variable k.dat$firesev <- k.dat$firesev/10 # scale firesev # then rerun the above model

7

Output from single-equation model
lavaan (0.5-12) converged normally after Number of observations Estimator Minimum Function Test Statistic Degrees of freedom P-value (Chi-square) Estimate Regressions: cover ~ age firesev Variances: cover R-Square: cover Std.err Z-value 1 iterations 90 ML 0.000 0 1.000 P(>|z|)

-0.483 -0.672

0.264 0.201

-1.833 -3.353

0.067 0.001

0.078

0.012

0.220

8

Output from single-equation model (annotated in red)
lavaan (0.5-12) converged normally after Number of observations 1 iterations 90

Estimator ML Minimum Function Test Statistic (i.e. chi-sqr) 0.000 Degrees of freedom (model is saturated) 0 P-value (Chi-square) 1.000 Estimate Std.err Z-value P(>|z|) (raw est.) (ML t-value) -0.483 -0.672 0.264 0.201 -1.833 -3.353 0.067 0.001

Regressions: cover ~ age firesev

Variances:(for endogenous vars, these are error variances) cover 0.078 0.012 R-Square: cover

0.220

9

A second look at lavaan syntax
Here we look at a model that requires two equations, one for each endogenous variable. Our second model:
age

The lavaan equation for this model is: 'cover ~ firesev firesev ~ age'

firesev

ec

cover

ec 10

A second look at lavaan syntax
### Lavaan multi-equation model ######################### # Lavaan model: separate line for each equation; # whole model is enclosed in quotes. # Model code mod2 <- 'cover ~ firesev firesev ~ age' # Fit model mod2.fit <- sem(mod2, data=k.dat)

# Output results summary(mod2.fit, rsq=T)

11

Output from two-equation model (fit measures)
lavaan (0.5-12) converged normally after Number of observations Estimator Minimum Function Test Statistic Degrees of freedom P-value (Chi-square) 19 iterations 90 ML 3.297 1 0.069

12

Output from two-equation model (parameter estimates)
Parameter estimates: Information Standard Errors Estimate Regressions: cover ~ firesev firesev ~ age Variances: cover firesev Std.err Z-value Expected Standard P(>|z|)

-0.839 0.597

0.182 0.124

-4.611 4.832

0.000 0.000

0.081 0.021

0.012 0.003

R-Square:
cover firesev 0.191 0.206

13

End of First Look.

14

Sponsor Documents

Or use your account on DocShare.tips

Hide

Forgot your password?

Or register your new account on DocShare.tips

Hide

Lost your password? Please enter your email address. You will receive a link to create a new password.

Back to log-in

Close