Analisis Regresi Data Panel dalam Pemodelan Persentase Tingkat Kejahatan Seksual Terhadap Perempuan di India tahun 2001 - 2014

Pendahuluan

Latar Belakang

Saat ini berbagai peristiwa kejahatan dari tahun ke tahun terus meningkat, diantaranya adalah kejahatan yang secara khusus menyasar pada perempuan atau anak dibawah umur. Beberapa faktor yang menyebabkan kejahatan itu terjadi, seperti ketidakadilan gender, masalah ekonomi yang rendah, pengaruh lingkungan yang tidak sehat, gangguan psikologi, dan kurangnya bersosialisasi. Terjadinya kejahatan bisa berdampak buruk dalam kehidupan sosial, ekonomi, pendidikan dan kesehatan. Dalam hal kesehatan, bisa menyebabkan cedera fisik, mental, kecacatan, dan masalah kesehatan terkait lainnya. Selain itu, ada dampak negatif terhadap pendidikan, yang mengakibatkan rendahnya pencapaian pendidikan bagi korban kejahatan. Dimana merasa menjadi kurang nyaman atau tidak percaya diri saat berada di lingkungan publik.

Dari beberapa negara yang sering terjadi kasus kejahatan terhadap perempuan, sebuah proyek dari Thomson Reuters Foundation, menyurvei 213 pakar hak-hak perempuan tentang apa yang mereka anggap sebagai tempat terburuk di dunia bagi perempuan. Hasilnya masuk dalam daftar teratas, yaitu Afghanistan, Kongo, Pakistan, Somalia dan India, berdasarkan berbagai faktor termasuk kejahatan seksual, kurangnya layanan kesehatan, kemiskinan dan perdagangan manusia. Kasus kejahatan terhadap perempuan memberikan reputasi buruk bagi India sebagai negara dengan tingkat keamanan perempuan yang rendah. Kasus kejahatan tersebut mengacu pada kekerasan fisik dan psikis. Ada beberapa bentuk kejahatan terhadap perempuan di India yaitu, pembunuhan (kematian mahar, pembunuhan demi kehormatan), pembunuhan bayi perempuan, kejahatan seksual (pemerkosaan, kekerasan terkait kesopanan, perdagangan manusia, prostitusi paksa, kekerasan dalam rumah tangga). Negara India juga dianggap sebagai salah satu negara paling berbahaya, dimana pada kasus kejahatan seksual adalah salah satu kasus yang paling umum terjadi. Peningkatan jumlah kasus kekerasan terhadap perempuan di India, yakni sebesar 18%, sementara jumlah kasus kejahatan seksual naik hingga 32% di tahun 2014.

Selain peningkatan jumlah kasus pelecehan, ada kasus kematian mahar yang juga meningkat di negara India. Sejumlah data menyebutkan, setiap jam ada perempuan India yang meninggal karena ketidaksanggupan untuk membayar mahar dalam perkawinan. Lalu pada kasus penyerangan terhadap perempuan di India juga banyak terjadi, pelaku tidak hanya melakukan kekerasan seperti pemukulan, melainkan dari korban juga dilakukan kekerasan seksual. Kemudian pada kasus penghinaan kesopanan perempuan, tidak hanya dari segi fisik namun psikis. Dimana banyak dari korban juga merasa dilecehkan secara mental. Beberapa perempuan di India yang melapor lebih banyak korban pelecehan dibanding korban tindak kekerasan. Dari korban yang melapor mengakui bahwa sebagian besar pelakunya adalah orang terdekat, baik suami,keluarga, atau kerabat korban.

Oleh karena itu, penelitian ini bertujuan untuk menganalisis tingkat kejahatan seksual terhadap perempuan di negara India dengan menggunakan metode analisis deskriptif dan regresi data panel. Data yang akan digunakan adalah data dari beberapa kasus kejahatan yang di terjadi di negara India, seperti kasus pelecehan, penculikan, kematian mahar, penyerangan, penghinaan terhadap kesopanan perempuan, kekerasan yang dilakukan oleh suami atau kerabat dekat, dan penjualan anak perempuan. Dimana dari kasus pelecehan tersebut akan menjadi variabel target untuk mengetahui hubungan antar beberapa kasus-kasus yang lainnya.

Hasil penelitian ini diharapkan dapat memberikan pemahaman yang lebih baik tentang tingkat kejahatan terhadap perempuan di negara India, faktor-faktor yang mempengaruhinya, dan implikasinya terhadap kebijakan dalam memperdayakan dan perlindungan terhadap perempuan. Penelitian ini diharapkan dapat menjadi dasar bagi pemerintah, biro kepolisian, komunitas-komunitas anti kekerasan dan pemangku kepentingan lainnya dalam mengembangkan kebijakan yang efektif untuk mengurangi dan menekan kasus kejahatan agar tidak banyak terjadi di tahun kedepannya.

Analisis Data

Persiapan Data

Packages yang Digunakan

Berikut adalah beberapa Packages yang akan digunakan untuk analisis data kali ini.

# Packages untuk pengolahan dataframe
library(dplyr)
library(tidyr)
library(lubridate)
library(zoo)

# Packages untuk membuat visualisasi
library(ggcorrplot)
library(ggplot2)
library(plotly)

# Packages untuk melakukan analisis
library(plm)
library(lfe)
library(lmtest)
library(car)
library(tseries)
library(MLmetrics) 

Data yang Digunakan

crime <- read.csv("data_input/crimes_against_women.csv")
crime

🧮 Pemeriksaan Struktur Data

