Apa itu lavaan?
Lavaan adalah paket di bahasa pemrograman R untuk membuat model statistik yang hubungannya bisa kompleks.
Bayangkan kamu ingin menjawab pertanyaan seperti:
- “Apakah rasa suka (enjoy) berpengaruh ke nilai matematika (math)?”
- “Apakah jenis kelamin (girl) memengaruhi enjoy, lalu akhirnya memengaruhi nilai math?”
Nah, lavaan membantu kita:
- menulis modelnya (seperti menggambar peta hubungan)
- menghitung angkanya dari data
- menampilkan hasil dan mengecek apakah modelnya cocok
Data itu bentuknya bagaimana?
lavaan bisa memakai data dari banyak sumber (misalnya .csv, Excel, .Rdata).
lavaan bisa bekerja dengan:
- data mentah (data frame/matrix)
- matriks kovarians + vektor mean + ukuran sampel
Alur kerja lavaan: 3 langkah utama
- Langkah 1 — Model specification (menuliskan model)
Kita menuliskan “rumus hubungan” antar variabel.
- Langkah 2 — Model fitting (menghitung model dari data)
Pakai fungsi seperti sem().
- Langkah 3 — Summary & outputs (melihat hasil)
Pakai summary() dan fungsi output lain.
Contoh kerangka:
library(lavaan)
setwd("...") # arah folder kerja
load("obsvar.Rdata")
# Step 1: model
m1 <- '
lnmath ~ enjoy
enjoy ~ gir1
'
# Step 2: fit
fit_m1 <- sem(m1, data = obsvar)
# Step 3: output
summary(fit_m1)
Bahasa/ Simbol penting di lavaan
Ada 4 tipe formula:
1. =~ (mendefinisikan variabel laten)
Variabel laten = sesuatu yang tidak terlihat langsung, tapi “diukur” lewat beberapa indikator.
Contoh (ilustrasi umum):
Motivasi =~ item1 + item2 + item3
Artinya: “Motivasi” diukur lewat item1–item3.
2. ~ (regresi / arah pengaruh)
Bentuk umum:
Artinya: Y diprediksi oleh X1 dan X2
Contoh:
- lnmath ~ enjoy → nilai log-math dipengaruhi enjoy
- enjoy ~ gir1 → enjoy dipengaruhi gender (misal gir1=1 perempuan)
3. ~~ ((ko)varian / residual covariance)
Dipakai untuk:
- varians: X ~~ X
- kovarians: X ~~ Y
Ini berguna kalau dua variabel punya hubungan “bersama” yang tidak dimodelkan sebagai panah sebab-akibat.
4. ~1 (intercept)
Intercept = nilai rata-rata dasar ketika prediktor bernilai 0.
Contoh 1: model jalur sederhana (dua regresi)
Model:
lnmath ~ enjoy
enjoy ~ gir1
Makna konsepnya:
enjoy dipengaruhi oleh girl
lnmath (log dari math) dipengaruhi oleh enjoy
Jadi gender girl bisa berpengaruh ke lnmath secara tidak langsung lewat enjoy (meski di contoh ini belum dihitung sebagai “indirect effect” secara eksplisit).
1. Membaca output summary(fit)
- Informasi estimasi
- Estimator: ML (Maximum Likelihood) → metode umum untuk mengestimasi parameter.
- Number of observations → jumlah data yang dipakai.
- Parameter Estimates (angka koefisien)
Untuk tiap panah regresi ada:
- Estimate: besar pengaruh
- Std.Err: ketidakpastian (standar error)
- z-value dan p-value: apakah pengaruh “cukup kuat” (secara statistik)
Dari contoh (intinya):
lnmath ~ enjoy estimate positif → enjoy naik → lnmath cenderung naik.
enjoy ~ girl p-value besar → pengaruh gender ke enjoy tidak meyakinkan pada contoh tersebut.
- Variances (residual variances)
Misal .lnmath = variasi lnmath yang belum dijelaskan prediktor dalam model.
2. Konsep “kecocokan model”: Chi-square, df, p-value
Di output ada Model Test (Chi-square):
- Model SEM “memprediksi” struktur kovarians tertentu.
- Uji chi-square mengecek: apakah prediksi model beda jauh dari data?
Secara sederhana:
- p kecil → ada perbedaan yang terdeteksi (model kurang pas)
- p besar → model tidak terbukti berbeda dari data (model cukup pas)
3. Konsep “S vs Σ hat”: data nyata vs prediksi model
SEM sangat terkait dengan kovarians.
- Kovarians yang benar-benar ada di data: S
Dari contoh:
- Kovarians yang “dipaksakan” oleh model: Σ hat
Dari contoh:
Kalau model bagus, S dan Σ hat harus mirip.
4. Residual (selisih data vs model)
Residual di sini artinya: selisih antara yang terjadi di data dan yang diprediksi model.
Residual kovarians (raw residual) =
Bisa 2 cara:
- Hitung sendiri
- Pakai fungsi lavaan
Makna tipe residual:
- raw: selisih asli
- normalized/ standardized: selisih yang sudah diskalakan agar mudah dibandingkan (mirip ide “berapa besar kesalahan relatif terhadap skala/variansnya”)
Cara memahami cepat:
- Residual kecil (dekat 0) → model lumayan pas
- Residual besar → ada hubungan di data yang belum ditangkap model
5. Koefisien terstandar (standardized coefficients)
Kenapa distandarkan?
Karena kalau skala variabel beda (misal math 0–100, enjoy 1–5), membandingkan pengaruh jadi susah.
Solusi: koefisien standar (dalam satuan SD).
Interpretasi yang mudah:
est.std = 0.143 (contoh untuk lnmath ~ enjoy) artinya:
jika enjoy naik 1 standar deviasi, maka lnmath naik sekitar 0.143 standar deviasi.
Contoh 2: Plain Vanilla Regression
Model:
Di lavaan:
Kenapa df = 0 di contoh?
Untuk regresi tunggal yang “jenuh” terhadap kovarians yang dipakai, kadang derajat bebas bisa 0 (secara konsep: model tidak memberi batasan tambahan untuk diuji di level kovarians tertentu). Yang penting: koefisien regresinya tetap bisa ditaksir dan diinterpretasi.
Cara baca hasilnya:
- Koefisien enjoy positif → kalau enjoy naik, prediksi math cenderung naik.
- Koefisien gir1 negatif → kalau gir1=1 (misal perempuan), prediksi math cenderung lebih rendah dibanding acuan (tergantung pengkodean).
- Ada juga Variance .math → itu “sisa variasi” math yang belum dijelaskan model.
Indirect effect (pengaruh tidak langsung / mediasi)
Ini konsep SEM yang sangat sering dipakai.
Struktur mediasi (dari contoh): x → y → z
Ada:
- Direct effect: x → z
- Indirect effect: x → y → z (melewati mediator)
Contoh:
Penjelasan:
- lang memengaruhi enjoy
- enjoy memengaruhi lnmath
- lang bisa memengaruhi lnmath secara tidak langsung lewat enjoy.
Cara lavaan menulisnya:
Cara baca label::
- a: Ada pengaruh langsung dan tidak langsung (a * lang)
- b: pengaruh enjoy -> lnmath (b * enjoy)
- c: pengaruh langsung (direct) lang -> lnmath (c * lang)
- ab = pengaruh tidak langsung/ indirect (hasil kali a × b)
- Total: total pengaruh langsung + tidak langsung (c + ab)
Hasilnya:
Bootstrapping (kenapa dipakai untuk indirect effect?)
Karena indirect effect itu perkalian (a*b), dan “uji signifikansinya” tidak sesederhana uji biasa.
Bootstrapping = cara “mengundi ulang” data berkali-kali (sampling dengan pengembalian) untuk memperkirakan:
- standar error,
- confidence interval (rentang nilai yang masuk akal).
Bootstrapping:
- mengambil sampel ulang dari data (dengan pengembalian) berkali-kali
- hitung ab setiap kali
- dari sebaran itu dapat SE dan confidence interval yang lebih masuk akal
Di output ada di (lihat hasil indirect effect):
- “Number of requested bootstrap draws: 1000”
- “successful: 999”
Menguji “parameter equality” (apakah dua pengaruh sama?)
Misal ada pertanyaan:
“Apakah pengaruh enjoy -> lnmath sama dengan pengaruh lang -> lnmath?”
Ada 2 cara yang dilakukan:
- Cara 1 — Model bersarang (nested models) + beda chi-square (chi-square difference)
Caranya: buat model yang memaksa dua koefisien sama (pakai label yang sama, misal sama-sama c), lalu lihat apakah model jadi jauh lebih buruk.
Lalu bandingkan dengan model tanpa paksaan (model “full”).
Jika fit memburuk signifikan → paksaan “harus sama” tidak cocok.-
Cara 2 — Wald test
Langsung menguji kendala pada model:
Interpretasi:
p kecil → bukti bahwa b dan c berbeda.
Menguji koefisien sama dengan nilai tertentu (misal b=−0.10)
Contoh, pada Wald test untuk memeriksa apakah koefisien tertentu sama dengan angka yang kita tentukan:
Dan juga cara “mematok” koefisien saat menulis model, misalnya:
lnmath ~ -.10*enjoy
Kalau dipatok, model jadi lebih ketat → bisa diuji dengan chi-square/df.
Membuat gambar jalur (path diagram) dengan semPlot
semPlot digunakan untuk menggambar “peta panah” hubungan variabel (biar visual dan mudah dipahami).
Contoh:
library(semPlot)
semPaths(fit_m4, title = FALSE)
Ini membantu membaca model seperti peta: mana yang memengaruhi mana, seberapa besar koefisien, dll.
0 komentar:
Posting Komentar
Berkomentarlah dengan baik dan sopan ya ^^