Kesan saya menggunakan sem dengan python adalah sederhana. Ribet, sulit, dan njlimet itu tidak ada karena phyton mengembalikan fungsi aplikasi dengan baik. Saya membutuhkan aplikasi yang berfungsi untuk menghitung model.
Pada langkah pertama, kita perlu menyiapkan model terlebih dahulu. KIta bisa membuat model dengan beberapa teori dan hipotesis penelitian. Tentu kita ingat, jika kita menggunakan aplikasi seperti smart-PLS, kita menggambar terlebih dahulu hubungan antar variabel laten dan deskripsi variabel laten itu sendiri.
Bedanya, python menggambarkan model dengan beberapa persamaan matematika. mirip seperti menggunakan lisrel seperti artikel sebelumnya. setelah itu, kita memasukkan data, dan keluar koefisien setiap path antar variabel.
Langkah hitung SEM dengan python
Pertama, tentu kita menginstal paket python dulu. Kita menggunakan paket semopy. cara menginstal paketnya, buka command prompt di windows kemudian ketikkan:
pip install semopy
Buat anda yang masih bingung dan perlu tutorial cara install python dari awal, silahkan baca artikel ini: menginstal python di windows.
Kedua, tentu buka python dengan jupyter notebook atau environment lainnya, kita memasukkan model dengan memasukkan kode:
from semopy import Model
mod = """
x1 ~ x2 + x3
x11 =~ x1 + x2 + x3 + x4 + x5
x10 =~ x6 + x7 + x8 + x9 + x10
x10 ~ x11
"""
model = Model(mod)
Saya jelaskan sedikit. Persamaan 1 yakni x1 ~ x2 + x3 agar mudah dipahami perhatikan gambar berikut:
Ini merupakan struktural model, biasa kita melihat ini pada model path atau path analisis. Jadi X1 sebagai endogen atau variabel dependen, sedangkan variabel X2 dan X3 merupakan variabel independen atau eksogen.
Selanjutnya, pada model ini x11 =~ x1 + x2 + x3 + x4 + x5, ini merupakan measurement model. modle ini menjelaskan bahwa x11 adalah variabel laten yang dijelaskan oleh variabel X1, X2, X3, X4 dan X5. tanda =~ mengindikasikan measurement model dengan adanya variabel laten. Lebih jelasnya silahkan perhatikan gambar berikut:
jadi x11 bukan merupakan variabel yang berdiri sendiri, variabel x1 sampai dengan x5 menentukan variabel x11. Ingat, arah panahnya dari variabel laten ke indikator-indikator penyusunnya. ini yang membedakan model ini dengan model sebelumnya.
Nah, model selanjutnya adalah x10 ~ x11 dimana kedua variabel tersebut adalah variabel laten. ini adalah structural model, kebayang ya gambarnya bagaimana.
Ketiga, yakni memanggil data yang akan kita gunakan. sebelumnya kita perlu menyiapkan data dalam format csv.
from pandas import read_csv
data = read_csv("data3.csv", index_col=0)
Nama file data saya adalah data3.csv yang terletak di folder phyton. Keempat, kita memerintahkan python untuk mengolah data.
model.fit(data)
Hasilnya adalah sebagai berikut:
SolverResult(fun=0.33991580821821543, success=True, n_it=128, x=array([-4.74999764e-01, -2.67523621e-02, -1.42464757e+01, 6.65613381e-02,
-3.02275813e-01, -2.49110188e+01, 1.36251981e+01, 1.13852466e+00,
-5.23696978e-01, 1.26472762e-01, 2.09660066e+00, 3.06347203e+01,
7.49834437e+00, 1.45330939e+01, 2.64180226e+01, 2.42280462e+01,
1.62755869e+01, 8.69487398e-01, 2.79641727e+01, 2.30008960e+01,
8.29467907e+00, 4.60050106e-02]), message='Optimization terminated successfully', name_method='SLSQP', name_obj='MLW')
Hasil memperlihatkan nilai koefisien setiap path yang ada dalam model. Kita bisa menggunakan syntax berikut agar lebih mudah memahaminya:
model.inspect()
kita dapat memahami hasilnya sebagai berikut:
lval op rval Estimate Std. Err z-value p-value
0 x10 ~ x11 -14.246476 25.356591 -0.561845 0.574222
1 x2 ~ x11 0.066561 0.606442 0.109757 0.912602
2 x3 ~ x11 -0.302276 2.014698 -0.150035 0.880737
3 x10 ~ x10 2.096601 1.750787 1.197519 0.231104
4 x1 ~ x2 -0.475000 0.625962 -0.758831 0.447953
5 x1 ~ x3 -0.026752 0.20268 -0.131993 0.89499
6 x1 ~ x11 1.000000 - - -
7 x4 ~ x11 -24.911019 83.648967 -0.297804 0.765853
8 x5 ~ x11 13.625198 45.769561 0.297691 0.765939
9 x6 ~ x10 1.000000 - - -
10 x7 ~ x10 1.138525 0.293023 3.885439 0.000102
11 x8 ~ x10 -0.523697 0.168065 -3.116032 0.001833
12 x9 ~ x10 0.126473 0.161335 0.783914 0.433091
13 x10 ~~ x10 7.498344 23.962413 0.312921 0.754341
14 x2 ~~ x2 0.869487 0.129631 6.707394 0.0
15 x3 ~~ x3 8.294679 1.23682 6.706454 0.0
16 x11 ~~ x11 0.046005 0.308324 0.14921 0.881388
17 x1 ~~ x1 30.634720 4.570288 6.703018 0.0
18 x7 ~~ x7 14.533094 4.566778 3.182352 0.001461
19 x5 ~~ x5 26.418023 4.844257 5.453473 0.0
20 x6 ~~ x6 24.228046 4.878461 4.966329 0.000001
21 x8 ~~ x8 16.275587 2.687996 6.054914 0.0
22 x4 ~~ x4 27.964173 10.292571 2.716928 0.006589
23 x9 ~~ x9 23.000896 3.441993 6.682434 0.0
Penutup: membaca output path atau sem dengan python
oh iya, saya perlu menambahkan bawa tanda ~~ merupakan nilai varians antar variabel. Kita biasa melihat nilai tersebut di belakang nilai variabel. Perhatikan gambar berikut, panah merah biasanya mencerminkan nilai varians.
Nilai yang tertera dalam estimate merupakan nilai koefisien setiap path dalam struktural model ataupun measurement model. Ingat, bahwa Python hanya alat penghitung, interpretasi dan syarat kebaikmodel tentu sama dengan penghitung lainnya.
Misal measurement model mensyaratkan di atas 0.7 dan sebagainya. Kebetulan saya belum membahas dasar sem di sini. Saya akan membahasnya di lain kesempatan.
Satu lagi, saya belum menemukan syntax untuk evaluasi model seperti RMSEA, GFI, AGFI, CFI, dan AIC seperti yang ada di amos atau lisrel. Jika anda sudah menemukan syntax tersebut atau memiliki artikel yang menjelaskan lanjutan ini, monggo share di kolom komentar. Atau, jika saya menemukan suatu saat, akan saya buat artikel yang baru.
Terima kasih sudah menyimak, Selamat Belajar