glimpse(crime)
#> Rows: 10,677
#> Columns: 11
#> $ X                                                   <int> 0, 1, 2, 3, 4, 5, …
#> $ STATE.UT                                            <chr> "ANDHRA PRADESH", …
#> $ DISTRICT                                            <chr> "ADILABAD", "ANANT…
#> $ Year                                                <int> 2001, 2001, 2001, …
#> $ Rape                                                <int> 50, 23, 27, 20, 23…
#> $ Kidnapping.and.Abduction                            <int> 30, 30, 34, 20, 26…
#> $ Dowry.Deaths                                        <int> 16, 7, 14, 17, 12,…
#> $ Assault.on.women.with.intent.to.outrage.her.modesty <int> 149, 118, 112, 126…
#> $ Insult.to.modesty.of.Women                          <int> 34, 24, 83, 38, 58…
#> $ Cruelty.by.Husband.or.his.Relatives                 <int> 175, 154, 186, 57,…
#> $ Importation.of.Girls                                <int> 0, 0, 0, 0, 0, 0, …

🔎 Deskripsi dari setiap kolom:

  • STATE.UT : negara bagian India
  • DISTRICT : daerah negara India
  • Year : tahun kasus terjadi
  • Rape : kasus pelecehan
  • Kidnapping.and.Abduction : kasus penculikan
  • Dowry.Deaths : kasus kematian mahar
  • Assault.on.women.with.intent.to.outrage.her.modesty : kasus penyerangan terhadap perempuan
  • Insult.to.modesty.of.Women : kasus penghinaan terhadap kesopanan perempuan
  • Cruelty.by.Husband.or.his.Relatives: kasus kekerasan yang dilakukan oleh suami atau kerabat dekat
  • Importation.of.Girls : kasus penjualan anak perempuan

Data Preparation

⚙️ Memfilter data yang diperlukan:

crime <- select( .data = crime,
        -X,
       -DISTRICT)

Setelah dilakukan pengecekkan pada data yang digunakan, ternyata ada beberapa penulisan pada kolom STATE.UT yang tidak konsisten. Penulisan pada kolom STATE.UT tersebut, dikhawatirkan akan mempengaruhi kesalahan pada saat pemodelan. Maka dari itu, kita perlu membuatnya menjadi konsisten dengan melakukan tracing terlebih dahulu pada kolom STATE.UT. Lalu disamaratakan menggunakan huruf kapital dan dibuat kolom baru dengan variabel State.New

crime <- crime %>% 
  mutate(State.New = toupper(STATE.UT))
crime

Kemudian kita akan melihat nilai dari kolom State.New, untuk mencari tahu nama-nama State yang penulisannya tidak konsisten. Menggunakan fungsi unique() dan diurutkan dengan fungsi sort()

sort(unique(crime$State.New))
#>  [1] "A & N ISLANDS"     "A&N ISLANDS"       "ANDHRA PRADESH"   
#>  [4] "ARUNACHAL PRADESH" "ASSAM"             "BIHAR"            
#>  [7] "CHANDIGARH"        "CHHATTISGARH"      "D & N HAVELI"     
#> [10] "D&N HAVELI"        "DAMAN & DIU"       "DELHI"            
#> [13] "DELHI UT"          "GOA"               "GUJARAT"          
#> [16] "HARYANA"           "HIMACHAL PRADESH"  "JAMMU & KASHMIR"  
#> [19] "JHARKHAND"         "KARNATAKA"         "KERALA"           
#> [22] "LAKSHADWEEP"       "MADHYA PRADESH"    "MAHARASHTRA"      
#> [25] "MANIPUR"           "MEGHALAYA"         "MIZORAM"          
#> [28] "NAGALAND"          "ODISHA"            "PUDUCHERRY"       
#> [31] "PUNJAB"            "RAJASTHAN"         "SIKKIM"           
#> [34] "TAMIL NADU"        "TELANGANA"         "TRIPURA"          
#> [37] "UTTAR PRADESH"     "UTTARAKHAND"       "WEST BENGAL"

Dari data diatas diketahui ada beberapa State yang penulisannya tidak konsisten, yakni “A & N ISLANDS” dengan “A&N ISLANDS”, “D & N HAVELI” dengan “D&N HAVELI”, dan “DELHI” dengan “DELHI UT”. Dimana State yang penulisannya berbeda (padahal dalam state yang sama) itu diidentifikasi sebagai State yang berbeda. Maka dari itu, kita akan melakukan convert, agar terbaca menjadi dalam satu State dengan menggunakan fungsi if else()

convert_state <- function(state) {
  if (state %in% c("A & N ISLANDS", "A&N ISLANDS"))
    {state <- "A & N ISLANDS"}
  else if (state %in% c("D & N HAVELI" , "D&N HAVELI"))
    {state <- "D & N HAVELI"}
  else if (state %in% c("DELHI" , "DELHI UT"))
    {state <- "DELHI"}
  else
    {state <- state}
}

Untuk mengimplementasikan fungsi convert_state kita bisa menggunakan sapply()dengan parameter:

  • X = kolom apa yang ingin kita transformasi
  • FUN = nama fungsi yang ingin diterapkan
crime$State.India <- sapply(X = crime$State.New,
                            FUN = convert_state) 

Kemudian kita akan melakukan pengecekkan kembali nilai pada kolom State.India

sort(unique(crime$State.India))
#>  [1] "A & N ISLANDS"     "ANDHRA PRADESH"    "ARUNACHAL PRADESH"
#>  [4] "ASSAM"             "BIHAR"             "CHANDIGARH"       
#>  [7] "CHHATTISGARH"      "D & N HAVELI"      "DAMAN & DIU"      
#> [10] "DELHI"             "GOA"               "GUJARAT"          
#> [13] "HARYANA"           "HIMACHAL PRADESH"  "JAMMU & KASHMIR"  
#> [16] "JHARKHAND"         "KARNATAKA"         "KERALA"           
#> [19] "LAKSHADWEEP"       "MADHYA PRADESH"    "MAHARASHTRA"      
#> [22] "MANIPUR"           "MEGHALAYA"         "MIZORAM"          
#> [25] "NAGALAND"          "ODISHA"            "PUDUCHERRY"       
#> [28] "PUNJAB"            "RAJASTHAN"         "SIKKIM"           
#> [31] "TAMIL NADU"        "TELANGANA"         "TRIPURA"          
#> [34] "UTTAR PRADESH"     "UTTARAKHAND"       "WEST BENGAL"

