Tutorial Analisis Regresi Logistik Ordinal Menggunakan RStudio

DW ADS

Halo hai sobat Exsight!

Di artikel kali ini Exsight akan memberikan tutorial R mengenai salah satu metode yang cukup sering digunakan dalam penelitian, yaitu Regresi Logistik Ordinal. Sebelumnnya, Exsight juga sudah pernah membahas mengenai teori dari logistik ordinal. Jadi, jika kamu belum tau apa itu regresi logistik ordinal, kamu bisa cek di artikel berikut untuk mengetahui lebih jauh mengenai definisi serta teori dari regresi logistik ordinal.

Penjelasan Lengkap Analisis Regresi Logistik Ordinal

Definisi

Sebelum masuk ke tutorial menggunakan R atau RStudio, ada baiknya jika kamu sudah paham mengenai apa itu regresi logistik ordinal serta bagaimana alur analisisnya.

Regresi logistik ordinal merupakan salah satu analisis regresi yang digunakan untuk menganalisa hubungan antara variabel dependen dengan variabel independen, dimana variabel dependen bersifat polikotomus dengan skala ordinal. Polikotomus disini maksudnya adalah data kategorik di mana kategori nya berjumlah lebih dari dua.

Model Regresi Logistik Ordinal

Model yang dapat dipakai untuk regresi logistik ordinal adalah model logit.

Menurut Hosmer dan Lemeshow (2000) model tersebut dapat dituliskan sebagai berikut.

Keterangan j=1,2,…,j adalah kategori respon.

Alur Analisis

Adapun langkah-langkah analisis regresi logistik ordinal adalah sebagai berikut.

  1. Melakukan input data
  2. Melakukan pengecekan asumsi multikolinieritas antar variabel bebas. Jika tidak terdapat multikolinieritas, maka analisis dapat dilanjutkan. Jika terdapat multikolinieritas, data terlebih dahulu harus dilakukan penanganan seperti transformasi data, penambahan data atau penghapusan pada salah satu variabel yang berkorelasi kuat dengan variabel lainnya.
  3. Melakukan uji kecocokan model atau Goodness of Fit untuk mengetahui apakah model yang dibentuk sudah baik atau belum. Pengujian dapat dilakukan menggunakan Uji Ordinal Hosmer and Lemeshow, Pulksteni and Robinson, Pearson dan Deviance Chi Square, serta Uji Lipsitz. Jika diperoleh kesimpulan model cocok atau H0 diterima, maka analisis regresi logistik ordinal cocok untuk memodelkan data tersebut.
  4. Setelah itu akan dilanjutkan dengan uji serentak menggunakan statistik uji G untuk mengetahui ada tidaknya pengaruh variabel prediktor terhadap variabel respon secara bersama-sama. Jika terdapat pengaruh atau H0 ditolak, maka lanjutkan dengan uji signifikansi parsial menggunaka uji Wald. Sebaliknya, jika tidak terdapat pengaruh, maka uji parsial tidak perlu dilakukan.
  5. Terakhir lakukan interpretasi model menggunakan nilai Odds Ratio.

Note: kamu juga bisa menghitung ukuran ketepatan klasifikasi model jika memang diperlukan.

Langkah Analisis Di RStudio

Misal ingin diketahui apakah terdapat pengaruh antara umur, jenis kelamin serta status perkawinan terhadap tingkat partisipasi kerja bakti di suatu kelurahan. Tingkat partisipasi tersebut diukur dalam 3 kategori, yaitu Tidak Pernah, Jarang dan Sering. Karena tingkat partisipasi sebagai variabel dependen merupakan variabel kategorik berskala ordinal, maka regresi logistik ordinal merupakan metode yang sesuai untuk mencapai tujuan tersebut.

Berikut tabel deskripsi dari data yang digunakan.

VariabelSkala
Tingkat Partisipasi Kerja Bakti  (kerjabakti)Kategorikal
1. Tidak Pernah
2. Jarang
3. Sering
Umur (Age)Kontinu
Jenis Kelamin (Gender)Kategorikal
0. Laki-laki
1. Perempuan
Status Perkawinan (Married) Kategorikal
0. Belum Menikah
1. Sudah Menikah

Data yang digunakan dalam tahap analisis dapat di-download di sini

