Program
Structural equation modeling (SEM) memungkinkan kita menyelidiki hubungan kausal antar variabel dan memahami bagaimana masing-masing berkontribusi terhadap kinerja keseluruhan. SEM adalah alat yang kuat yang menggabungkan analisis faktor dan analisis regresi berganda untuk menganalisis hubungan antar banyak variabel. Ini agak mirip dengan bagaimana, dalam kehidupan sehari-hari, kita mempertimbangkan bagaimana faktor seperti postur, kepercayaan diri, dan keterampilan komunikasi secara kolektif memengaruhi sesuatu seperti performa saat wawancara.
Sekarang mari kita jelajahi SEM, penerapannya, dan contoh praktisnya di Python. Jika Anda baru pada beberapa gagasan inti, seperti konsep faktor laten, Anda juga dapat mencoba kursus Analisis Faktor kami.
Apa itu Structural Equation Modeling?
Structural equation modeling merepresentasikan hubungan kausal antara variabel laten dan variabel teramati. Variabel teramati adalah yang dapat kita ukur secara langsung. Konstruk laten disimpulkan dan tidak diukur secara langsung.
Untuk menangkap hubungan ini secara efektif, SEM dibagi menjadi dua komponen utama: model pengukuran dan model struktural. Model pengukuran menetapkan hubungan antara variabel teramati dan variabel laten yang sesuai, sedangkan model struktural menetapkan hubungan antar variabel laten.
Mengapa peneliti menggunakan structural equation modeling?
Teknik statistik seperti korelasi dan regresi kurang efisien untuk mempelajari hubungan multivariat yang kompleks. SEM cocok untuk memodelkan konstruk yang kompleks dan multidimensi yang diukur dengan kesalahan. Ini juga berguna karena membantu menspesifikasikan suatu sistem hubungan. Metode tradisional membantu kita mempelajari satu variabel independen dan sekumpulan prediktor. Meskipun korelasi bukanlah kausalitas, SEM membantu kita memahami hubungan kausal antara variabel teramati dan konstruk laten.
Beberapa penerapan SEM meliputi:
- Ilmu Sosial: SEM dapat digunakan untuk mempelajari pengaruh nilai-nilai budaya terhadap perilaku manusia di berbagai masyarakat.
- Pendidikan: SEM dapat digunakan untuk menyelidiki pengalaman mahasiswa di sekolah pascasarjana. Misalnya, untuk memodelkan tingkat putus studi mahasiswa PhD di AS.
- Pemodelan Risiko Penyakit: SEM dapat diterapkan pada pemodelan risiko penyakit untuk menentukan risiko penyakit seperti diabetes atau penyakit jantung.
Konsep inti structural equation modeling
Berikut beberapa konsep inti dalam structural equation modeling:
- Variabel Teramati: Variabel teramati diukur langsung dari studi. Contohnya adalah respons terhadap butir kuesioner.
- Variabel Laten: Variabel laten disimpulkan dari variabel teramati dalam studi. Misalnya, tingkat kecerdasan pada penilaian kinerja akademik seorang siswa.
- Variabel Endogen: Juga dikenal sebagai variabel dependen. Misalnya, dalam y = x1 + x2 + x3, y adalah variabel endogen karena bergantung pada nilai x1, x2, …, xn.
- Variabel Eksogen: Mereka adalah variabel independen. Misalnya, waktu tidur seorang atlet independen dari jenis sepeda balap.
- Model Pengukuran: mengukur hubungan antara konstruk laten dan variabel teramati. Kerangka analisis faktor konfirmatori menguji hipotesis dasar dari model pengukuran.
- Model Struktural: Model ini menyelidiki hubungan kausal antar konstruk laten. Ini direpresentasikan secara diagram menggunakan analisis jalur.
Asumsi statistik structural equation modeling
Meskipun SEM sangat baik untuk memodelkan hubungan kausal, ada beberapa asumsi yang mendasari pada data. Asumsinya meliputi:
- Linearitas: SEM mengasumsikan hubungan linear antara konstruk laten dan variabel teramati. Ini tidak cocok untuk dataset non-linear karena dapat memberikan hasil yang salah.
- Multikolinearitas: SEM mengasumsikan multikolinearitas minimal antar variabel teramati. Misalnya, waktu tidur dan nutrisi seorang kompetitor mungkin sangat berkorelasi. SEM mengasumsikan korelasi kecil antara variabel-variabel ini.
- Asumsi Pengambilan Sampel: Untuk tugas SEM, Anda memerlukan ukuran sampel yang memadai setidaknya 200 untuk hasil yang baik. Meskipun Anda tidak memerlukan dataset besar seperti LLM, ukuran sampel yang lebih kecil dapat menghasilkan hasil yang tidak akurat.
- Normalitas Multivariat: SEM mengasumsikan data berdistribusi normal multivariat. Ini tidak cocok untuk data yang tidak normal. Anda dapat melakukan uji untuk memeriksa normalitas.
- Data Hilang: SEM mengasumsikan bahwa data lengkap. Salah satu cara SEM menangani data hilang adalah dengan mengasumsikan bahwa data hilang secara acak. Data hilang dapat mengganggu estimasi model.
- Kesalahan Spesifikasi: SEM mengasumsikan bahwa model yang ditentukan telah dispesifikasikan dengan benar. Diasumsikan bahwa model pengukuran dan model struktural memuat setidaknya semua variabel yang relevan.
Jenis-jenis structural equation model
Ada berbagai jenis structural equation modeling. Tanpa urutan tertentu, di antaranya:
- Analisis Jalur (Path Analysis): Ini adalah jenis SEM dan perluasan dari model regresi yang hanya menangani variabel teramati (juga dikenal sebagai prediktor). Diagram jalur merepresentasikan hubungan ini secara visual menggunakan panah untuk menunjukkan arah.
- Confirmatory Factor Analysis (CFA): Ini adalah jenis SEM yang digunakan untuk menguji validitas model pengukuran. Ini memverifikasi apakah data teramati sesuai dengan model yang telah ditentukan sebelumnya.
- Latent Variable Structural Models (LVSM): Memodelkan hubungan antara konstruk laten dan variabel teramati. Juga memodelkan hubungan antar konstruk laten itu sendiri.
- Latent Growth Models: Latent Growth Models adalah jenis SEM khusus yang berfokus pada pemodelan perubahan dari waktu ke waktu. Model ini digunakan untuk mempelajari trajektori variabel laten (misalnya, sifat atau perilaku psikologis) dan bagaimana perkembangannya, dengan mempertimbangkan perubahan pada tingkat individu dan kelompok.
Contoh Structural Equation Modeling di Python
Mengembangkan model SEM di Python hanya memerlukan beberapa langkah; kita dapat menggunakan pustaka semopy untuk memudahkannya. Tutorial berikut mengasumsikan bahwa Anda familiar dengan sintaks Python.
Menginstal pustaka yang diperlukan
pip install semopy
Catatan: Untuk pengguna macOS. Jika Anda menemui error ini saat menginstal paket:
ExecutableNotFound: failed to execute PosixPath('dot'), make sure the Graphviz executables are on your systems' PATH
Instal graphviz melalui homebrew di terminal Anda
brew install graphviz
Mendefinisikan konstruk
Sebelum kita mengunduh dataset dan membuat model, mari luangkan waktu sejenak untuk mendefinisikan semua konstruk kita. Artinya, kita perlu mengidentifikasi variabel laten dan teramati. Dalam kasus dataset kita, variabel teramati telah disediakan kepada kita sebagai fitur berlabel yaitu x1 hingga x3 dan y1 hingga y8. Variabel laten yang ingin kita pelajari memiliki nama berikut, yang akan kita jelaskan: ind60, dem60, dem65.
Variabel teramati
-
y1: kebebasan pers, 1960 -
y2: kebebasan oposisi politik, 1960 -
y3: keadilan pemilu, 1960 -
y4: efektivitas badan legislatif terpilih, 1960 -
y5-y8: merupakan variabel yang sama dengany1-y4, masing-masing, diukur pada 1965 -
x1: PNB per kapita, 1960 -
x2: konsumsi energi per kapita, 1960 -
x3: persentase angkatan kerja di industri, 1960
Variabel Laten
-
ind60: variabel laten eksogen tentang industrialisasi. -
dem60: variabel laten endogen tentang demokrasi pada 1960. -
dem65: variabel laten endogen tentang demokrasi pada 1965.
Mengembangkan model pengukuran
Tujuannya adalah mendefinisikan model teoretis untuk menspesifikasikan hubungan antara konstruk laten dan variabel teramati.
# Measurement model
ind60 =~ x1 + x2 + x3
demo60 =~ y1 + y2 + y3 + y4
dem65 =~ y5 + y6 + y7 + y8
Menspesifikasikan model struktural
Di sini, kita akan menspesifikasikan hubungan antar konstruk laten itu sendiri.
# regressions
dem60 ~ ind60
dem65 ~ ind60 + dem60
Menspesifikasikan korelasi
Di sini, kita ingin menspesifikasikan variabel-variabel yang berkorelasi tinggi satu sama lain.
# Correlations
y1 ~~ y5
y2 ~~ y4
y2 ~~ y6
y3 ~~ y7
y4 ~~ y8
y6 ~~ y5
Menyiapkan dataset
Untuk tutorial ini, kita akan menggunakan dataset PoliticalDemocracy.csv yang disediakan oleh semopy. Anda dapat mengunduhnya dengan mengunjungi repositori GitHub ini.
Import pandas as pd
data = pd.read_csv('PoliticalDemocracy.csv')
Mendefinisikan model SEM
Kita perlu menggabungkan definisi struktural dan pengukuran ke dalam sebuah spesifikasi model.
# 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
"""
Selanjutnya, kita mendefinisikan model dan menyesuaikannya pada data
import semopy
# Define the model
model = semopy.Model(model_spec)
#Fit the model
model.fit(data)
# Inspect the results
print(model.inspect())
Menafsirkan hasil
Kita akan memplot hasil model untuk memahami representasi jalur. Plot akan disimpan sebagai 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()

Diagram jalur SEM untuk dataset demokrasi politik. Sumber: Gambar oleh Penulis
Diagram menunjukkan bagaimana jalur menghubungkan konstruk laten (dalam lingkaran) dan variabel teramati. Koefisien jalur yang mendekati 1 atau -1 menunjukkan hubungan yang kuat antar variabel dan yang mendekati 0 menunjukkan hubungan yang lemah.
Simpangan baku dalam tabel berada dalam kisaran yang wajar. Nilai yang lebih besar dapat mengindikasikan multikolinearitas atau kesalahan spesifikasi model. Nilai p menentukan signifikansi statistik koefisien jalur. Nilai p kurang dari 0,05 biasanya menunjukkan bahwa jalur tersebut signifikan secara statistik. Kita melihat 2 kasus di mana nilai p lebih besar dari 0,05.
Secara keseluruhan, hasilnya menunjukkan bahwa ind60 berpengaruh signifikan terhadap dem60, yang pada gilirannya berpengaruh signifikan terhadap dem65.
Menilai kelayakan model (model fit)
Model yang dihipotesiskan harus sesuai dengan hubungan yang teramati untuk menilai kelayakan model SEM. Berbagai indeks kelayakan digunakan untuk menilai seberapa baik model sesuai dengan data. Berikut beberapa yang umum digunakan:
- Uji Chi-Square: Membandingkan matriks kovarians teramati dengan matriks kovarians yang diimplikasikan oleh model. Chi-square yang tidak signifikan menunjukkan kecocokan yang baik.
- Root Mean Square Error of Approximation: Mengevaluasi seberapa baik model mendekati data, dengan menyesuaikan kompleksitas model. Nilai di bawah 0,05 dan hingga 0,08 dapat diterima.
Tantangan Umum dan Solusinya dalam SEM
Beberapa tantangan umum dari teknik structural equation modeling meliputi hal-hal berikut:
- Data Tidak Normal: SEM umumnya mengasumsikan data mengikuti distribusi normal. Menggunakan data yang tidak normal dapat memengaruhi galat baku, nilai p, dan indeks kelayakan, sehingga menghasilkan estimasi yang tidak andal. Teknik transformasi data dapat diterapkan untuk menormalkan data.
- Data Hilang: Data lengkap diperlukan untuk SEM. Data hilang dapat menyebabkan hasil yang bias. Anda dapat memanfaatkan metode estimasi likelihood seperti full information maximum likelihood (FIML) untuk mengatasinya.
- Kelayakan Model: Ketika model yang dihipotesiskan tidak sesuai dengan data teramati, hal ini mengarah pada penafsiran yang menyesatkan tentang hubungan antar variabel. Anda dapat melakukan penyesuaian berbasis teori pada model atau menggunakan indeks modifikasi.
Kesimpulan
Dalam artikel ini, kita meninjau SEM secara mendalam, termasuk penerapan, implementasi, kelebihan, dan keterbatasannya. SEM adalah alat yang kuat untuk menguji hubungan kompleks dan interaksi kausal antara variabel teramati dan laten. Anda sebaiknya mencobanya di Python atau R untuk proyek analisis berikutnya.
Jika Anda tertarik pada gagasan structural equation modeling tetapi lebih menyukai R, Anda dapat mengambil kursus Structural Equation Modeling with lavaan in R, yang memiliki petunjuk langkah demi langkah yang terperinci. Anda juga dapat memulai jalur karier Statistician in R. Jika Anda berkomitmen pada Python, bacalah dokumentasi semopy untuk lebih banyak use case SEM di Python. Terakhir, jika Anda tertarik pada model Python tingkat lanjut yang sekaligus memprediksi dan menjelaskan, serta mengeksplorasi gagasan arsitektur model dan pemilihan fitur, coba jalur karier Machine Learning Scientist in Python kami.
Structural Equation Modeling FAQs
What is structural equation modeling (SEM) and how does it work?
Structural equation modeling adalah teknik statistik multivariat yang digunakan untuk menganalisis hubungan kompleks antara variabel laten dan teramati.
What is the difference between confirmatory factor analysis (CFA) and structural equation modeling (SEM)?
Confirmatory factor analysis (CFA) adalah jenis SEM yang berfokus pada hubungan antara variabel laten dan variabel teramati yang terkait. SEM, di sisi lain, melampaui model pengukuran untuk mencakup komponen struktural dan pengukuran, sehingga memungkinkan analisis hubungan sebab-akibat yang kompleks di antara variabel laten dan teramati.
What are the main steps involved in conducting SEM analysis?
Langkah utama dalam analisis SEM adalah: (1) Mendefinisikan hubungan teoretis antar variabel; (2) Mengidentifikasi model, memastikan jumlah titik data melebihi jumlah parameter; (3) Menyesuaikan model pada data; (4) Menilai kelayakan model menggunakan indeks seperti Chi-square atau RMSEA; dan (5) Menafsirkan hasil, menelaah koefisien jalur dan indikator kelayakan model.
What are some challenges with using SEM?
Beberapa tantangan umum mencakup pemilihan model — ketika model mungkin tidak memiliki cukup titik data untuk mengestimasi parameter, multikolinearitas antar variabel, kelayakan model yang buruk — ketika data tidak selaras dengan model yang dihipotesiskan, dan ukuran sampel yang besar, karena sampel kecil dapat menghasilkan hasil yang tidak andal.
What Python package can I use for SEM?
semopy adalah paket Python yang mendukung operasi structural equation modelling.