Dari hasil data diatas pada kolom State.India sudah konsisten dalam penulisannya.

️⚙️Selanjutnya pada data yang digunakan di group berdasarkan State.India dan Year, sehingga menampilkan data total kasus keseluruhan di India

crime <- crime %>%
  group_by(State.India, Year) %>% 
  summarise_if(is.numeric,sum) %>% 
  ungroup()
crime

Pemeriksaan Keseimbangan Data

Untuk memeriksa apakah data kita sudah seimbang dapat dilakukan dengan fungsi is.pbalanced() yang telah tersedia pada packages plm.

table(crime$State.India)
#> 
#>     A & N ISLANDS    ANDHRA PRADESH ARUNACHAL PRADESH             ASSAM 
#>                14                14                14                14 
#>             BIHAR        CHANDIGARH      CHHATTISGARH      D & N HAVELI 
#>                14                14                14                14 
#>       DAMAN & DIU             DELHI               GOA           GUJARAT 
#>                14                14                14                14 
#>           HARYANA  HIMACHAL PRADESH   JAMMU & KASHMIR         JHARKHAND 
#>                14                14                14                14 
#>         KARNATAKA            KERALA       LAKSHADWEEP    MADHYA PRADESH 
#>                14                14                14                14 
#>       MAHARASHTRA           MANIPUR         MEGHALAYA           MIZORAM 
#>                14                14                14                14 
#>          NAGALAND            ODISHA        PUDUCHERRY            PUNJAB 
#>                14                14                14                14 
#>         RAJASTHAN            SIKKIM        TAMIL NADU         TELANGANA 
#>                14                14                14                 1 
#>           TRIPURA     UTTAR PRADESH       UTTARAKHAND       WEST BENGAL 
#>                14                14                14                14
is.pbalanced(crime)
#> [1] FALSE

📈 Insight: data imbalance dengan kondisi: Dari beberapa wilayah India ada satu State yang digunakan memiliki informasi waktu yang berbeda, yakni State TELANGANA, dimana dari data selama 14 tahun hanya terdapat 1 data tahun saja.

Balancing the Data

Untuk melakukan balancing dapat menggunakan fungsi make.pbalanced dengan parameter balance.type yang dapat diisi dengan 3 opsi sebagai berikut:

  1. Balancing metode fill : untuk setiap kolom waktu yg hilang akan diberikan nilai NA
  2. Balancing metode shared.times : dari data akan diambil keseluruhan individu dengan ketentuan informasi waktu terdapat di semua individu
  3. Balancing metode shared.individuals : dari data akan diambil individu dengan ketentuan informasi waktu lengkap
# balancing metode fill
balance1 <- pdata.frame(crime, index = c("State.India","Year") ) %>%  
  make.pbalanced(balance.type = "fill") 

table(balance1$State.India)
#> 
#>     A & N ISLANDS    ANDHRA PRADESH ARUNACHAL PRADESH             ASSAM 
#>                14                14                14                14 
#>             BIHAR        CHANDIGARH      CHHATTISGARH      D & N HAVELI 
#>                14                14                14                14 
#>       DAMAN & DIU             DELHI               GOA           GUJARAT 
#>                14                14                14                14 
#>           HARYANA  HIMACHAL PRADESH   JAMMU & KASHMIR         JHARKHAND 
#>                14                14                14                14 
#>         KARNATAKA            KERALA       LAKSHADWEEP    MADHYA PRADESH 
#>                14                14                14                14 
#>       MAHARASHTRA           MANIPUR         MEGHALAYA           MIZORAM 
#>                14                14                14                14 
#>          NAGALAND            ODISHA        PUDUCHERRY            PUNJAB 
#>                14                14                14                14 
#>         RAJASTHAN            SIKKIM        TAMIL NADU         TELANGANA 
#>                14                14                14                14 
#>           TRIPURA     UTTAR PRADESH       UTTARAKHAND       WEST BENGAL 
#>                14                14                14                14
# balancing metode shared.times
balance2 <- pdata.frame(crime, index = c("State.India","Year") ) %>% make.pbalanced(balance.type = "shared.times")
table(balance2$State.India)
#> 
#>     A & N ISLANDS    ANDHRA PRADESH ARUNACHAL PRADESH             ASSAM 
#>                 1                 1                 1                 1 
#>             BIHAR        CHANDIGARH      CHHATTISGARH      D & N HAVELI 
#>                 1                 1                 1                 1 
#>       DAMAN & DIU             DELHI               GOA           GUJARAT 
#>                 1                 1                 1                 1 
#>           HARYANA  HIMACHAL PRADESH   JAMMU & KASHMIR         JHARKHAND 
#>                 1                 1                 1                 1 
#>         KARNATAKA            KERALA       LAKSHADWEEP    MADHYA PRADESH 
#>                 1                 1                 1                 1 
#>       MAHARASHTRA           MANIPUR         MEGHALAYA           MIZORAM 
#>                 1                 1                 1                 1 
#>          NAGALAND            ODISHA        PUDUCHERRY            PUNJAB 
#>                 1                 1                 1                 1 
#>         RAJASTHAN            SIKKIM        TAMIL NADU         TELANGANA 
#>                 1                 1                 1                 1 
#>           TRIPURA     UTTAR PRADESH       UTTARAKHAND       WEST BENGAL 
#>                 1                 1                 1                 1
# balancing metode shared.individuals
balance3 <- pdata.frame(crime, index = c("State.India","Year") ) %>% make.pbalanced(balance.type = "shared.individuals")
table(balance3$State.India)
#> 
#>     A & N ISLANDS    ANDHRA PRADESH ARUNACHAL PRADESH             ASSAM 
#>                14                14                14                14 
#>             BIHAR        CHANDIGARH      CHHATTISGARH      D & N HAVELI 
#>                14                14                14                14 
#>       DAMAN & DIU             DELHI               GOA           GUJARAT 
#>                14                14                14                14 
#>           HARYANA  HIMACHAL PRADESH   JAMMU & KASHMIR         JHARKHAND 
#>                14                14                14                14 
#>         KARNATAKA            KERALA       LAKSHADWEEP    MADHYA PRADESH 
#>                14                14                14                14 
#>       MAHARASHTRA           MANIPUR         MEGHALAYA           MIZORAM 
#>                14                14                14                14 
#>          NAGALAND            ODISHA        PUDUCHERRY            PUNJAB 
#>                14                14                14                14 
#>         RAJASTHAN            SIKKIM        TAMIL NADU         TELANGANA 
#>                14                14                14                 0 
#>           TRIPURA     UTTAR PRADESH       UTTARAKHAND       WEST BENGAL 
#>                14                14                14                14