Langkah pertama yang harus dilakukan saat akan melakukan analisis data menggunakan R adalah melakukan input data. Banyak cara yang dapat dilakukan untuk mengimport data, disini saya menggunakan sintaks read_excel yang terdapat pada library (readxl)

#Input Data
library(readxl) #Mengaktifkan library readxl
data=read_excel(file.choose()) #Memilih file yang akan dianalisis

Setelah sintaks tersebut di-run, silahkan pilih data yang akan dianalisis. Jangan lupa untuk menyimpan data dalam format .xlsx jika ingin menggunakan sintaks read_excel.

Untuk mengecek apakah data telah diinput secara benar, kita dapat mengetikkan sintaks berikut.

#melihat tampilan data
View(data)

Maka data akan terlihat sebagai berikut.

Data tersebut terdiri dari 199 baris dan 4 kolom. Artinya, ada 199 responden yang akan digunakan sebagai sampel penelitian.

Sebelum dilakukan pemodelan, cek terlebih dahulu apakah skala data sudah sesuai dengan tabel deskripsi pada bagian awal. Ingat, terdapat 3 variabel kategorik pada data tersebut, yaitu tingkat partisipasi, jenis kelamin dan status perkawinan. Kamu dapat mengecek informasi tersebut melalui str()

> #melihat sruktur data
> str(data)
tibble [199 x 4] (S3: tbl_df/tbl/data.frame)
_$ age_______: num [1:199] 59 39 28 30 26 36 40 55 54 28 ...
_$ gender____: num [1:199] 1 0 0 1 1 1 0 1 0 1 ...
_$ married___: num [1:199] 1 1 1 1 0 1 1 1 1 0 ...
_$ kerjabakti: num [1:199] 1 1 1 2 1 1 1 1 1 3 ...

Dari output di atas, terlihat bahwa variabel age sudah benar karena merupakan data numerik, sedangkan ketiga variabel lain yang seharusnya berskala kategorik harus diubah terlebih dahulu menggunakan as.factor() agar menjadi data kategorik.

#Mengubah data integer menjadi kategorik
data$gender<-as.factor(data$gender)
data$married<-as.factor(data$married)
data$kerjabakti<-as.factor(data$kerjabakti)

Kemudian periksa kembali skala data menggunakan str().

> #memeriksa kembali sruktur data
> str(data)
tibble [199 x 4] (S3: tbl_df/tbl/data.frame)
_$ age_______: num [1:199] 59 39 28 30 26 36 40 55 54 28 ...
_$ gender____: Factor w/ 2 levels "0","1": 2 1 1 2 2 2 1 2 1 2 ...
_$ married___: Factor w/ 2 levels "0","1": 2 2 2 2 1 2 2 2 2 1 ...
_$ kerjabakti: Factor w/ 3 levels "1","2","3": 1 1 1 2 1 1 1 1 1 3 ..

Nah, sekarang semua skala data sudah sesuai dengan tabel deskripsi di awal. Langkah selanjutnya adalah melakukan pemodelan regresi logistik ordinal menggunakan sintaks polr() yang terdapat pada library “MASS”.

#pembentukan model
library(MASS)
model_ord=polr(kerjabakti~age+gender+married, method='logistic',data=data)

Untuk melakukan pemodelan ini, nama variabel dependen ditulis sebelum tanda ~ dan semua variabel independen ditulis setelah tanda ~. Method yang dipilih adalah logistik karena pada tutorial kali ini kita akan menggunakan regresi logistik. Sebenarnya ada model lain seperti probit, log-log atau cauchit. Model tersebut juga dapat digunakan menyesuaikan tujuan dan variabel penelitian. Kemudian pada parameter data, tuliskan nama dataframe dari data yang akan di analisis.

Sebelum dianalisis lebih jauh, jangan lupa untuk mengecek asumsi multikolinieritas. Pada tutorial kali ini akan digunakan kriteria VIF.

> #uji asumsi multikolinieritas
> library(car)
> vif(model_ord)

Re-fitting to get Hessian

_____age __gender _married
1.888208 4.101683 9.830732
Warning message:
In vif.default(model_ord) : No intercept: vifs may not be sensible.

