Programma
Il modeling a equazioni strutturali (SEM) ci permette di indagare le relazioni causali tra variabili e capire come ciascuna contribuisce alle prestazioni complessive. Il SEM è uno strumento potente che combina l’analisi fattoriale e la regressione multipla per analizzare le relazioni tra più variabili. È un po’ simile a quando, nella vita quotidiana, consideriamo come fattori come postura, sicurezza e capacità comunicative influiscano collettivamente su qualcosa come la performance in un colloquio.
Ora esploriamo il SEM, le sue applicazioni e alcuni esempi pratici in Python. Se sei alle prime armi con alcune idee centrali, come il concetto di fattori latenti, puoi anche provare il nostro corso di Analisi Fattoriale.
Che cos’è il modeling a equazioni strutturali?
Il modeling a equazioni strutturali rappresenta le relazioni causali tra variabili latenti e osservate. Le variabili osservate sono ciò che possiamo misurare direttamente. I costrutti latenti sono inferiti e non misurati direttamente.
Per catturare efficacemente queste relazioni, il SEM è suddiviso in due componenti principali: il modello di misura e il modello strutturale. Il modello di misura specifica le relazioni tra le variabili osservate e le corrispondenti variabili latenti, mentre il modello strutturale specifica le relazioni tra le variabili latenti.
Perché i ricercatori usano il modeling a equazioni strutturali?
Tecniche statistiche come correlazione e regressione sono poco efficienti nello studio di relazioni multivariate complesse. Il SEM è adatto a modellare costrutti complessi e sfaccettati misurati con errore. È utile anche perché permette di specificare un sistema di relazioni. I metodi tradizionali ci aiutano a studiare una variabile dipendente e un insieme di predittori. Sebbene la correlazione non implichi causalità, il SEM ci aiuta a comprendere la relazione causale tra la variabile osservata e i costrutti latenti.
Alcune applicazioni del SEM includono:
- Scienze sociali: il SEM può essere usato per studiare l’influenza dei valori culturali sul comportamento umano in diverse società.
- Istruzione: il SEM può essere usato per indagare l’esperienza degli studenti nelle scuole di specializzazione. Per esempio, per modellare i tassi di abbandono dei dottorandi negli USA.
- Modellazione del rischio di malattia: il SEM può essere applicato alla modellazione del rischio per determinare il rischio di malattie come diabete o cardiopatie.
Concetti chiave del modeling a equazioni strutturali
Ecco alcuni concetti fondamentali nel modeling a equazioni strutturali:
- Variabili osservate: sono variabili misurate direttamente nello studio. Esempi sono le risposte ai campi di un questionario.
- Variabili latenti: sono variabili inferite a partire dalle variabili osservate nello studio. Per esempio, il livello di intelligenza nella valutazione del rendimento accademico di uno studente.
- Variabili endogene: sono note anche come variabili dipendenti. Per esempio, in y = x1 + x2 + x3, y è la variabile endogena poiché dipende dai valori di x1, x2, …, xn.
- Variabili esogene: sono variabili indipendenti. Per esempio, il tempo di sonno di un atleta è indipendente dal tipo di bici da corsa.
- Modello di misura: misura le relazioni tra costrutti latenti e variabili osservate. Il framework di analisi fattoriale confermativa testa l’ipotesi alla base del modello di misura.
- Modello strutturale: indaga le relazioni causali tra costrutti latenti. È rappresentato graficamente tramite path analysis.
Assunzioni statistiche del modeling a equazioni strutturali
Sebbene il SEM sia ottimo per modellare relazioni causali, prevede alcune assunzioni sui dati. Tra queste:
- Linearità: il SEM assume relazioni lineari tra costrutti latenti e variabili osservate. Non è adatto a dataset non lineari perché può fornire risultati errati.
- Multicollinearità: il SEM assume multicollinearità minima tra le variabili osservate. Per esempio, il tempo di sonno e la nutrizione di un concorrente potrebbero essere altamente correlati. Il SEM assume una bassa correlazione tra queste variabili.
- Assunzioni sul campionamento: per compiti SEM serve una dimensione campionaria sufficiente, almeno 200, per ottenere buoni risultati. Non servono dataset enormi come per gli LLM, ma campioni troppo piccoli possono dare risultati inaccurati.
- Normalità multivariata: il SEM assume che i dati seguano una distribuzione normale multivariata. Non è adatto a dati non normali. Puoi eseguire test per verificare la normalità.
- Dati mancanti: il SEM assume che i dati siano completi. Un modo in cui il SEM affronta i dati mancanti è assumere che i dati siano mancanti in modo casuale. I dati mancanti possono interferire con le stime del modello.
- Errore di specificazione: il SEM presume che il modello definito sia specificato correttamente. Assume che i modelli di misura e strutturale contengano almeno tutte le variabili rilevanti.
Tipi di modelli a equazioni strutturali
Esistono diversi tipi di modeling a equazioni strutturali. In ordine sparso, ecco i principali:
- Path analysis: è un tipo di SEM e un’estensione dei modelli di regressione che tratta solo variabili osservate (note anche come predittori). I diagrammi a percorsi rappresentano visivamente queste relazioni usando frecce per indicarne la direzione.
- Analisi fattoriale confermativa (CFA): è un tipo di SEM usato per testare la validità dei modelli di misura. Verifica se i dati osservati si adattano a un modello pre-specificato.
- Modelli strutturali a variabili latenti (LVSM): modellano le relazioni tra costrutti latenti e variabili osservate, e anche le relazioni tra i costrutti latenti stessi.
- Modelli di crescita latente: sono un tipo specializzato di SEM che si concentra sul modellare il cambiamento nel tempo. Si usano per studiare le traiettorie di variabili latenti (ad es. tratti psicologici o comportamenti) e la loro evoluzione, considerando cambiamenti a livello individuale e di gruppo.
Esempio di modeling a equazioni strutturali in Python
Sviluppare un modello SEM in Python richiede solo pochi passaggi; possiamo usare la libreria semopy per semplificare il tutto. Il seguente tutorial presuppone che tu conosca la sintassi di Python.
Installazione delle librerie necessarie
pip install semopy
Nota: per utenti macOS. Se incontri questo errore durante l’installazione del pacchetto:
ExecutableNotFound: failed to execute PosixPath('dot'), make sure the Graphviz executables are on your systems' PATH
Installa graphviz tramite Homebrew nel terminale
brew install graphviz
Definizione dei costrutti
Prima di scaricare il dataset e creare il modello, prendiamoci un minuto per definire tutti i costrutti. Ossia, dobbiamo identificare le variabili latenti e quelle osservate. Nel nostro dataset, le variabili osservate ci sono fornite come feature etichettate e sono da x1 a x3 e da y1 a y8. Le variabili latenti che vogliamo studiare hanno questi nomi, che spiegheremo: ind60, dem60, dem65.
Variabili osservate
-
y1: libertà di stampa, 1960 -
y2: libertà dell’opposizione politica, 1960 -
y3: correttezza delle elezioni, 1960 -
y4: efficacia del legislativo eletto, 1960 -
y5-y8: sono le stesse variabili diy1-y4, rispettivamente, misurate nel 1965 -
x1: PNL pro capite, 1960 -
x2: consumo di energia pro capite, 1960 -
x3: percentuale della forza lavoro nell’industria, 1960
Variabili latenti
-
ind60: variabile latente esogena sull’industrializzazione. -
dem60: variabile latente endogena sulla democrazia nel 1960. -
dem65: variabile latente endogena sulla democrazia nel 1965.
Sviluppo del modello di misura
L’obiettivo è definire un modello teorico per specificare la relazione tra costrutti latenti e variabili osservate.
# Measurement model
ind60 =~ x1 + x2 + x3
demo60 =~ y1 + y2 + y3 + y4
dem65 =~ y5 + y6 + y7 + y8
Specificare il modello strutturale
Qui specificheremo le relazioni tra i costrutti latenti stessi.
# regressions
dem60 ~ ind60
dem65 ~ ind60 + dem60
Specificare le correlazioni
Qui vogliamo specificare variabili fortemente correlate tra loro.
# Correlations
y1 ~~ y5
y2 ~~ y4
y2 ~~ y6
y3 ~~ y7
y4 ~~ y8
y6 ~~ y5
Preparazione del dataset
Per questo tutorial useremo il dataset PoliticalDemocracy.csv fornito da semopy. Puoi scaricarlo visitando questa repository GitHub.
Import pandas as pd
data = pd.read_csv('PoliticalDemocracy.csv')
Definizione del modello SEM
Dobbiamo combinare le definizioni strutturali e di misura in una specifica di modello.
# 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
"""
Poi definiamo il modello e adattiamo i dati
import semopy
# Define the model
model = semopy.Model(model_spec)
#Fit the model
model.fit(data)
# Inspect the results
print(model.inspect())
Interpretazione dei risultati
Traceremo i risultati del modello per comprendere la rappresentazione dei percorsi. Il grafico verrà salvato come 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()

Diagramma dei percorsi SEM per il dataset sulla democrazia politica. Fonte: immagine dell’autore
Il diagramma mostra come i percorsi mettano in relazione i costrutti latenti (nei cerchi) e le variabili osservate. Coefficienti di percorso vicini a 1 o -1 indicano relazioni forti tra le variabili, mentre quelli vicini a 0 indicano relazioni deboli.
Le deviazioni standard nella tabella sono entro l’intervallo. Valori più elevati possono indicare multicollinearità o errata specificazione del modello. I p-value determinano la significatività statistica dei coefficienti di percorso. Un p-value inferiore a 0,05 in genere indica che il percorso è statisticamente significativo. Vediamo 2 casi in cui il p-value è maggiore di 0,05.
In generale, i risultati mostrano che ind60 influenza in modo significativo dem60, che a sua volta influenza significativamente dem65.
Valutare l’aderenza del modello
Per valutare l’aderenza del modello SEM, il modello ipotizzato dovrebbe corrispondere alle relazioni osservate. Si usano vari indici di aderenza per valutare quanto bene il modello si adatti ai dati. Ecco i più comuni:
- Test chi-quadro: confronta la matrice di covarianza osservata con quella implicata dal modello. Un chi-quadro non significativo indica un buon fit.
- Root Mean Square Error of Approximation: valuta quanto bene il modello approssima i dati, tenendo conto della complessità del modello. Valori inferiori a 0,05 e fino a 0,08 sono accettabili.
Sfide comuni e soluzioni nel SEM
Tra le sfide comuni della tecnica del modeling a equazioni strutturali ci sono le seguenti:
- Non normalità dei dati: il SEM in genere assume che i dati seguano una distribuzione normale. Usare dati non normali può influenzare errori standard, p-value e indici di aderenza, portando a stime inaffidabili. Si possono applicare tecniche di trasformazione dei dati per normalizzarli.
- Dati mancanti: per il SEM servono dati completi. I dati mancanti possono portare a risultati distorti. Puoi sfruttare metodi di stima di verosimiglianza come la full information maximum likelihood (FIML) per affrontare il problema.
- Model fit: quando il modello ipotizzato non si adatta ai dati osservati, si arriva a interpretazioni fuorvianti sulle relazioni tra variabili. Puoi apportare modifiche guidate dalla teoria o usare indici di modifica.
Conclusione
In questo articolo abbiamo esaminato in dettaglio il SEM, comprese applicazioni, implementazione, vantaggi e limiti. Il SEM è uno strumento potente per analizzare relazioni complesse e interazioni causali tra variabili osservate e latenti. Provalo in Python o in R per il tuo prossimo progetto di analisi.
Se ti interessa l’idea del modeling a equazioni strutturali ma preferisci R, puoi seguire il corso Structural Equation Modeling with lavaan in R, che offre istruzioni dettagliate passo passo. Puoi anche intraprendere il career track Statistician in R. Se invece punti su Python, leggi la documentazione di semopy per altri casi d’uso del SEM in Python. Infine, se ti interessano modelli Python avanzati che sappiano sia prevedere sia spiegare, ed esplorare idee di architetture di modello e selezione delle feature, prova il career track Machine Learning Scientist in Python.
Domande frequenti sui modelli di equazioni strutturali
Che cos’è il modeling a equazioni strutturali (SEM) e come funziona?
Il modeling a equazioni strutturali è una tecnica statistica multivariata usata per analizzare relazioni complesse tra variabili latenti e osservate.
Qual è la differenza tra analisi fattoriale confermativa (CFA) e modeling a equazioni strutturali (SEM)?
L’analisi fattoriale confermativa (CFA) è un tipo di SEM che si concentra sulle relazioni tra variabili latenti e le relative variabili osservate. Il SEM, invece, va oltre i modelli di misura includendo sia componenti strutturali sia di misura, consentendo l’analisi di complesse relazioni causa-effetto tra variabili latenti e osservate.
Quali sono i passaggi principali per condurre un’analisi SEM?
Le principali fasi in un’analisi SEM sono: (1) definire le relazioni teoriche tra variabili; (2) identificare il modello, assicurandosi che il numero di punti dati superi il numero di parametri; (3) adattare il modello ai dati; (4) valutare l’aderenza del modello usando indici come chi-quadro o RMSEA; (5) interpretare i risultati, esaminando coefficienti di percorso e indicatori di aderenza.
Quali sono alcune sfide nell’uso del SEM?
Alcune sfide comuni includono la selezione del modello — quando il modello potrebbe non avere abbastanza punti dati per stimare i parametri —, la multicollinearità tra variabili, un fit del modello scarso — quando i dati non si allineano bene al modello ipotizzato — e la dimensione campionaria, poiché campioni piccoli possono portare a risultati inaffidabili.
Quale pacchetto Python posso usare per il SEM?
semopy è un pacchetto Python che supporta le operazioni di modeling a equazioni strutturali.