📈 Insight:

Melihat dari ketiga kondisi data yang dimiliki, kita tidak akan memakai balancing shared.times karena akan menghilangkan banyak informasi. Selanjutnya hanya akan menggunakan metode shared.individuals, dimana data State Telangana yang nilainya hanya memiliki informasi waktu hanya 1 tahun dan setelah dilakukan pengecekkan untuk State Telangana hanya memiliki data tahun 2014 saja. Maka dari itu, kita akan menggunakan metode shared individuals, dengan meng-exclude State Telangana.

Setelah pada hasil balance sudah ditentukan, akan disimpan pada pdataframe bernama balanced dan kita akan memfilter beberapa State untuk dilakukan pemodelan. Untuk fokus State yang dimasukkan ke pemodelan, yakni State yang cenderung memiliki angka kasus kejahatan cukup tinggi terhadap perempuan.

# mengambil data state tertentu
balanced <- balance3 %>% filter(State.India %in% c("ANDHRA PRADESH", "ASSAM", "BIHAR", "CHHATTISGARH" ,"JHARKHAND", "MADHYA PRADESH", "MAHARASHTRA", "ODISHA", "RAJASTHAN", "UTTAR PRADESH", "WEST BENGAL"))

# memeriksa kembali keseimbangan data
is.pbalanced(balanced)
#> [1] TRUE

Dari hasil pengecekkan data dapat diketahui bahwa data yang digunakan sudah lengkap.

⚙️ Untuk memastikannya kembali dapat melakukan pengecekkan kelengkapan data

colSums(is.na(balanced))
#>                                         State.India 
#>                                                   0 
#>                                                Year 
#>                                                   0 
#>                                                Rape 
#>                                                   0 
#>                            Kidnapping.and.Abduction 
#>                                                   0 
#>                                        Dowry.Deaths 
#>                                                   0 
#> Assault.on.women.with.intent.to.outrage.her.modesty 
#>                                                   0 
#>                          Insult.to.modesty.of.Women 
#>                                                   0 
#>                 Cruelty.by.Husband.or.his.Relatives 
#>                                                   0 
#>                                Importation.of.Girls 
#>                                                   0

Dari hasil pengecekkan kelengkapan data dapat diketahui bahwa tidak ditemukan adanya data yang kosong atau NA.

Eksplorasi Data

Ringkasan Data

balanced %>% summary()
#>          State.India      Year         Rape       Kidnapping.and.Abduction
#>  ANDHRA PRADESH:14   2001   :11   Min.   : 1134   Min.   :  298           
#>  ASSAM         :14   2002   :11   1st Qu.: 1970   1st Qu.: 1339           
#>  BIHAR         :14   2003   :11   Median : 2570   Median : 2267           
#>  CHHATTISGARH  :14   2004   :11   Mean   : 3054   Mean   : 3471           
#>  JHARKHAND     :14   2005   :11   3rd Qu.: 3457   3rd Qu.: 4363           
#>  MADHYA PRADESH:14   2006   :11   Max.   :10152   Max.   :21252           
#>  (Other)       :70   (Other):88                                           
#>   Dowry.Deaths    Assault.on.women.with.intent.to.outrage.her.modesty
#>  Min.   : 118.0   Min.   :  236                                      
#>  1st Qu.: 553.5   1st Qu.: 2426                                      
#>  Median : 856.0   Median : 4824                                      
#>  Mean   :1188.0   Mean   : 5656                                      
#>  3rd Qu.:1436.5   3rd Qu.: 7522                                      
#>  Max.   :4938.0   Max.   :20002                                      
#>                                                                      
#>  Insult.to.modesty.of.Women Cruelty.by.Husband.or.his.Relatives
#>  Min.   :   2.0             Min.   :  968                      
#>  1st Qu.:  40.5             1st Qu.: 3288                      
#>  Median : 290.0             Median : 8467                      
#>  Mean   :1381.8             Mean   :10770                      
#>  3rd Qu.:1564.5             3rd Qu.:15316                      
#>  Max.   :9940.0             Max.   :46556                      
#>                                                                
#>  Importation.of.Girls
#>  Min.   :  0.00      
#>  1st Qu.:  0.00      
#>  Median :  0.00      
#>  Mean   : 11.17      
#>  3rd Qu.:  7.50      
#>  Max.   :166.00      
#> 