Dari output di atas diperoleh hasil bahwa semua nilai VIF < 10 sehingga asumsi non-multikolinierias telah terpenuhi. Artinya, tidak ada korelasi yang kuat antar variabel independen.

Setelah itu, akan dilanjukan dengan uji kesesuaian model dengan hipotesis sebagai berikut.

H0 : Model sesuai (tidak ada perbedaan antara observasi dan prediksi)

H1 : Model tidak sesuai (ada perbedaan antara observasi dan prediksi)

Pengujian akan dilakukan menggunakan lipsitz.test yang terdapat pada library “generalhoslem“.

> #Uji GoF
> library(generalhoslem)
> lipsitz.test(model_ord)

_______Lipsitz goodness of fit test for ordinal response models

data: formula: kerjabakti ~ age + gender + married
LR statistic = 13.096, df = 9, p-value = 0.1583

Berdasarkan uji hipotesis dan cara penarikan kesimpulan seperti yang telah dijelaskan pada artikel sebelumnya, kita memperoleh informasi bahwa pada taraf signifikansi 5%, model sesuai karena p-value 0.1583 > 0.05. Artinya, tidak ada perbedaan antara observasi dan prediksi).

Karena model telah sesuai, maka akan dilanjutkan dengan uji serentak dengan hipotesis sebagai berikut,

H0: \beta_{1}= \beta _{2}= \cdots = \beta _{p}= 0 (tidak ada pengaruh variabel independen terhadap variabel dependen secara bersama-sama)

H1: Minimal ada satu \beta_{j}\neq 0, j = 1, 2, …, p (ada pengaruh variabel independen terhadap variabel dependen secara bersama-sama)

Pengujian akan dilakukan menggunakan pR2 yang terdapat pada library “pscl“.

> #Uji serentak
> library(pscl)
> pR2(model_ord)

fitting null model for pseudo-r2
_________-llh ______llhNull _________G2 __McFadden ______r2ML ______r2CU 
-183.98190937 -199.03783777 30.11185680 0.07564355 0.14042385 0.16239300 

> qchisq(0.95, 3)
[1] 7.814728

Berdasarkan uji hipotesis dan cara penarikan kesimpulan seperti yang telah dijelaskan pada artikel sebelumnya, kita memperoleh informasi bahwa pada taraf signifikansi 5%, H0 ditolak karena G2 = 30.11 > 7.814. Artinya, ada pengaruh variabel independen terhadap variabel dependen secara bersama-sama.

Untuk mengetahui variabel mana saja yang berpengaruh secara parsial, maka akan dilanjutkan dengan uji parsial (Uji Wald).

H0 : \beta _{j}= 0 (tidak ada pengaruh variabel prediktor ke-j terhadap variabel respon)

H1 : \beta _{j}\neq 0 (ada pengaruh variabel prediktor ke-j terhadap variabel respon)

j = 1, 2, … , p

> #Uji Parsial
> koef=coef(summary(model_ord))
> p_val_parsial=pnorm(abs(koef[,'t value']),lower.tail=FALSE)*2
> tabel_uji_parsial=cbind(koef,'p value'=p_val_parsial)
> tabel_uji_parsial

_______________Value Std. Error___ t value _____p value
age _____-0.03629359 0.01176745 -3.0842346 2.040766e-03
gender1 __0.28601940 0.27749170 _1.0307314 3.026668e-01
married1 -1.04736526 0.33354681 -3.1400848 1.688989e-03
1|2 _____-2.48267904 0.46822257 -5.3023481 1.143226e-07
2|3 ______0.11737143 0.42394305_ 0.2768566 7.818902e-01

Berdasarkan uji hipotesis dan cara penarikan kesimpulan seperti yang telah dijelaskan pada artikel sebelumnya, kita memperoleh informasi bahwa pada taraf signifikansi 5%, ketiga variabel secara individual mempengaruh tingkat partisipasi masyarakat dalam mengikuti kerja bakti. Hal ini dikarenakan p-value ketiga variabel < 0.05.

Dari output di atas, kamu juga bisa menuliskan model logit yang terbentuk. Adapun banyak model yang terbentuk adalah sesuai dengan banyak kategori pada variabel dependen dikurangi 1, yaitu 3 – 1 = 2

