23
Strukturgleichungsmodelle in R mit lavaan Workshop der Giessen R Users Group Geschäftsleitung: Dr. Guido Möser Wissenschaftlicher Beirat: Prof. Dr. Peter Schmidt, Vertretungsprofessor Dr. Gero Schwenk Stand: 23. Februar 2011

Giessen R Users Group - 1. Workshop SEM mit lavaan

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Giessen R Users Group - 1. Workshop SEM mit lavaan

Strukturgleichungsmodelle in R mit lavaan

Workshop der Giessen R Users Group

Geschäftsleitung: Dr. Guido Möser

Wissenschaftlicher Beirat: Prof. Dr. Peter Schmidt, Vertretungsprofessor Dr. Gero Schwenk

Stand: 23. Februar 2011

Page 2: Giessen R Users Group - 1. Workshop SEM mit lavaan

Strukturgleichungsmodellierung in R (1)

• Strukturgleichungsmodellierung in R sind aktuell (Stand Februar 2011) mit drei Paketen möglich:– sem (Structural Equation Modeling) von John Fox -

http://cran.r-project.org/web/packages/sem/index.html• Literatur: Fox, J. (2006). Structural Equation Modeling With the sem Package in R.

Structural Equation Modeling, 13, 465 – 486.• Paketbeschreibung: http://cran.r-project.org/web/packages/sem/sem.pdf

– OpenMx (Advanced Structural Equation Modeling), entwickelt an der Universität Virginia, Department of Psychology

• Projektseite: http://openmx.psyc.virginia.edu/• Handbuch: http://openmx.psyc.virginia.edu/documentation• Paketbeschreibung: http://openmx.psyc.virginia.edu/documentation• Hinweis: aktuell noch nicht auf dem CRAN, Installation in R mittels:

source('http://openmx.psyc.virginia.edu/getOpenMx.R')• Mächtig, aber anspruchsvoll in der Programmierung

Page 3: Giessen R Users Group - 1. Workshop SEM mit lavaan

Strukturgleichungsmodellierung in R (2)

– lavaan (latent variable analysis) von Yves Rosseel - http://lavaan.ugent.be/• Projektseite: http://lavaan.ugent.be/• Paketbeschreibung: http://cran.r-project.org/web/packages/lavaan/lavaan.pdf• Handbuch / Dokumentation:

http://users.ugent.be/~yrosseel/lavaan/lavaanIntroduction.pdf• Vorteile: Syntax eng an R und Mplus® angelehnt• Zahlreiche Schätzer vorhanden:

– ML – maximum likelihood– GLS – generalized least squares – WLS – weighted least squares (aka ADF)– MLM – maximum likelihood estimation with robust standard errors and a

Santorra-Bentler scaled chi-square test statistic– MLF – maximum likelihood estimation with standard errors based on first-

order-derivatives– MLR – maximum likelihhod estimation with robust ‚Huber-White‘ standard

errors, and a scaled Yuan-Bentler statistic• Fehlende Werte (bei MCAR / MAR): FIML-Prozedur vorhanden

Page 4: Giessen R Users Group - 1. Workshop SEM mit lavaan

Vorteile von lavaan im Überblick

• Kostenlose Verfügbarkeit• Einfache Nutzung• Viele Schätzer vorhanden, die in sem() und OpenMx noch nicht zur

Verfügung stehen, teilweise in kommerziellen Paketen auch nicht vorhanden sind (MLM, MLF, MLR)