Berdasarkan ringkasan diatas dapat kita ketahui beberapa hal berikut:

  • [Rape/ Y] : Rata-rata tingkat kasus pelecahan tertinggi di negara India adalah 3.054 dengan nilai tertinggi sebesar 10.152 (MADHYA PRADESH) dan tingkat kasus pelecahan terendah adalah 1.134 (JHARKHAND).
  • [Kidnapping and abduction / X1] : Rata-rata tingkat kasus penculikan adalah 3.471 dengan nilai tertinggi sebesar 21.252, artinya kasus penculikan terhadap perempuan masih sering terjadi di negara India.
  • [Dowry deaths / X2] : Rata-rata tingkat kasus kematian mahar adalah 1188 dengan nilai tertinggi sebesar 4.938, artinya kasus kematian mahar di negara India masih cukup tinggi. Dimana suami dan mertua akan berusaha memeras mahar yang lebih besar, sehingga mengakibatkan istri melakukan bunuh diri.
  • [Assault on women with intent to outrage her modesty / X3] : Rata-rata tingkat kasus penyerangan terhadap perempuan adalah 5.656 dengan nilai tertinggi sebesar 20.002, artinya untuk tingkat keamanan perempuan di negara India memang masih rendah.
  • [Insult to modesty of women / X4] : Rata-rata tingkat kasus penghinaan terhadap kesopanan perempuan di negara India adalah 1.381 dengan nilai tertinggi sebesar 9.940, artinya bukan hanya kejahatan fisik yang terjadi cukup tinggi melainkan kejahatan dalam psikis terjadap perempuan juga tinggi di negara India.
  • [Cruelty by husband or his relatives / X5] : Rata-rata tingkat kasus kekerasan oleh suami atau kerabat terdekat di negara India adalah 10.770 dengan nilai tertinggi sebesar 46.556, yang artinya dari tahun 2001-2014 kasus kejahatan terhadap perempuan yang terjadi di negara India, pelakunya dari orang-orang terdekat korban itu sendiri.
  • [Importation of girls / X6] : Rata-rata tingkat kasus memperjual-belikan anak perempuan di negara India masih termasuk kecil yaitu sebesar 11 dengan nilai tertinggi sebesar 166, yang artinya untuk usia korban kejahatan di India termasuk anak perempuan di bawah umur.

Matriks Korelasi(Heatmap)

Dikarenakan dari beberapa kasus kejahatan di India yang paling umum terjadi adalah kasus pelecehan. Maka dari itu, kita akan menjadikan kolom Rape menjadi variabel target dan variabel prediktornya adalah kasus selain pelecehan. Untuk mengetahui seberapa besar tingkat hubungan antar variabel prediktor terhadap variabel target dapat kita gunakan fungsi ggcorrplot.

balanced %>% select(c(-1,-2)) %>% cor() %>% 
ggcorrplot(type = "lower",lab = TRUE)

📈 Berdasarkan hasil plot heatmap diatas, dapat diketahui bahwa:

  • Terdapat satu variabel yang memiliki korelasi tinggi terhadap persentase tingkat pelecehan yakni variabel kasus penyerangan terhadap perempuan.
  • Sedangkan keempat variabel lainnya memiliki korelasi yang relatif kecil terhadap kasus pelecehan.
  • Terdapat indikasi terjadi multikolinieritas antara variabel Kidnapping.and.Abduction dengan Dowry.Deaths.

Pembuatan Model

Cross-Validation

Tahapan cross validation baik akan selalu dilakukan sebelum pembuatan model, data akan dibagi menjadi data train dan data test. Dikarenakan data panel memiliki informasi keterangan waktu maka pembagian data tidak boleh diambil secara acak melainkan dibagi dengan cara dipisah secara berurutan. Untuk melakukannya kita bisa menggunakan bantuan fungsi filter(). Dimana untuk data train diambil dari tahun 2001-2013, dan data test diambil tahun 2014.

#membuat data train
data_train <- balanced %>% filter(Year != 2014)

#membuat data test
data_test <- balanced %>% filter(Year %in% 2014)

Pemeriksaan Asumsi Multikolinieritas

Dikarenakan pada hasil pemeriksaan korelasi pada tahapan EDA sebelumnya menunjukkan adanya indikasi multikolinieritas antar variabel prediktor, maka akan dilakukan pemeriksaan asumsi multikolinieritas terlebih dahulu dengan cara pembuatan model regresi dengan fungsi lm() dan dilanjutkan pengujian menggunakan fungsi vif(). Ketika nilai VIF lebih dari 10 artinya terjadi multikolinearitas, dan harapannya mendapatkan VIF < 10.

lm(Rape ~ . -State.India -Year, data_train) %>% vif()
#>                            Kidnapping.and.Abduction 
#>                                            3.751602 
#>                                        Dowry.Deaths 
#>                                            3.207960 
#> Assault.on.women.with.intent.to.outrage.her.modesty 
#>                                            1.359525 
#>                          Insult.to.modesty.of.Women 
#>                                            2.044257 
#>                 Cruelty.by.Husband.or.his.Relatives 
#>                                            2.188551 
#>                                Importation.of.Girls 
#>                                            1.337760

📉 Berdasarkan hasil pengujian VIF diatas didapati keseluruhan variabel prediktor memiliki nilai VIF < 10, artinya tidak terjadi multikolinieritas pada model. Sehingga seluruh variabel prediktor dapat digunakan untuk pembuatan model.

Untuk setiap pembuatan model akan digunakan fungsi plm() dengan parameter:

  • formula = Target ~ Prediktor
  • data = berupa dataframe
  • index = c(“kolom_individu”,“kolom_waktu”)
  • model =
    “pooling” : model gabungan atau common effect model (CEM)
    “within” : model pengaruh tetap atau fixed effect model (FEM)
    “random” : model pengaruh acak atau random effect (REM)

🔻 Penentuan variabel:

  • Variabel Target : Rape
  • Variabel Prediktor : Semua variabel kasus, kecuali Rape.