Namun perlu diingat, jika menggunakan R untuk estimasi model logistik ordinal, kamu harus mengalikan -1 ke semua \beta_{1}, \beta _{2}, \cdots , \beta _{p} agar terbentuk model yang sesuai. Berikut model yang terbentuk.

  1. Model untuk menghitung berapa peluang responden tidak pernah mengikuti kerja bakti

2. Model untuk menghitung berapa peluang responden tidak pernah dan jarang mengikuti kerja bakti

Nah, kedua model tersebut nantinya dapat digunakan untuk memprediksi tingkat partisipasi seorang responden berdasarkan nilai peluang dari tiga kategori tersebut, sebagai simulasi akan dicontohkan sebagai berikut.

Misal seorang responden berusia 59 tahun, berjenis kelamin perempuan dan sudah menikah. Maka peluang masing-masing kategori untuk responden dengan kriteria tersebut dapat dihitung dengan cara berikut.

Jadi, peluang ia tidak pernah mengikuti kerja bakti sebesar 0.6034806.

Peluang ia jarang mengikuti kerja bakti sebesar 0.3499908.

Sedangkan, peluang ia sering mengikuti kerja bakti adalah sebesar 0.0465286.

Karena dari ketiga kategori yang paling besar adalah peluang tidak pernah mengikuti kerja bakti, maka responden dengan karakteristik berusia 59 tahun, berjenis kelamin perempuan dan sudah menikah diprediksi tidak pernah mengikuti kerja bakti.

Untuk menginterpretasikan model, maka dapat dilakukan dengan menghitung nilai odds rasio terlebih dahulu.

> #Odds Ratio
> exp(coef(model_ord))
______age __gender1 _married1
0.9643571 1.3311183 0.3508610

Dari output tersebut, diperoleh informasi sebagai berikut.

  1. Untuk variabel umur, didapatkan nilai odds ratio sebesar 0.96, artinya jika umur responden bertambah 1 tahun, maka kecenderungan ia untuk semakin terlibat kerja bakti sebesar 0.96 kali dibandingkan umur sebelumnya. Hal ini menunjukkan semakin tua umur seseorang, maka kecenderungan untuk terlibat akan semakin menurun.
  2. Untuk variabel jenis kelamin, didapatkan nilai odds ratio sebesar 1.33, artinya responden perempuan memiliki kecenderungan 1.33 kali lebih besar untuk semakin terlibat dalam kerja bakti dibandingkan responden pria.
  3. Untuk variabel status perkawinan, didapatkan nilai odds ratio sebesar 0.35, artinya responden yang sudah menikah memiliki kecenderungan 0.35 kali untuk semakin terlibat dalam kerja bakti dibandingkan responden yang belum menikah.

Nah, sangat mudah bukan melakukan analisis regresi logistik ordinal di RStudio. Jika masih ada langkah-langkah yang kurang jelas atau butuh penjelasan lebih lanjut, kamu bisa langsung bertanya di kolom komentar yaa. Atau bisa juga langsung bertanya dengan admin kami melalui tombol whatsapp di pojok kanan bawah.

See you di artikel selanjutnya guys!

Jangan lupa baca artikel Exsight yg lain juga yaa.

Baca Juga: MEMAHAMI SKRIPSI, TESIS, DAN DISERTASI

Sstt...
Mau Kiriman Artikel Terbaru Exsight
Tanpa Biaya Langganan? ????

Nama Kamu

Email Kamu

Dapatkan Akses Informasi Terupdate Seputar Dunia Data dan Statistika 🙂

Exsight ADS

5 thoughts on “Tutorial Analisis Regresi Logistik Ordinal Menggunakan RStudio”

  1. Permisi saya mau tnya diatas disebutkn arahnya dibalik pada hasil estimasi parameternya, apakah untuk modelnya saja atau pada interpretasinya/perhitungan odds rationya jg dibalik ya kak?
    Terimakasih

    1. exsight analytics

      Halo kak.
      Yang dibalik hanya estimasi parameternya saja. Untuk perhitungan odds ratio dan interpretasinya tidak perlu dibalik 🙂

Leave a Comment

Hubungi Admin
Halo, selamat datang di Exsight! 👋

Hari ini kita ada DISKON 20% untuk semua transaksi. Klaim sekarang!