Leerpad
Structural equation modeling (SEM) stelt ons in staat om causale relaties tussen variabelen te onderzoeken en te begrijpen hoe elke variabele bijdraagt aan de algehele prestatie. SEM is een krachtig hulpmiddel dat factoranalyse en meervoudige regressie combineert om relaties tussen meerdere variabelen te analyseren. Dat lijkt een beetje op hoe we in het dagelijks leven kijken naar hoe factoren zoals houding, zelfvertrouwen en communicatieve vaardigheden samen de prestatie tijdens een sollicitatiegesprek beïnvloeden.
Laten we SEM, de toepassingen en praktische voorbeelden in Python verkennen. Als je nieuw bent met enkele kernideeën, zoals het concept van latente factoren, probeer dan ook onze cursus Factoranalyse.
Wat is structural equation modeling?
Structural equation modeling geeft de causale relaties weer tussen latente en geobserveerde variabelen. De geobserveerde variabelen zijn wat we direct kunnen meten. Latente constructen worden afgeleid en niet direct gemeten.
Om deze relaties effectief vast te leggen, is SEM verdeeld in twee hoofdcomponenten: het meetmodel en het structurele model. Het meetmodel specificeert de relaties tussen geobserveerde variabelen en hun bijbehorende latente variabelen, terwijl het structurele model de relaties tussen latente variabelen specificeert.
Waarom gebruiken onderzoekers structural equation modeling?
Statistische technieken zoals correlatie en regressie zijn niet efficiënt voor het bestuderen van complexe multivariate relaties. SEM is geschikt voor het modelleren van complexe, veelzijdige constructen die met meetfouten worden gemeten. Het is ook nuttig omdat het helpt om een systeem van relaties te specificeren. Traditionele methoden helpen ons een afhankelijke variabele en een set voorspellers te bestuderen. Hoewel correlatie geen causaliteit is, helpt SEM ons de causale relatie tussen de geobserveerde variabele en latente constructen te begrijpen.
Enkele toepassingen van SEM zijn onder andere:
- Sociale wetenschappen: SEM kan worden gebruikt om de invloed van culturele waarden op menselijk gedrag in verschillende samenlevingen te bestuderen.
- Onderwijs: SEM kan worden gebruikt om de ervaring van studenten in graduate-opleidingen te onderzoeken. Bijvoorbeeld om uitvalcijfers van promovendi in de VS te modelleren.
- Ziekterisicomodellering: SEM kan worden toegepast op ziekterisicomodellering om het risico op ziekten zoals diabetes of hartziekten te bepalen.
Kernconcepten van structural equation modeling
Hier zijn enkele van de kernconcepten in structural equation modeling:
- Geobserveerde variabelen: Geobserveerde variabelen worden direct in het onderzoek gemeten. Voorbeelden zijn antwoorden op vragen in een vragenlijst.
- Latente variabelen: Latente variabelen worden afgeleid uit de geobserveerde variabelen in het onderzoek. Bijvoorbeeld het intelligentieniveau in de beoordeling van iemands schoolprestaties.
- Endogene variabelen: Dit zijn ook wel afhankelijke variabelen. Bijvoorbeeld, in y = x1 + x2 + x3 is y de endogene variabele omdat deze afhangt van de waarden van x1, x2, …, xn.
- Exogene variabelen: Dit zijn onafhankelijke variabelen. Bijvoorbeeld, de slaaptijd van een atleet is onafhankelijk van het type racefiets.
- Meetmodel: meet de relaties tussen latente constructen en geobserveerde variabelen. Het confirmatieve factoranalyse-raamwerk test de onderliggende hypothese van het meetmodel.
- Structureel model: Dit model onderzoekt causale relaties tussen latente constructen. Het wordt schematisch weergegeven met padanalyse.
Statistische aannames bij structural equation modeling
Hoewel SEM uitstekend is voor het modelleren van causale relaties, zijn er enkele onderliggende aannames over de data. De aannames omvatten:
- Lineariteit: SEM gaat uit van lineaire relaties tussen de latente constructen en de geobserveerde variabelen. Het is niet geschikt voor niet-lineaire datasets, omdat het onjuiste resultaten kan geven.
- Multicollineariteit: SEM gaat uit van minimale multicollineariteit tussen geobserveerde variabelen. Zo kunnen de slaaptijd en voeding van een sporter sterk gecorreleerd zijn. SEM veronderstelt weinig correlatie tussen dergelijke variabelen.
- Steekproef aannames: Voor SEM-taken heb je een voldoende steekproefomvang van minimaal 200 nodig voor goede resultaten. Je hebt geen enorme datasets zoals bij LLM’s nodig, maar een kleinere steekproef kan onnauwkeurige resultaten opleveren.
- Multivariate normaliteit: SEM gaat ervan uit dat de data multivariaat normaal verdeeld is. Het is niet geschikt voor niet-normale data. Je kunt tests uitvoeren om de normaliteit te controleren.
- Ontbrekende data: SEM gaat ervan uit dat de data compleet is. Een manier waarop SEM met ontbrekende data omgaat is door aan te nemen dat data willekeurig ontbreekt. Ontbrekende data kan de schatting van het model verstoren.
- Specificatie fout: SEM gaat ervan uit dat het gedefinieerde model correct is gespecificeerd. Het veronderstelt dat het meet- en structurele model ten minste alle relevante variabelen bevatten.
Typen structural equation models
Er zijn verschillende typen structural equation modeling. Zonder specifieke volgorde zijn dat:
- Padanalyse: Dit is een type SEM en een uitbreiding van regressiemodellen die alleen met geobserveerde variabelen (ook wel predictors) werken. Padendigrammen geven deze relaties visueel weer met pijlen om de richting aan te geven.
- Confirmatieve factoranalyse (CFA): Dit is een type SEM dat wordt gebruikt om de geldigheid van meetmodellen te testen. Het verifieert of de geobserveerde data past bij een vooraf gespecificeerd model.
- Structurele modellen met latente variabelen (LVSM): Modelleert de relaties tussen latente constructen en geobserveerde variabelen. Het modelleert ook de relatie tussen de latente constructen zelf.
- Latente groeimodellen: Latente groeimodellen zijn een gespecialiseerd type SEM dat zich richt op het modelleren van verandering in de tijd. Ze worden gebruikt om de trajecten van latente variabelen (bijv. psychologische kenmerken of gedrag) te bestuderen en hoe die zich ontwikkelen, rekening houdend met veranderingen op individueel en groepsniveau.
Voorbeeld van structural equation modeling in Python
Een SEM-model ontwikkelen in Python vergt maar een paar stappen; we kunnen de bibliotheek semopy gebruiken om het eenvoudig te maken. In de volgende tutorial gaan we ervan uit dat je bekend bent met de Python-syntax.
Benodigde libraries installeren
pip install semopy
Let op: Voor macOS-gebruikers. Als je deze fout tegenkomt tijdens het installeren van het pakket:
ExecutableNotFound: failed to execute PosixPath('dot'), make sure the Graphviz executables are on your systems' PATH
Installeer graphviz via Homebrew in je terminal
brew install graphviz
Constructen definiëren
Voordat we onze dataset downloaden en ons model maken, nemen we even de tijd om al onze constructen te definiëren. We moeten dus de latente en geobserveerde variabelen identificeren. In het geval van onze dataset zijn de geobserveerde variabelen aan ons gegeven als gelabelde features en dat zijn x1 tot en met x3 en y1 tot en met y8. De latente variabelen die we willen bestuderen hebben deze namen, die we zullen uitleggen: ind60, dem60, dem65.
Geobserveerde variabelen
-
y1: persvrijheid, 1960 -
y2: vrijheid van politieke oppositie, 1960 -
y3: eerlijkheid van verkiezingen, 1960 -
y4: effectiviteit van gekozen wetgevende macht, 1960 -
y5-y8: dezelfde variabelen alsy1-y4, respectievelijk, gemeten in 1965 -
x1: het bnp per hoofd van de bevolking, 1960 -
x2: het energieverbruik per hoofd van de bevolking, 1960 -
x3: het percentage van de beroepsbevolking in de industrie, 1960
Latente variabelen
-
ind60: exogene latente variabele over industrialisatie. -
dem60: endogene latente variabele over democratie in 1960. -
dem65: endogene latente variabele over democratie in 1965.
Het meetmodel opstellen
Het doel is om een theoretisch model te definiëren dat de relatie tussen de latente constructen en geobserveerde variabelen specificeert.
# Measurement model
ind60 =~ x1 + x2 + x3
demo60 =~ y1 + y2 + y3 + y4
dem65 =~ y5 + y6 + y7 + y8
Het structurele model specificeren
Hier specificeren we de relaties tussen de latente constructen zelf.
# regressions
dem60 ~ ind60
dem65 ~ ind60 + dem60
De correlaties specificeren
Hier willen we variabelen specificeren die sterk met elkaar correleren.
# Correlations
y1 ~~ y5
y2 ~~ y4
y2 ~~ y6
y3 ~~ y7
y4 ~~ y8
y6 ~~ y5
De dataset voorbereiden
Voor deze tutorial gebruiken we de dataset PoliticalDemocracy.csv die door semopy wordt geleverd. Je kunt deze downloaden via deze GitHub-repository.
Import pandas as pd
data = pd.read_csv('PoliticalDemocracy.csv')
Het SEM-model definiëren
We moeten de structurele en meetdefinities combineren in een modelspecificatie.
# Define the SEM model specification
model_spec = """
# Measurement model
ind60 =~ x1 + x2 + x3
dem60 =~ y1 + y2 + y3 + y4
dem65 =~ y5 + y6 + y7 + y8
# regressions
dem60 ~ ind60
dem65 ~ ind60 + dem60
# Correlations
y1 ~~ y5
y2 ~~ y4
y2 ~~ y6
y3 ~~ y7
y4 ~~ y8
y6 ~~ y5
"""
Vervolgens definiëren we het model en passen we de data
import semopy
# Define the model
model = semopy.Model(model_spec)
#Fit the model
model.fit(data)
# Inspect the results
print(model.inspect())
De resultaten interpreteren
We plotten het resultaat van het model om de padrepresentatie te begrijpen. De plot wordt opgeslagen als political_sem_model.png.
semopy.semplot(model, 'political_sem_model.png')
print("SEM Model diagram saved as 'political_sem_model.png'.")
img = plt.imread('political_sem_model.png')
plt.imshow(img)
plt.axis('off')
plt.show()