Model Gabungan (CEM)

cem <- plm(Rape ~ Kidnapping.and.Abduction + Dowry.Deaths + Assault.on.women.with.intent.to.outrage.her.modesty + Insult.to.modesty.of.Women + Cruelty.by.Husband.or.his.Relatives + Importation.of.Girls,
           data = data_train,
           index = c("State.India","Year"),
           model = "pooling")

Model Pengaruh Tetap (FEM)

fem <- plm(Rape ~ Kidnapping.and.Abduction + Dowry.Deaths + Assault.on.women.with.intent.to.outrage.her.modesty + Insult.to.modesty.of.Women + Cruelty.by.Husband.or.his.Relatives + Importation.of.Girls,
           data = data_train,
           index = c("State.India","Year"),
           model = "within")

Uji Chow

Uji Chow dilakukan untuk memilih model terbaik antara model common effect (cem) dengan model fixed effect (fem).

H0 : Model Common Effect
H1 : Model Fixed Effect

H0 ditolak jika P-value lebih kecil dari nilai α. Nilai α yang digunakan sebesar (0.05).

pooltest(cem,fem)
#> 
#>  F statistic
#> 
#> data:  Rape ~ Kidnapping.and.Abduction + Dowry.Deaths + Assault.on.women.with.intent.to.outrage.her.modesty +  ...
#> F = 19.261, df1 = 10, df2 = 126, p-value < 0.00000000000000022
#> alternative hypothesis: unstability

Keputusan : Karena p-value 0.00000000000000022 < α (0.05), maka tolak H0

📉 Kesimpulan : Dengan tingkat keyakinan 95%, bahwa model fixed effect lebih baik digunakan daripada menggunakan metode common effect.

Uji Hausman

Lalu dilakukan pengujian kembali dengan Uji Hausman untuk mengetahui apakah terdapat random effect dalam model data panel.

H0 : Model Random Effect
H1 : Model Fixed Effect

H0 ditolak jika P-value lebih kecil dari nilai α. Nilai α yang digunakan sebesar (0.05).

# membuat model regresi panel
fem <- plm(Rape ~ Kidnapping.and.Abduction + Dowry.Deaths + Assault.on.women.with.intent.to.outrage.her.modesty + Insult.to.modesty.of.Women + Cruelty.by.Husband.or.his.Relatives + Importation.of.Girls,
           data = data_train,
           index = c("State.India","Year"),
           model = "within")

rem <- plm(Rape ~ Kidnapping.and.Abduction + Dowry.Deaths + Assault.on.women.with.intent.to.outrage.her.modesty + Insult.to.modesty.of.Women + Cruelty.by.Husband.or.his.Relatives + Importation.of.Girls,
           data = data_train,
           index = c("State.India","Year"),
           model = "random")

# Menguji Hausmaan
phtest(fem,rem)
#> 
#>  Hausman Test
#> 
#> data:  Rape ~ Kidnapping.and.Abduction + Dowry.Deaths + Assault.on.women.with.intent.to.outrage.her.modesty +  ...
#> chisq = 6.4804, df = 6, p-value = 0.3716
#> alternative hypothesis: one model is inconsistent

Keputusan : Karena p-value 0.3716 > α (0.05), maka gagal tolak H0

📉 Kesimpulan : Dengan tingkat keyakinan 95%, bahwa model random effect merupakan metode yang lebih baik untuk digunakan bila dibandingkan dengan model fixed effect.

Uji Breusch-Pagan

Setelah diperoleh model yang terbaik yaitu model random effect, selanjutnya akan dilakukan uji Breusch-Pagan.
Gunanya untuk menentukan apakah ada time effect maupun cross section effect atau bahkan tidak ada pada model. Ketika nilai p-value kurang dari α maka dapat disimpulkan ada effect.

#Uji Breusch Pagan
gr <- plm(Rape ~ Kidnapping.and.Abduction + Dowry.Deaths + Assault.on.women.with.intent.to.outrage.her.modesty + Insult.to.modesty.of.Women + Cruelty.by.Husband.or.his.Relatives + Importation.of.Girls,
          data = data_train,
          model = "random")

#Efek Dua Arah
plmtest(gr, effect="twoways", type="bp")
#> 
#>  Lagrange Multiplier Test - two-ways effects (Breusch-Pagan)
#> 
#> data:  Rape ~ Kidnapping.and.Abduction + Dowry.Deaths + Assault.on.women.with.intent.to.outrage.her.modesty +  ...
#> chisq = 194.04, df = 2, p-value < 0.00000000000000022
#> alternative hypothesis: significant effects
#Cross Section effect
plmtest(gr, effect="individual", type="bp")
#> 
#>  Lagrange Multiplier Test - (Breusch-Pagan)
#> 
#> data:  Rape ~ Kidnapping.and.Abduction + Dowry.Deaths + Assault.on.women.with.intent.to.outrage.her.modesty +  ...
#> chisq = 191.42, df = 1, p-value < 0.00000000000000022
#> alternative hypothesis: significant effects
#Efek Waktu/Time
plmtest(gr, effect="time", type="bp")
#> 
#>  Lagrange Multiplier Test - time effects (Breusch-Pagan)
#> 
#> data:  Rape ~ Kidnapping.and.Abduction + Dowry.Deaths + Assault.on.women.with.intent.to.outrage.her.modesty +  ...
#> chisq = 2.6148, df = 1, p-value = 0.1059
#> alternative hypothesis: significant effects

📉 Berdasarkan hasil pengujian Breusch-Pagan diperoleh kesimpulan bahwa pada model random effect terdapat efek dua arah. Namun setelah diuji cross section effect dan time effect, hanya terdapat cross section effect.