• Adäquater Umgang mit fehlenden Werten (FIML)• Gruppenvergleiche• Meanstructures-Option: Zugriff auf Mittelwerte/Intercepts im Modell• Ausgabe der üblichen Parameter nach dem Modellfit (Fit Measures /

Modification Indices (MI) + Expected Parameter Changes (EPC)

Zukünftig sind noch weitere Features geplant (z.B. WLSMV Approach, IRT Modelle, Multilevel etc.)

Quelle: http://lavaan.ugent.be/?q=node/6

Page 5: Giessen R Users Group - 1. Workshop SEM mit lavaan

Möglichkeiten von lavaan

• Konfirmatorische Faktorenanalyse (CFA)– Funktion cfa()

• Strukturgleichungsmodellierung– Funktion sem()

• Latente Wachstumskurven– Funktion growth()

• Item Response Modelle – Aktuell noch nicht entwickelt

• Latente Klassen und Mixture Modelle– Aktuell noch nicht entwickelt

• Multilevel Modelle– Aktuell noch nicht entwickelt

Quelle: http://users.ugent.be/~yrosseel/lavaan/lavaanIntroduction.pdf, Seite 2ff.

Page 6: Giessen R Users Group - 1. Workshop SEM mit lavaan

Syntax am Beispiel der Webseite

library(lavaan)

model <- '   # latent variable definitions     ind60 =~ x1 + x2 + x3     dem60 =~ y1 + y2 + y3 + y4     dem65 =~ y5 + y6 + y7 + y8   # regressions     dem60 ~ ind60     dem65 ~ ind60 + dem60   # residual covariances     y1 ~~ y5     y2 ~~ y4 + y6     y3 ~~ y7     y4 ~~ y8     y6 ~~ y8'fit <- sem(model, data=PoliticalDemocracy)summary(fit)Quelle: http://lavaan.ugent.be/?q=node/6

Page 7: Giessen R Users Group - 1. Workshop SEM mit lavaan

Syntax - Übersicht

• In lavaan wird ein Modell als einfaches Set von Regressionsformeln umgesetzt– Regressiondmodelle / Manifeste Variablen / Strukturmodelle

y ~ x1 + x2 + f

– Messmodelle (Latent Variablen)f1 =~ y1 + y2 + y3

– Varianzen und Kovarianzen

y1 ~~ y1y1 ~~y2

– Interceptsy1 ~ 1

Quelle: http://users.ugent.be/~yrosseel/lavaan/lavaanIntroduction.pdf, Seite 2ff.

Page 8: Giessen R Users Group - 1. Workshop SEM mit lavaan

Syntax – Formula Types

Formula Type Operator Mnemonic

latent variable definition

=~ is measured by

regression ~ is regressed on

(residual) (co)variance

~~ is correlated with

Intercept ~ 1 intercept

Quelle: http://users.ugent.be/~yrosseel/lavaan/lavaanIntroduction.pdf, Seite 2ff.

Page 9: Giessen R Users Group - 1. Workshop SEM mit lavaan

Modellübergabe in R

• Zwei Optionen– Modell kann in R direkt in ein Objekt geschrieben werden, z.B. myModel– Modell kann in eine Textdatei geschrieben und mit dem Befehl readLines eingelesen

werden

• Option 2: readLines()

> myModel <- readLines("/mydir/myModel.lav")

Quelle: http://users.ugent.be/~yrosseel/lavaan/lavaanIntroduction.pdf, Seite 3ff.

Option 1: Direkt in ein Objekt> myModel <- ' #regressions

y1 + y2 ~ f1 + f2 + x1

# latent variable def‘sf1 =~ y1 + y2 + y3

# variances and cov‘sy1 ~~ y1y1 ~~ y2

# interceptsy1 ~ 1 '

Page 10: Giessen R Users Group - 1. Workshop SEM mit lavaan

Beispiel Konfirmatorische Faktorenanalyse (CFA)

• Beispiel von Holzinger & Swineford (1939)– Dokumentation in lavaan: > ?

HolzingerSwineford1939– Ability Test Scores von Schülern der 7. und

8. Klasse (Details in Dokumentation)

• lavaan Modell-Syntax (Messmodelle:)visual =~ x1 + x2 + x3textual =~ x4 + x5 + x6speed =~ x7 + x8 + x9

• Hinweis:– Die Kovarianzen zwischen den latenten

Konstrukten (visual, textual und speed) müssen nicht explizit freigesetzt werden, dies geschieht per default (äquivalent zu Mplus®)!

Quelle: http://users.ugent.be/~yrosseel/lavaan/lavaanIntroduction.pdf, Seite 3ff.

Page 11: Giessen R Users Group - 1. Workshop SEM mit lavaan

Drei Schritte, um ein Modell in lavaan zu schätzen

Schritt 1

•Modellspezifizierung mittels Modell-Syntax

Schritt 2

•Fit des Modells (cfa(), sem(), growth())

Schritt 3

•Ergebnisinspektion (summary())

Page 12: Giessen R Users Group - 1. Workshop SEM mit lavaan

Beispiel Konfirmatorische Faktorenanalyse (CFA)

• Schritt 1: Modellspezifikation mittels Modell-Syntax> # 1. Modellspezifikation> HS.model <- ' visual =~ x1 + x2 + x3+ textual =~ x4 + x5 + x6+ speed =~ x7 + x8 + x9 '

• Schritt 2: Fit des Modells> # 2. Fit des Modells> fit <- cfa(HS.model, data=HolzingerSwineford1939)

• Schritt 3: Ergebnisinspektion> # 3. Ergebnisinspektion> summary(fit, fit.measures=TRUE, standardized = TRUE)

Quelle: http://users.ugent.be/~yrosseel/lavaan/lavaanIntroduction.pdf, Seite 3ff.

Page 13: Giessen R Users Group - 1. Workshop SEM mit lavaan

Ergebnisse – Schritt 3 – Auswahl (1)

Quelle: R Output des Beispielmodells

Page 14: Giessen R Users Group - 1. Workshop SEM mit lavaan

Ergebnisse – Schritt 3 – Auswahl (2)

Quelle: R Output des Beispielmodells

Page 15: Giessen R Users Group - 1. Workshop SEM mit lavaan

Ergebnisse – Schritt 3 – Auswahl (3)

Quelle: R Output des Beispielmodells

Page 16: Giessen R Users Group - 1. Workshop SEM mit lavaan

Beispiel Strukturgleichungsmodell – sem()

• Datensatz PoliticalDemocracy in lavaan> ?PoliticalDemocracy

lavaan Syntax# latent variable definitionsind60 =~ x1 + x2 + x3dem60 =~ y1 + y2 + y3 + y4dem65 =~ y5 + y6 + y7 + y8# regressionsdem60 ~ ind60dem65 ~ ind60 + dem60# residual covariancesy1 ~~ y5y2 ~~ y4 + y6y3 ~~ y7y4 ~~ y8y6 ~~ y8

Quelle: http://users.ugent.be/~yrosseel/lavaan/lavaanIntroduction.pdf, Seite 3ff.

Page 17: Giessen R Users Group - 1. Workshop SEM mit lavaan

Fixing Parameters

• Per default wird die erste Faktorladung auf 1 gesetzt.

• Die anderen drei Faktorladungen werden frei geschätzt

• Sollen auch die drei verbleibenden Faktorladungen auf 1 gesetzt werden, so geschieht dies wie folgt:

> f =~ y1 + 1*y2 + 1*y3 + 1*y4

• Faktorladungen können mittels NA freigesetzt werden

Quelle: http://users.ugent.be/~yrosseel/lavaan/lavaanIntroduction.pdf, Seite 9ff.

Page 18: Giessen R Users Group - 1. Workshop SEM mit lavaan

Orthogonalität zwischen den Faktoren

• Per Default werden die Kovarianzen / Korrelationen zwischen den latenten Konstrukten frei geschätzt.

• Möchte man Orthogonalität zwischen den Faktoren (überprüfen), so kann dies durch den speziellen Befehl orthogonal=TRUE erreicht werden

> fit.HS.ortho <- cfa(HS.model, data = HolzingerSwineford1939, orthogonal = TRUE)

Quelle: http://users.ugent.be/~yrosseel/lavaan/lavaanIntroduction.pdf, Seite 9ff.

Page 19: Giessen R Users Group - 1. Workshop SEM mit lavaan

Varianzen aller latenter Konstrukte gleichsetzen

• Sollen die Varianzen aller latenter Konstrukte gleichgesetzt werden (in der Grafik alle mit a bezeichnet), so geschieht dies mit dem speziellen Befehl std.lev = TRUE

> fit.HS.ortho <- cfa(HS.model, data = HolzingerSwineford1939, std.lv = TRUE)

• In diesem Fall werden die per default auf 1 fixierten Faktorenladungen frei geschätzt!

Quelle: http://users.ugent.be/~yrosseel/lavaan/lavaanIntroduction.pdf, Seite 9ff.

Page 20: Giessen R Users Group - 1. Workshop SEM mit lavaan

Startwerte festlegen

• Startwerte sind per default auf 1 gesetzt.• Diese können geändert werden, indem in

Klammern die Startwerte vor die manifesten Konstrukte gesetzt werden:

visual =~ x1 + start(0.8)*x2 + start(1.2)*x3textual =~ x4 + start(0.5)*x5 + start(1.0)*x6speed =~ x7 + start(0.7)*x8 + start(1.8)*x9

Quelle: http://users.ugent.be/~yrosseel/lavaan/lavaanIntroduction.pdf, Seite 9ff.

Page 21: Giessen R Users Group - 1. Workshop SEM mit lavaan

Equality Constraints

• Das Gleichsetzen von Parametern (Equality Constraints) erfolgt durch folgenden Befehl:

visual =~ x1 + x2 + equal("visual=~x2")*x3 textual =~ x4 + x5 + x6speed =~ x7 + x8 + x9

• Hier im Beispiel rechts sind die entsprechenden Parameter mit a gekennzeichnet

Quelle: http://users.ugent.be/~yrosseel/lavaan/lavaanIntroduction.pdf, Seite 9ff.

Page 22: Giessen R Users Group - 1. Workshop SEM mit lavaan

Vielen Dank für Eure Aufmerksamkeit!

Page 23: Giessen R Users Group - 1. Workshop SEM mit lavaan

Eindrücke vom 1. Workshop SEM mit lavaan