SEM-padendiagram voor de politieke-democratie-dataset. Bron: afbeelding door de auteur
Het diagram laat zien hoe het pad de latente constructen (in cirkels) en de geobserveerde variabelen relateert. Padcoëfficiënten dichter bij 1 of -1 duiden op sterke relaties tussen variabelen en die nabij 0 op zwakke relaties.
De standaarddeviaties in de tabel vallen binnen het bereik. Grotere waarden kunnen duiden op multicollineariteit of een onjuist gespecificeerd model. De p-waarden bepalen de statistische significantie van de padcoëfficiënten. Een p-waarde kleiner dan 0,05 duidt meestal op een statistisch significant pad. We zien twee gevallen waarin de p-waarde groter is dan 0,05.
Al met al laten de resultaten zien dat ind60 een significante invloed heeft op dem60, dat op zijn beurt een significante invloed heeft op dem65.
Model fit beoordelen
Het veronderstelde model moet overeenkomen met de geobserveerde relaties om de SEM-model fit te beoordelen. Er worden verschillende fit-indices gebruikt om te beoordelen hoe goed het model bij de data past. Hier zijn veelgebruikte:
- Chi-kwadraattoets: Vergelijkt de geobserveerde covariantiematrix met de door het model geïmpliceerde covariantiematrix. Een niet-significante chi-kwadraat duidt op een goede fit.
- Root Mean Square Error of Approximation: Beoordeelt hoe goed het model de data benadert, gecorrigeerd voor modelcomplexiteit. Waarden onder 0,05 en tot 0,08 zijn acceptabel.
Veelvoorkomende uitdagingen en oplossingen in SEM
Enkele veelvoorkomende uitdagingen van de structural equation modeling-techniek zijn de volgende:
- Niet-normaliteit van data: SEM gaat er doorgaans van uit dat de data een normale verdeling volgt. Het gebruik van niet-normale data kan de standaardfouten, p-waarden en fit-indices beïnvloeden, wat leidt tot onbetrouwbare schattingen. Datatransformatietechnieken kunnen worden toegepast om de data te normaliseren.
- Ontbrekende data: Voor SEM is complete data nodig. Ontbrekende data kan tot vertekende resultaten leiden. Je kunt waarschijnlijkheidsbenaderingen zoals full information maximum likelihood (FIML) gebruiken om dit aan te pakken.
- Model fit: Wanneer het veronderstelde model niet past bij de geobserveerde data, leidt dat tot misleidende interpretaties over de relatie tussen variabelen. Je kunt theoriegedreven aanpassingen aan het model doen of modificatie-indices gebruiken.
Conclusie
In dit artikel hebben we SEM uitgebreid besproken, inclusief de toepassingen, implementatie, voordelen en beperkingen. SEM is een krachtig instrument voor het onderzoeken van complexe relaties en causale interacties tussen geobserveerde en latente variabelen. Probeer het eens uit in Python of R voor je volgende analyseproject.
Als je geïnteresseerd bent in het idee van structural equation modeling maar de voorkeur geeft aan R, kun je de cursus Structural Equation Modeling with lavaan in R volgen, met gedetailleerde stapsgewijze instructies. Je kunt ook starten met het Statistician in R-carrièrepad. Als je je aan Python commit, lees dan de semopy-documentatie voor meer use-cases van SEM in Python. Ben je tot slot geïnteresseerd in geavanceerde Python-modellen die zowel voorspellen als verklaren, en wil je ideeën over modelarchitectuur en featureselectie verkennen, probeer dan ons carrièrepad Machine Learning Scientist in Python.
Structural Equation Modeling FAQs
Wat is structural equation modeling (SEM) en hoe werkt het?
Structural equation modeling is een multivariate statistische techniek die wordt gebruikt om complexe relaties tussen latente en geobserveerde variabelen te analyseren.
Wat is het verschil tussen confirmatieve factoranalyse (CFA) en structural equation modeling (SEM)?
Confirmatieve factoranalyse (CFA) is een type SEM dat zich richt op de relaties tussen latente variabelen en hun bijbehorende geobserveerde variabelen. SEM gaat daarentegen verder dan meetmodellen en omvat zowel structurele als meetcomponenten, waardoor je complexe oorzaak-gevolgrelaties tussen latente en geobserveerde variabelen kunt analyseren.
Wat zijn de belangrijkste stappen bij het uitvoeren van SEM-analyse?
De belangrijkste stappen in SEM-analyse zijn: (1) Definieer de theoretische relaties tussen variabelen; (2) Identificeer het model en zorg dat het aantal datapunten groter is dan het aantal parameters; (3) Pas het model op de data; (4) Beoordeel de model fit met indices zoals chi-kwadraat of RMSEA; en (5) Interpreteer de resultaten door padcoëfficiënten en model fit-indicatoren te bekijken.
Wat zijn enkele uitdagingen bij het gebruik van SEM?
Enkele veelvoorkomende uitdagingen zijn modelselectie — waarbij het model mogelijk niet genoeg datapunten heeft om parameters te schatten —, multicollineariteit tussen variabelen, een slechte model fit — waarbij de data niet goed aansluit bij het veronderstelde model —, en steekproefomvang, omdat kleine steekproeven tot onbetrouwbare resultaten kunnen leiden.
Welk Python-pakket kan ik gebruiken voor SEM?
semopy is een Python-pakket dat bewerkingen voor structural equation modeling ondersteunt.