Dari Uji Hausman dan Uji Breusch-Pagan disimpulkan bahwa model yang akan digunakan adalah model random effect dengan cross section effect. Kemudian dilakukan uji signifikansi variabel pada model sebagai berikut :

#model gabungan dengan pengaruh waktu
pred_random <- plm(Rape ~ Kidnapping.and.Abduction + Dowry.Deaths + Assault.on.women.with.intent.to.outrage.her.modesty + Insult.to.modesty.of.Women + Cruelty.by.Husband.or.his.Relatives + Importation.of.Girls,
          data = data_train,
           index = c("State.India","Year"),
           model = "random",
           effect = "individual")

Prediksi Model

Untuk melakukan prediksi pada model akan gunakan fungsi predict() dengan parameter:

  • object = nama model yang digunakan
  • newdata = data baru yang akan diprediksi
model_pred <- predict(pred_random,newdata = data_test)
library(MLmetrics)
MAPE(y_pred = model_pred , y_true = data_test$Rape)
#> [1] 0.3466585

Diperoleh nilai MAPE sebesar 0.3466585 artinya model kita dalam memprediksi data baru mengalami kesalahan prediksi sebesar 34.66% atau dapat dikatakan model kita sudah cukup baik dalam memprediksi nilai baru.

Interpretasi Model

summary(pred_random)
#> Oneway (individual) effect Random Effect Model 
#>    (Swamy-Arora's transformation)
#> 
#> Call:
#> plm(formula = Rape ~ Kidnapping.and.Abduction + Dowry.Deaths + 
#>     Assault.on.women.with.intent.to.outrage.her.modesty + Insult.to.modesty.of.Women + 
#>     Cruelty.by.Husband.or.his.Relatives + Importation.of.Girls, 
#>     data = data_train, effect = "individual", model = "random", 
#>     index = c("State.India", "Year"))
#> 
#> Unbalanced Panel: n = 11, T = 3-14, N = 143
#> 
#> Effects:
#>                    var  std.dev share
#> idiosyncratic 233361.7    483.1  0.35
#> individual    433166.5    658.2  0.65
#> theta:
#>    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#>  0.6098  0.8075  0.8075  0.8034  0.8075  0.8075 
#> 
#> Residuals:
#>     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
#> -1736.28  -273.00     5.12     5.08   251.22  1626.74 
#> 
#> Coefficients:
#>                                                        Estimate  Std. Error
#> (Intercept)                                         784.0929334 236.6121649
#> Kidnapping.and.Abduction                              0.0069074   0.0316698
#> Dowry.Deaths                                          0.0454791   0.0936395
#> Assault.on.women.with.intent.to.outrage.her.modesty   0.3346937   0.0157218
#> Insult.to.modesty.of.Women                           -0.1355541   0.0379291
#> Cruelty.by.Husband.or.his.Relatives                   0.0382229   0.0096452
#> Importation.of.Girls                                  4.2652281   1.8350691
#>                                                     z-value
#> (Intercept)                                          3.3138
#> Kidnapping.and.Abduction                             0.2181
#> Dowry.Deaths                                         0.4857
#> Assault.on.women.with.intent.to.outrage.her.modesty 21.2886
#> Insult.to.modesty.of.Women                          -3.5739
#> Cruelty.by.Husband.or.his.Relatives                  3.9629
#> Importation.of.Girls                                 2.3243
#>                                                                  Pr(>|z|)    
#> (Intercept)                                                     0.0009203 ***
#> Kidnapping.and.Abduction                                        0.8273463    
#> Dowry.Deaths                                                    0.6271920    
#> Assault.on.women.with.intent.to.outrage.her.modesty < 0.00000000000000022 ***
#> Insult.to.modesty.of.Women                                      0.0003517 ***
#> Cruelty.by.Husband.or.his.Relatives                            0.00007404 ***
#> Importation.of.Girls                                            0.0201101 *  
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Total Sum of Squares:    191890000
#> Residual Sum of Squares: 32002000
#> R-Squared:      0.83325
#> Adj. R-Squared: 0.82589
#> Chisq: 668.73 on 6 DF, p-value: < 0.000000000000000222

📉 Berdasarkan output diatas dapat kita peroleh informasi sebagai berikut:

  • Bahwa dari keenam variabel yang diujikan untuk tingkat kasus pelecehan terhadap perempuan di India yang signifikan berpengaruh, yakni variabel kasus penyerangan, kasus penghinaan terhadap kesopanan perempuan, dan kasus kekerasan yang dilakukan oleh suami atau kerabat dekat, dan kasus memperjualbelikan anak perempuan dimana ditunjukkan dengan nilai p-value kurang dari 0.05.
  • Diperoleh nilai adj. R-squared sebesar 0.82589, artinya model dapat menjelaskan persentase tingkat kasus kejahatan seksual terhadap perempuan di India dengan baik sebesar 82.59%.

