Hitung SEM dengan Python

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:

menghitung sem dengan python

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

Similar Posts

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *