library(readxl) # Mengaktifkan library readxl
data <- read_excel(file.choose()) # Memilih file yang akan dianalisis
# Melihat tampilan data
View(data)
# Melihat struktur data
str(data)
## tibble [199 × 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 ...
Dataset terdiri dari 199 observasi dan 4 variabel sebagai berikut:
Tingkat Partisipasi Kerja Bakti (kerjabakti) Skala: Ordinal (kategorikal bertingkat) Kategori: 1 = Tidak Pernah 2 = Jarang 3 = Sering Variabel ini menjadi variabel dependen
Umur (age) Skala: Kontinu Merupakan variabel numerik yang menyatakan usia responden.
Jenis Kelamin (gender) Skala: Kategorikal Kategori: 0 = Laki-laki 1 = Perempuan perlu dikonversi ke format faktor sebelum dianalisis dalam model.
Status Perkawinan (married) Skala: Kategorikal Kategori: 0 = Belum Menikah 1 = Sudah Menikah perlu dikonversi ke format faktor juga.
data$gender <- factor(data$gender, levels = c("0", "1"), labels = c("Laki-laki", "Perempuan"))
data$married <- factor(data$married, levels = c("0", "1"), labels = c("Belum Menikah", "Sudah Menikah"))
data$kerjabakti <- factor(data$kerjabakti, levels = c("1", "2", "3"),
labels = c("Tidak Pernah", "Jarang", "Sering"),
ordered = TRUE)
#memeriksa kembali sruktur data
str(data)
## tibble [199 × 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 "Laki-laki","Perempuan": 2 1 1 2 2 2 1 2 1 2 ...
## $ married : Factor w/ 2 levels "Belum Menikah",..: 2 2 2 2 1 2 2 2 2 1 ...
## $ kerjabakti: Ord.factor w/ 3 levels "Tidak Pernah"<..: 1 1 1 2 1 1 1 1 1 3 ...
library(MASS)
model_ord=polr(kerjabakti~age+gender+married, method='logistic',data=data)
summary(model_ord)
##
## Re-fitting to get Hessian
## Call:
## polr(formula = kerjabakti ~ age + gender + married, data = data,
## method = "logistic")
##
## Coefficients:
## Value Std. Error t value
## age -0.03629 0.01177 -3.084
## genderPerempuan 0.28602 0.27749 1.031
## marriedSudah Menikah -1.04737 0.33355 -3.140
##
## Intercepts:
## Value Std. Error t value
## Tidak Pernah|Jarang -2.4827 0.4682 -5.3023
## Jarang|Sering 0.1174 0.4239 0.2769
##
## Residual Deviance: 367.9638
## AIC: 377.9638
library(car)
## Loading required package: carData
vif(model_ord)
##
## Re-fitting to get Hessian
## age gender married
## 1.090172 1.006878 1.092370
Hasilnya menunjukkan bahwa variabel usia berpengaruh signifikan terhadap partisipasi kerja bakti, dengan nilai koefisien negatif sebesar -0.036. Hal ini menunjukkan bahwa semakin bertambah usia seseorang, maka kemungkinan untuk lebih aktif dalam kerja bakti cenderung menurun. Selain itu, status pernikahan juga memiliki pengaruh signifikan dengan nilai koefisien -1.047, yang mengindikasikan bahwa individu yang sudah menikah memiliki kemungkinan lebih kecil untuk aktif dalam kerja bakti dibandingkan dengan mereka yang belum menikah. Sementara itu, variabel jenis kelamin (dengan referensi laki-laki) menunjukkan koefisien positif sebesar 0.286 untuk perempuan, yang berarti perempuan cenderung lebih aktif dalam kerja bakti, meskipun pengaruh ini tidak signifikan secara statistik (p > 0.05).
hasil uji multikolinearitas menggunakan nilai Variance Inflation Factor (VIF) menunjukkan bahwa seluruh variabel prediktor memiliki nilai VIF di bawah 2 (yaitu antara 1.006 hingga 1.092). Hal ini menandakan bahwa tidak terdapat masalah multikolinearitas di antara variabel bebas dalam model, sehingga estimasi koefisien dapat dianggap stabil dan dapat diinterpretasikan dengan baik. Secara keseluruhan, model ini menunjukkan bahwa faktor usia dan status pernikahan merupakan determinan signifikan dalam mempengaruhi partisipasi kerja bakti, sementara jenis kelamin tidak memberikan pengaruh yang signifikan.
library(generalhoslem)
## Loading required package: reshape
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
Uji Lipsitz digunakan untuk mengevaluasi kebaikan model ordinal terhadap data. Hipotesis dalam uji ini adalah: H0 (null): Model cocok dengan data (fit). H1 (alternatif): Model tidak cocok dengan data (tidak fit).
Karena p-value = 0.1583 > 0.05, maka tidak ada bukti yang cukup untuk menolak H0. Artinya model yang diuji memiliki kecocokan yang baik terhadap data.
library(pscl)
## Classes and Methods for R originally developed in the
## Political Science Computational Laboratory
## Department of Political Science
## Stanford University (2002-2015),
## by and under the direction of Simon Jackman.
## hurdle and zeroinfl functions by Achim Zeileis.
pR2(model_ord)
## fitting null model for pseudo-r2
## llh llhNull G2 McFadden r2ML
## -183.98190937 -199.03783777 30.11185680 0.07564355 0.14042385
## r2CU
## 0.16239300
qchisq(0.95, 3)
## [1] 7.814728
G2 = 30.11 dibandingkan dengan chi-square (df = 3, α = 0.05): qchisq(0.95, 3) = 7.814 Karena G2 > 7.8147, maka H0 ditolak. Artinya, model dengan prediktor (age, gender, married) secara signifikan lebih baik dibandingkan model null (tanpa prediktor). Nilai pseudo R-squared tidak bisa ditafsirkan seperti R² biasa, tetapi memberi gambaran kekuatan model: McFadden’s R² ≈ 0.0756 berarti model punya kekuatan prediksi lemah hingga sedang karena nilai antara 0.2–0.4 dianggap baik r2ML dan r2CU juga masih cukup rendah berartu menunjukkan model menjelaskan sebagian kecil variabilitas dalam data.
koef=coef(summary(model_ord))
##
## Re-fitting to get Hessian
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
## genderPerempuan 0.28601940 0.27749170 1.0307314 3.026668e-01
## marriedSudah Menikah -1.04736526 0.33354681 -3.1400848 1.688989e-03
## Tidak Pernah|Jarang -2.48267904 0.46822257 -5.3023481 1.143226e-07
## Jarang|Sering 0.11737143 0.42394305 0.2768566 7.818902e-01
Interpretasi: age: Koefisien negatif yang signifikan (p = 0.002) = semakin tinggi usia, kemungkinan partisipasi dalam kegiatan kerjabakti cenderung menurun.
gender (Perempuan): Tidak signifikan (p = 0.302) =jenis kelamin bukan prediktor kuat dalam model ini.
married (Sudah Menikah): Signifikan (p = 0.0017) dengan efek negatif = individu yang sudah menikah cenderung memiliki partisipasi lebih rendah.
Thresholds:
Tidak Pernah | Jarang: Signifikan =menunjukkan batas perubahan kategori partisipasi memiliki efek jelas.
Jarang | Sering: Tidak signifikan =perbedaan antara kategori ini mungkin tidak terlalu kuat.
Kesimpulannya variabel age dan married berkontribusi signifikan terhadap model. gender tidak signifikan dan bisa untuk dikeluarkan jika ingin menyederhanakan model. Sebagian batas kategori (threshold) juga tidak signifikan, memberi indikasi bahwa beberapa level ordinal bisa digabungkan (opsional tergantung konteks penelitian
exp(coef(model_ord))
## age genderPerempuan marriedSudah Menikah
## 0.9643571 1.3311183 0.3508610
Age: setiap penambahan 1 tahun usia, odds untuk berada di kategori lebih tinggi partisipasi menurun 3.56% (karena OR < 1). genderPerempuan : perempuan memiliki 33.11% lebih tinggi odds untuk partisipasi dibanding laki-laki. Namun ini tidak signifikan marriedSudah Menikah :individu yang sudah menikah memiliki 64.91% lebih rendah odds untuk berpartisipasi dibanding yang belum menikah. Ini signifikan.