Rape = 0.0069074 Kidnapping.and.Abduction + 0.0454791 Dowry.Deaths + 0.3346937 Assault.on.women.with.intent.to.outrage.her.modesty - 0.1355541 Insult.to.modesty.of.Women + 0.0382229 Cruelty.by.Husband.or.his.Relatives + 4.2652281 Importation.of.Girls + efek wilayah negara + efek waktu

  • Kidnapping.and.Abduction = 0.0069074, artinya untuk setiap kenaikan 1 satuan nilai Kidnapping.and.Abduction akan menambah nilai Rape sebesar 0.0069074 dengan mengganggap variabel lain konstan. Variabelnya bernilai positif, artinya ada sebagian kasus kejadian penculikan, dari pelakunya juga melakukan tindak pelecehan terhadap korban.
  • Dowry.Deaths = 0.0454791, artinya untuk setiap kenaikan 1 satuan nilai Dowry.Deaths akan menambah nilai Rape sebesar 0.0454791 dengan mengganggap variabel lain konstan. Variabelnya bernilai positif, artinya memang dari korban perempuan kematian mahar, dari calon atau suaminya juga ada melakukan tindak kekerasan atau pelecehan.
  • Assault.on.women.with.intent.to.outrage.her.modesty = 0.3346937, artinya untuk setiap kenaikan 1 satuan nilai Assault.on.women.with.intent.to.outrage.her.modesty akan menambah nilai Rape sebesar 0.3346937 dengan mengganggap variabel lain konstan. Variabelnya bernilai positif, artinya dari kasus penyerangan tersebut ada tindak pelecehan yang dilakukan oleh pelaku.
  • Insult.to.modesty.of.Women = -0.1355541, artinya untuk setiap kenaikan 1 satuan nilai Insult.to.modesty.of.Women akan menurunkan nilai Rape sebesar 0.1355541 dengan mengganggap variabel lain konstan. Variabelnya bernilai negatif, hal ini memberikan kasus penyerangan terhadap kesopanan perempuan hanya berdampak pada mental atau psikis korban.
  • Cruelty.by.Husband.or.his.Relatives = 0.0382229, artinya untuk setiap kenaikan 1 satuan nilai Cruelty.by.Husband.or.his.Relatives akan menambah nilai Rape sebesar 0.0382229 dengan mengganggap variabel lain konstan. Variabelnya bernilai positif, artinya memang dari meningkatkanya kasus pelecehan dikarenakan sebagian besar pelakunya dari orang terdekat korban, baik suami, keluarga, ataupun teman.
  • Importation.of.Girls = 4.2652281, artinya untuk setiap kenaikan 1 satuan nilai Importation.of.Girls akan menambah nilai Rape sebesar 4.2652281 dengan mengganggap variabel lain konstan. Variabelnya bernilai positif, dimana dari kasus pelecehan yang terjadi di India dengan cara memperjualbelikan korban dan rata-rata korbannya anak perempuan usia di bawah umur.

Evaluasi Model

Uji Normalitas

Uji statistik menggunakan shapiro.test()

shapiro.test(pred_random$residuals)
#> 
#>  Shapiro-Wilk normality test
#> 
#> data:  pred_random$residuals
#> W = 0.98117, p-value = 0.04638

Berdasarkan nilai p-value 0.04638 < α (0.05), maka tolak H0 dan model tidak berdistribusi normal.

Uji Autokorelasi

Hipotesis yang diuji adalah sebagai berikut :

  • H0 : tidak terjadi autokorelasi
  • H1 : terjadi autokorelasi

H0 ditolak jika P-value < α. Nilai α yang digunakan sebesar 5%.

pred_random$residuals %>% Box.test(type = "Ljung-Box")
#> 
#>  Box-Ljung test
#> 
#> data:  .
#> X-squared = 22.599, df = 1, p-value = 0.000001996

Berdasarkan nilai p-value 0.000001996 < 0.05, maka tolak H0 artinya terjadi permasalahan autokorelasi antar sisaan.

Uji Homoskedastisitas

Uji statistika dengan Breusch-Pagan dari package lmtest fungsi bptest()

pred_random %>% bptest()
#> 
#>  studentized Breusch-Pagan test
#> 
#> data:  .
#> BP = 31.504, df = 6, p-value = 0.00002031

Berdasarkan nilai p-value = 0.00002031 < α (0.05), maka tolak H0. Dengan tingkat kepercayaan 95%, kita yakin bahwa model heteroskedastisitas.

Kesimpulan dan Saran

Dari serangkaian proses analisis yang telah dilakukan, dapat kita peroleh kesimpulan sebagai berikut:

  1. Diperoleh model terbaik untuk memprediksi tingkat kejahatan seksual di India adalah Random Effect Model (REM) dengan pengaruh individual.
  2. Dari keenam variabel prediktor yang digunakan hanya variabel kasus penculikan dan kasus kematian mahar yang tidak signifikan berpengaruh terhadap persentase tingkat kejahatan seksual di India.
  3. Diperoleh nilai adj. R-squared sebesar 0.82589, artinya model dapat menjelaskan persentase tingkat kejahatan seksual dengan baik sebesar 82.59%
  4. Diperoleh nilai MAPE sebesar 0.3466585 artinya model kita dalam memprediksi data baru mengalami kesalahan prediksi sebesar 34.66%. Sehingga dapat dikatakan model yang kita miliki sudah cukup baik dalam memprediksi nilai baru di masa yang akan datang.
  5. Melihat dari hasil pengamatan pada tahapan EDA dan uji signifikansi prediktor. Diperoleh dari variabel kasus penculikan, kasus kematian mahar, kasus penyerangan, kasus kejahatan dari suami atau kerabat dan kasus memperjualbelikan anak perempuan bernilai positif terhadap peningkatan kasus pelecehan di India.

Dari beberapa kesimpulan diatas, terdapat beberapa saran sebagai berikut:

  1. Pada penelitan kali ini masih didapati kendala dimana terbatasnya data yang digunakan, yakni periode waktu yang digunakan sudah cukup lampau. Hal ini dikhawatirkan akan membuat model kurang baik dalam mempelajari data. Sehingga diharapkan pada penelitan selanjutnya bisa mencoba dilakukan dengan rentang waktu dari data yang lebih update.
  2. Diharapkan pemerintah India bisa lebih meningkatkan keamanan dan perlindungan hak-hak perempuan di India, terutama untuk anak perempuan usia di bawah umur. Dengan didukung oleh organisasi Internasional dan aktivis-aktivis pejuang hak-hak perempuan di India dengan berlandaskan perspektif feminisme. Dimana dengan mempertahankan kepercayaan bahwa perempuan harus dilindungi serta memiliki kesetaraan dengan laki-laki (kesetaraan gender).