library(MASS)
data <- read.csv("C:/Users/Darren Eduardo/Downloads/anmul regresi/ordinal_injury.csv", header = TRUE, sep = ",")
data <- na.omit(data)
str(data)
## 'data.frame': 200 obs. of 6 variables:
## $ Collision_Type : chr "Single" "Side" "Frontal" "Frontal" ...
## $ Vehicle_Speed : num 77.2 81.5 42.2 56.2 60.5 ...
## $ Seatbelt_Used : int 1 1 1 1 1 1 1 1 1 1 ...
## $ Injury_Location : chr "Head" "Legs" "Legs" "Multiple" ...
## $ Ambulance_Response_Min: num 5.9 7.46 11.13 3 15.12 ...
## $ Injury_Severity : chr "Meninggal" "Berat" "Berat" "Berat" ...
data$Injury_Severity <- ordered(data$Injury_Severity,
levels = c("Ringan", "Sedang", "Berat", "Meninggal"))
data$Seatbelt_Used <- as.factor(data$Seatbelt_Used)
data$Collision_Type <- as.factor(data$Collision_Type)
data$Injury_Location <- as.factor(data$Injury_Location)
Mewakili batas antara kategori keparahan:
Ringan|Sedang: -0.0346
Sedang|Berat: 1.0974
Berat|Meninggal: 2.7945
Nilai ini digunakan secara internal dalam menghitung probabilitas tiap kategori.
model_ordinal <- polr(Injury_Severity ~ Vehicle_Speed + Seatbelt_Used +
Collision_Type + Injury_Location + Ambulance_Response_Min,
data = data, Hess = TRUE)
summary(model_ordinal)
## Call:
## polr(formula = Injury_Severity ~ Vehicle_Speed + Seatbelt_Used +
## Collision_Type + Injury_Location + Ambulance_Response_Min,
## data = data, Hess = TRUE)
##
## Coefficients:
## Value Std. Error t value
## Vehicle_Speed 0.06377 0.01158 5.5054
## Seatbelt_Used1 -3.63064 0.52056 -6.9744
## Collision_TypeRear -0.06001 0.44813 -0.1339
## Collision_TypeSide -0.36732 0.43044 -0.8534
## Collision_TypeSingle -0.17473 0.43085 -0.4056
## Injury_LocationHead 2.36769 0.47386 4.9966
## Injury_LocationLegs -0.19351 0.43027 -0.4498
## Injury_LocationMultiple -0.19722 0.42422 -0.4649
## Ambulance_Response_Min 0.10926 0.04317 2.5307
##
## Intercepts:
## Value Std. Error t value
## Ringan|Sedang -0.0346 0.8698 -0.0397
## Sedang|Berat 1.0974 0.8725 1.2578
## Berat|Meninggal 2.7945 0.8942 3.1253
##
## Residual Deviance: 372.897
## AIC: 396.897
| Variabel | Koefisien | Std. Error | t-value | Interpretasi |
|---|---|---|---|---|
| Vehicle_Speed | 0.06377 | 0.01158 | 5.51 | Signifikan positif: Kecepatan lebih tinggi → risiko cedera parah meningkat. |
| Seatbelt_Used | -3.63064 | 0.52056 | -6.97 | Signifikan negatif: Memakai sabuk pengaman → menurunkan risiko cedera parah. |
| Collision_TypeRear | -0.06001 | 0.44813 | -0.13 | Tidak signifikan. |
| Collision_TypeSide | -0.36732 | 0.43044 | -0.85 | Tidak signifikan. |
| Collision_TypeSingle | -0.17473 | 0.43085 | -0.41 | Tidak signifikan. |
| Injury_LocationHead | 2.36769 | 0.47386 | 5.00 | Signifikan positif: Cedera di kepala → kemungkinan cedera parah meningkat. |
| Injury_LocationLegs | -0.19351 | 0.43027 | -0.45 | Tidak signifikan. |
| Injury_LocationMultiple | -0.19722 | 0.42422 | -0.46 | Tidak signifikan. |
| Ambulance_Response_Min | 0.10926 | 0.04317 | 2.53 | Signifikan positif: Respon ambulans lambat → risiko cedera parah meningkat. |
Faktor-faktor signifikan yang meningkatkan risiko cedera parah:
Kecepatan kendaraan: Semakin tinggi kecepatan → semakin besar kemungkinan luka serius atau meninggal.
Waktu respons ambulans: Semakin lambat datangnya ambulans → semakin tinggi risiko keparahan.
Cedera di kepala: Sangat berkorelasi dengan keparahan cedera.
Faktor pelindung yang signifikan:
Penggunaan sabuk pengaman: Mampu secara signifikan menurunkan risiko cedera berat atau kematian.
Jenis tabrakan dan lokasi cedera selain kepala tidak menunjukkan pengaruh signifikan dalam model ini.
library(car)
## Warning: package 'car' was built under R version 4.4.3
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.4.3
lm_model <- lm(as.numeric(Injury_Severity) ~ Vehicle_Speed + Seatbelt_Used +
Collision_Type + Injury_Location + Ambulance_Response_Min,
data = data)
vif(lm_model)
## GVIF Df GVIF^(1/(2*Df))
## Vehicle_Speed 1.075544 1 1.037084
## Seatbelt_Used 1.073868 1 1.036276
## Collision_Type 1.159204 3 1.024928
## Injury_Location 1.071372 3 1.011556
## Ambulance_Response_Min 1.055275 1 1.027266
Semua GVIF < 5, menandakan tidak ada multikolinearitas yang signifikan antar prediktor.
library(pscl)
## Warning: package 'pscl' was built under R version 4.4.3
## 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_ordinal)
## fitting null model for pseudo-r2
## llh llhNull G2 McFadden r2ML r2CU
## -186.4484894 -246.6172528 120.3375268 0.2439763 0.4521138 0.4940644
McFadden’s R² > 0.2 → model memiliki daya prediksi yang baik secara keseluruhan.
coefs <- summary(model_ordinal)$coefficients
z_values <- coefs[, "t value"]
p_values <- 2 * (1 - pnorm(abs(z_values)))
result <- cbind(coefs, "p value" = p_values)
print(result)
## Value Std. Error t value p value
## Vehicle_Speed 0.06376597 0.01158251 5.5053657 3.684028e-08
## Seatbelt_Used1 -3.63063947 0.52056488 -6.9744226 3.071321e-12
## Collision_TypeRear -0.06001063 0.44813248 -0.1339127 8.934716e-01
## Collision_TypeSide -0.36731936 0.43043926 -0.8533593 3.934601e-01
## Collision_TypeSingle -0.17473269 0.43084732 -0.4055559 6.850689e-01
## Injury_LocationHead 2.36768522 0.47386052 4.9965868 5.835390e-07
## Injury_LocationLegs -0.19351433 0.43026638 -0.4497547 6.528873e-01
## Injury_LocationMultiple -0.19722161 0.42421500 -0.4649096 6.419962e-01
## Ambulance_Response_Min 0.10926379 0.04317472 2.5307355 1.138237e-02
## Ringan|Sedang -0.03455557 0.86978204 -0.0397290 9.683092e-01
## Sedang|Berat 1.09741315 0.87245853 1.2578399 2.084497e-01
## Berat|Meninggal 2.79453146 0.89416648 3.1252921 1.776286e-03
| Variabel | p-value | Kesimpulan |
|---|---|---|
| Vehicle_Speed | < 0.001 | Signifikan (+) |
| Seatbelt_Used (Yes) | < 0.001 | Signifikan (negatif) |
| Injury_LocationHead | < 0.001 | Signifikan (+) |
| Ambulance_Response_Min | 0.011 | Signifikan (+) |
| Collision_Type & others | > 0.05 | Tidak signifikan |
Kecepatan kendaraan, penggunaan sabuk pengaman, lokasi cedera di kepala, dan waktu respon ambulans berpengaruh signifikan terhadap tingkat keparahan cedera.
model_ordinal$deviance
## [1] 372.897
AIC(model_ordinal)
## [1] 396.897
OR <- exp(coef(model_ordinal))
CI <- exp(confint(model_ordinal))
## Waiting for profiling to be done...
OR_table <- cbind("Odds Ratio" = OR, "Lower CI" = CI[,1], "Upper CI" = CI[,2])
print(OR_table)
## Odds Ratio Lower CI Upper CI
## Vehicle_Speed 1.06584293 1.042591274 1.0911862
## Seatbelt_Used1 0.02649923 0.008902442 0.0693558
## Collision_TypeRear 0.94175452 0.389830226 2.2709062
## Collision_TypeSide 0.69258843 0.296003494 1.6072552
## Collision_TypeSingle 0.83968144 0.359340782 1.9552710
## Injury_LocationHead 10.67265885 4.302094935 27.7228026
## Injury_LocationLegs 0.82405803 0.352891051 1.9145658
## Injury_LocationMultiple 0.82100867 0.355447219 1.8829441
## Ambulance_Response_Min 1.11545655 1.026172306 1.2160942
| Variabel | Odds Ratio | Interpretasi Singkat |
|---|---|---|
| Vehicle_Speed | 1.07 | Setiap peningkatan 1 km/jam meningkatkan risiko cedera |
| Seatbelt_Used (Yes) | 0.026 | Mengurangi peluang cedera parah hingga 97% |
| Injury_LocationHead | 10.67 | Cedera di kepala → 10× lebih besar risiko parah |
| Ambulance_Response_Min | 1.11 | Setiap menit tambahan meningkatkan risiko 11% |
Model regresi ordinal menunjukkan bahwa variabel:
Kecepatan kendaraan,Pemakaian sabuk pengaman, Lokasi cedera (terutama kepala), dan Waktu tanggap ambulans. secara signifikan mempengaruhi tingkat keparahan cedera. Sabuk pengaman secara khusus memiliki efek protektif yang sangat besar.