Analisis Variansi Satu Arah: Membandingankan Indeks Pembangunan Manusia di Bali Tahun 2021-2023

PENDAHULUAN

1.1 Latar Belakang

Indeks Pembangunan Manusia (IPM) merupakan indikator penting yang digunakan untuk mengukur kualitas hidup dan pembangunan manusia di suatu wilayah. IPM mencakup tiga dimensi utama yaitu kesehatan, pendidikan, dan standar hidup yang layak. Di Indonesia, IPM menjadi salah satu parameter utama dalam menentukan kebijakan pembangunan daerah dan nasional. Setiap tahunnya, Badan Pusat Statistik (BPS) mengeluarkan data IPM untuk setiap provinsi, termasuk Bali, yang terkenal sebagai salah satu destinasi wisata utama di dunia. Analisis IPM dapat membantu pemerintah dan pemangku kepentingan lainnya dalam memahami kemajuan pembangunan manusia dan mengidentifikasi area yang perlu diperbaiki.

Analisis ini bertujuan untuk mengevaluasi perubahan IPM di Bali selama periode 2021 hingga 2023. Dengan menggunakan uji ANOVA satu arah, tim peneliti dapat mengetahui apakah terdapat perbedaan yang signifikan dalam IPM antara tahun-tahun tersebut. Hasil analisis ini diharapkan dapat memberikan informasi berharga bagi pemerintah dan pemangku kepentingan lainnya dalam mengevaluasi dan merumuskan kebijakan pembangunan di Bali.

1.2 ANOVA Satu Arah

ANOVA adalah metode statistik untuk menganalisis efek satu atau lebih variabel independen, yaitu variabel faktor terhadap varibael dependennya, yaitu variabel respon. ANOVA dirancang untuk menganalisis suatu studi eksperimen dan observarsial, walaupun secara teoritik nilai validitas hasilnya dianggap lebih rendah dari data studi eksperimen. ANOVA dapat digolongkan kedalam beberapa kriteria, yaitu ANOVA satu arah, ANOVA dua arah, dan ANOVA tiga arah. ANOVA satu arah digunakan untuk menguji apakah ada pengaruh dari satu faktor tertentu terhadap variabel dependen (variabel terikat) pada beberapa kelompok yang berbeda. Asumsi yang harus terpenuhi sebelum melakukan uji anova adalah:

  1. Kenormalan : galat tiap kelompok perlakuan dalam populasi berdistribusi normal.
  2. Homogenitas : homogenitas variansi populasi antar kelompok perlakuan.
  3. Independensi : galat antar responden saling independen .
  4. Sampling acak : data yang diperoleh dengan sampling acak (random), sehingga setiap pengamatan merupakan informasi yang independen.

Jika hasil uji anova satu arah menyatakan bahwa terdapat perbedaan yang signifikan dari variabel-variabel yang diuji maka dapat dilakukan uji lanjut seperti uji BNT dan uji BNJ. Uji lanjut digunakan untuk membandingkan seluruh pasangan rata-rata perlakuan sehingga terlihat perlakuan apa yang berbeda nyata.

1.3 Data

Kabupaten <- c("Jembrana", "Tabanan", "Badung", "Gianyar", "Klungkung", "Bangli", "Karangasem", "Buleleng", "Kota_Denpasar")
Tahun_2021 <- c(73.57, 76.95, 81.84, 78.21, 72.98, 70.60, 68.58, 73.60, 84.04)
Tahun_2022 <- c(74.38, 77.22, 82.13, 78.87, 73.77, 71.47, 69.48, 74.48, 84.39)
Tahun_2023 <- c(74.80, 77.87, 83.00, 79.69, 74.18, 71.99, 70.09, 74.87, 84.68)
IPM_Bali <- data.frame(Kabupaten, Tahun_2021, Tahun_2022, Tahun_2023)
IPM_Bali
##       Kabupaten Tahun_2021 Tahun_2022 Tahun_2023
## 1      Jembrana      73.57      74.38      74.80
## 2       Tabanan      76.95      77.22      77.87
## 3        Badung      81.84      82.13      83.00
## 4       Gianyar      78.21      78.87      79.69
## 5     Klungkung      72.98      73.77      74.18
## 6        Bangli      70.60      71.47      71.99
## 7    Karangasem      68.58      69.48      70.09
## 8      Buleleng      73.60      74.48      74.87
## 9 Kota_Denpasar      84.04      84.39      84.68
data_filter <- IPM_Bali

Menampilkan data dengan tabel agar lebih rapi dan mudah dibaca.

knitr::kable(
  head(data_filter, 9), 
  "pipe", 
  col.name = c("Kabupaten", "Tahun_2021", "Tahun_2022", "Tahun_2023"),
  align = "lcccc"
  )
Kabupaten Tahun_2021 Tahun_2022 Tahun_2023
Jembrana 73.57 74.38 74.80
Tabanan 76.95 77.22 77.87
Badung 81.84 82.13 83.00
Gianyar 78.21 78.87 79.69
Klungkung 72.98 73.77 74.18
Bangli 70.60 71.47 71.99
Karangasem 68.58 69.48 70.09
Buleleng 73.60 74.48 74.87
Kota_Denpasar 84.04 84.39 84.68

1.4 Statistika Deskriptif

Pada langkah ini, dilakukan penghitungan statistika deskriptif untuk tiga variabel tahun, yaitu Tahun 2021, Tahun 2022, dan Tahun 2023. Statistika deskriptif ini memberikan gambaran tentang sebaran dan karakteristik data pada variabel-variabel tersebut.

summary(IPM_Bali)
##   Kabupaten           Tahun_2021      Tahun_2022      Tahun_2023   
##  Length:9           Min.   :68.58   Min.   :69.48   Min.   :70.09  
##  Class :character   1st Qu.:72.98   1st Qu.:73.77   1st Qu.:74.18  
##  Mode  :character   Median :73.60   Median :74.48   Median :74.87  
##                     Mean   :75.60   Mean   :76.24   Mean   :76.80  
##                     3rd Qu.:78.21   3rd Qu.:78.87   3rd Qu.:79.69  
##                     Max.   :84.04   Max.   :84.39   Max.   :84.68

SOURCE CODE

2.1 Library yang Dibutuhkan

library(car)
## Loading required package: carData
library(ggpubr)
## Loading required package: ggplot2
library(tseries)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(agricolae)
library(tidyr)
library(knitr)
library(kableExtra)

  • Library car digunakan untuk uji homogenitas ragam Levene
  • Library ggpubr digunakan untuk menyederhanakan pembuatan plot yang dipublikasikan menggunakan boxplot
  • Library tseries digunakan untuk uji normalitas Jarque-Bera
  • Library agricolae digunakan untuk uji lanjut BNT
  • Library tidyr digunakan untuk membuat pivot_longer ketika akan membuat boxplot
  • Library knitr digunakan untuk membuat tabel
  • Library kableExtra digunakan untuk membuat tabel ANOVA
  • Sebelum diaktifkan, unduh library terlebih dahulu dengan menggunakan perintah install.packages()

    2.2 Data Frame

    Dalam R, analisis ragam dilakukan dengan Variabel Prediktor (Tahun) bersifat factor menggunakan perintah as.factor() dimana:

    <ul>
    <li>Level 1 = IPM Bali Menurut Kabupaten pada Tahun 2021</li> 
    <li>Level 2 = IPM Bali Menurut Kabupaten pada Tahun 2022</li>
    <li>Level 3 = IPM Bali Menurut Kabupaten pada Tahun 2023</li>
    </ul>

    Variabel Respon (IPM) bersifat numeric. Data frame yang dibentuk disimpan dalam objek ‘Data’.

    Tahun <- c(rep(1,9), rep(2,9), rep(3,9))
    IPM <- c(73.57, 76.95, 81.84, 78.21, 72.98, 70.60, 68.58, 73.60, 84.04,
             74.38, 77.22, 82.13, 78.87, 73.77, 71.47, 69.48, 74.48, 84.39,
             74.80, 77.87, 83.00, 79.69, 74.18, 71.99, 70.09, 74.87, 84.68)
    Tahun <- factor(Tahun)
    Data <- data.frame(Tahun, IPM)
    Data
    ##    Tahun   IPM
    ## 1      1 73.57
    ## 2      1 76.95
    ## 3      1 81.84
    ## 4      1 78.21
    ## 5      1 72.98
    ## 6      1 70.60
    ## 7      1 68.58
    ## 8      1 73.60
    ## 9      1 84.04
    ## 10     2 74.38
    ## 11     2 77.22
    ## 12     2 82.13
    ## 13     2 78.87
    ## 14     2 73.77
    ## 15     2 71.47
    ## 16     2 69.48
    ## 17     2 74.48
    ## 18     2 84.39
    ## 19     3 74.80
    ## 20     3 77.87
    ## 21     3 83.00
    ## 22     3 79.69
    ## 23     3 74.18
    ## 24     3 71.99
    ## 25     3 70.09
    ## 26     3 74.87
    ## 27     3 84.68

    2.3 Boxplot

    Pembuatan boxplot menggunakan perintah boxplot() yang merupakan deskripsi dari IPM di setiap Tahun pada data frame ‘IPM_Bali_long’.

    IPM_Bali_long <- pivot_longer(IPM_Bali, cols = starts_with("Tahun"), 
                                  names_to = "Tahun", values_to = "IPM")
    
    ggplot(IPM_Bali_long, aes(x = Tahun, y = IPM, fill = Tahun)) +
      geom_boxplot() +
      labs(title = "Boxplot IPM Bali Tahun 2021-2023", x = "Tahun", y = "IPM") +
      theme_minimal() +
      theme(legend.position = "none")

    2.4 ANOVA Satu Arah (Manual)

    2.4.1 Derajat Bebas

    Perhitungan Derajat Bebas perlakuan, galat, dan total dengan rumus:

    \[DBp=p-1\] \[DBt=N-1\] \[DBg=N-p\]

    dimana:

    N merupakan banyaknya pengamatan dan setara dengan jumlah baris dalam data frame ‘IPM_Bali_long’

    p merupakan banyaknya perlakuan dan setara dengan banyaknya level dalam variabel Tahun

    N=nrow(IPM_Bali_long)
    p=length(unique(IPM_Bali_long$Tahun))
    DBp=p-1
    DBg=N-p
    DBt=N-1
    DB=c(DBp,DBg,DBt)
    DB
    ## [1]  2 24 26

    2.4.2 Jumlah Kuadrat

    Perhitungan Jumlah Kuadrat perlakuan, galat, dan total dengan rumus:

    \[JKp=\sum_{i=k}^{k}n_i(\bar{Y_i}-\bar{Y})^2\] \[JKt=\sum_{j=k}^{n_i}\sum_{i=k}^{k}(Y_{ij}-\bar{Y})^2\] \[JKg=JKt-JKp\]

    Dimana \(\bar{Y_i}\) merupakan rata-rata dari \(n_i\) merupakan panjang setiap perlakuan (IPM) dengan menggunakan perintah aggregate() serta \(\bar{Y}\) merupakan rata-rata dari seluruh perlakuan (IPM).

    rata2_perlakuan=aggregate(IPM_Bali_long$IPM, list(IPM_Bali_long$Tahun), mean)[,2]
    n = aggregate(IPM_Bali_long$IPM, list(IPM_Bali_long$Tahun), length)[,2]
    rata2=mean(IPM_Bali_long$IPM)
    JKt=sum((IPM_Bali_long$IPM-rata2)^2)
    JKp=sum(n*(rata2_perlakuan-rata2)^2)
    JKg=JKt-JKp
    JK=c(JKp,JKg,JKt)
    JK
    ## [1]   6.493067 590.952600 597.445667

    2.4.3 Rata-rata Kuadrat

    Perhitungan Rata-rata Kuadrat perlakua dan galat dengan rumus:

    \[RKp=\frac{JKp}{DBp}\] \[RKg=\frac{JKg}{DBg}\]

    RKp=JKp/DBp
    RKg=JKg/DBg
    RK=c(RKp,RKg)
    RK
    ## [1]  3.246533 24.623025

    2.4.4 Fhitung dan Nilai p

    Rumus \(F_{hitung}\) yaitu:

    \(F_{hitung}=\frac{RKp}{RKg}\)

    Perhitungan nilai p berdasarkan nilai \(F{hitung}\) yang berdistribusi F dengan menggunakan perintah pf() dimana lower.tail=FALSE karena dihitung dari ekor kanan.

    Fhit=RKp/RKg
    Fhit
    ## [1] 0.1318495
    pVal=pf(Fhit,DBp,DBg,lower.tail = F)
    pVal
    ## [1] 0.8771034

    2.4.5 Tabel ANOVA

    Pembentukan tabel ANOVA yaitu gabungan dari DB, JK, RK, Fhit, dan pVal yang disimpan dalam data frame ‘anova’.

    anova=data.frame(SK=c('Perlakuan','Galat','Total'),DB,JK=c(JK),RK=c(RK,'-'),Fhit=c(Fhit,'-','-'),pVal=c(pVal,'-','-'))
    kable(anova,caption ="Tabel ANOVA")
    Tabel ANOVA
    SK DB JK RK Fhit pVal
    Perlakuan 2 6.493067 3.24653333333335 0.131849491820495 0.87710338481534
    Galat 24 590.952600 24.623025 - -
    Total 26 597.445667 - - -

    2.5 ANOVA Satu Arah (Fungsi)

    Pembentukan tabel ANOVA dengan menggunakan fungsi yang bersifat built in di R yaitu aov() yang disimpan dalam objek ‘anova_result’ dengan variabel yang dianalisis adalah IPM di setiap Tahun pada data frame ‘IPM_Bali_long’.

    anova_result <- aov(IPM ~ Tahun, data = IPM_Bali_long)
    anova_result
    ## Call:
    ##    aov(formula = IPM ~ Tahun, data = IPM_Bali_long)
    ## 
    ## Terms:
    ##                    Tahun Residuals
    ## Sum of Squares    6.4931  590.9526
    ## Deg. of Freedom        2        24
    ## 
    ## Residual standard error: 4.962159
    ## Estimated effects may be unbalanced
    summary(anova_result)
    ##             Df Sum Sq Mean Sq F value Pr(>F)
    ## Tahun        2    6.5   3.247   0.132  0.877
    ## Residuals   24  591.0  24.623

    2.6 Pemeriksaan Asumsi

    2.6.1 Plot

    2.6.1.1 Plot Residuals vs Fitted

    Plot Residuals vs Fitted digunakan untuk memeriksa ketepatan model pada objek ‘anova_result’ dengan perintah plot( ,1).

    plot(anova_result,1)

    2.6.1.2 Plot Q-Q

    Plot Q-Q digunakan untuk memeriksa normalitas galat pada objek ‘anova_result’ dengan perintah plot( ,2).

    qqPlot(anova_result,2)

    ## [1] 25 26

    2.6.1.3 Plot Scale-Location

    Plot Scale-Location digunakan untuk memeriksa kesamaan ragam pada objek ‘anova_result’ dengan perintah plot( ,3).

    plot(anova_result,3)

    2.6.2 Uji Normalitas Galat

    Uji normalitas menggunakan sisaan dari model pada objek ‘anova_result’ sehingga digunakan perintah residuals() yang disimpan dalam objek ‘sisa’.

    sisa=residuals(anova_result)

    2.6.2.1 Uji Jarque-Bera

    Uji normalitas Jarque-Bera dari objek ‘sisa’ dengan menggunakan perintah jarque.bera.test() dan library tseries.

    jarque.bera.test(sisa)
    ## 
    ##  Jarque Bera Test
    ## 
    ## data:  sisa
    ## X-squared = 1.6511, df = 2, p-value = 0.438

    2.6.2.2 Uji Shapiro-Wilk

    Uji normalitas Shapiro-Wilk dari objek ‘sisa’ dengan menggunakan perintah shapiro.test().

    shapiro.test(sisa)
    ## 
    ##  Shapiro-Wilk normality test
    ## 
    ## data:  sisa
    ## W = 0.92909, p-value = 0.06564

    2.6.3 Uji Homogenitas Ragam

    Uji homogenitas ragam Levene dengan variabel yang dianalisis adalah IPM di setiap Tahun pada data frame ‘IPM_Bali_long’ dengan menggunakan perintah leveneTest() dan library car.

    leveneTest(IPM ~ Tahun, data = IPM_Bali_long)
    ## Warning in leveneTest.default(y = y, group = group, ...): group coerced to
    ## factor.
    ## Levene's Test for Homogeneity of Variance (center = median)
    ##       Df F value Pr(>F)
    ## group  2  0.0075 0.9926
    ##       24

    HASIL DAN PEMBAHASAN

    3.1 Boxplot

    Sebelum dilakukan uji ANOVA, data dapat dideskripsikan terlebih dahulu berdasarkan statistik deskriptifnya dengan menggunakan Boxplot.

    IPM_Bali_long <- pivot_longer(IPM_Bali, cols = starts_with("Tahun"), 
                                  names_to = "Tahun", values_to = "IPM")
    
    ggplot(IPM_Bali_long, aes(x = Tahun, y = IPM, fill = Tahun)) +
      geom_boxplot() +
      labs(title = "Boxplot IPM Bali Tahun 2021-2023", x = "Tahun", y = "IPM") +
      theme_minimal() +
      theme(legend.position = "none")

    Berdasarkan hasil boxplot tersebut, terlihat IPM pada Tahun 2021, Tahun 2022, dan Tahun 2023 menunjukkan nlai rata-rata yang hampir sama. Data IPM pada Tahun 2023 lebih tinggi daripada Tahun 2022 dan Tahun 2021.

    3.2 ANOVA

    Perhitungan ANOVA baik secara manual atau menggunakan fungsi menghasilkan hasil yang sama yaitu:

    1. Hipotesis:

      \(H_0:\mu_1=\mu_2=...=\mu\) (Tidak ada perbedaan nilai rata-rata IPM di Bali yang siginifikan antara Tahun 2021, Tahun 2022, dan Tahun 2023)

      \(H_1:\mu_1≠\mu_2≠...≠\mu\) (Ada perbedaan nilai rata-rata IPM di Bali yang siginifikan antara Tahun 2021, Tahun 2022, dan Tahun 2023)

    2. Taraf signifikansi:

      \(α\) = 5%

    3. Daerah Kritis:

      \(H_0\) ditolak jika \(F_{hit}>F_{0.05;(k-1;n-k)}=3.403\) atau 𝜌-value < 𝛼= 0.05

    4. Statistik Uji:

    anova=data.frame(SK=c('Perlakuan','Galat','Total'),DB,JK,RK=c(RK,'-'),Fhit=c(Fhit,'-','-'),pVal=c(pVal,'-','-'))
    kable(anova,caption ="Tabel ANOVA")
    Tabel ANOVA
    SK DB JK RK Fhit pVal
    Perlakuan 2 6.493067 3.24653333333335 0.131849491820495 0.87710338481534
    Galat 24 590.952600 24.623025 - -
    Total 26 597.445667 - - -
    1. Kesimpulan:

      Karena \(F_{hit}=0.132<F_{tabel}=3.403\) atau 𝜌-value = 0.88 > 𝛼= 0.05, maka \(H_0\) tidak dapat ditolak, yang berarti bahwa tidak ada perbedaan nilai rata-rata IPM yang siginifikan antara Tahun 2021, Tahun 2022, dan Tahun 2023.

    3.3 Pemeriksaan Asumsi

    Keabsahan kesimpulan dari uji ANOVA masih perlu dipastikan melalui pemeriksaan asumsi dengan melakukan diagnostik plot dan uji asumsi.

    3.3.1 Plot

    3.3.1.1 Plot Residuals vs Fitted

    plot(anova_result,1)

    Berdasarkan plot Residuals vs Fitted, garis merah yang menghubungkan kelompok sisaan terlihat mendasar atau horizontal, sehingga dapat disimpulkan bahwa model yang digunakan sudah tepat.

    3.3.1.2 Plot Q-Q

    qqPlot(anova_result,2)

    ## [1] 25 26

    Berdasarkan plot Q-Q, titik-titik berada tidak jauh dari garis dengan sudut 45 derajat antara sumbu x dan sumbu y di kuadran I, sehingga dapat disimpulkan bahwa asumsi normalitas terpenuhi.

    3.3.1.3 Plot Scale-Location

    plot(anova_result,3)

    Berdasarkan plot Scale-Location, garis merah yang menghubungkan kelompok akar sisaan yang dibakukan membentuk garis atau kurva horizontal, sehingga dapat disimpulkan bahwa asumsi homogenitas ragam terpenuhi.

    3.3.2 Uji Normalitas Galat

    3.3.2.1 Uji Jarque-Bera

    jarque.bera.test(sisa)
    ## 
    ##  Jarque Bera Test
    ## 
    ## data:  sisa
    ## X-squared = 1.6511, df = 2, p-value = 0.438

    3.3.2.2 Uji Shapiro-Wilk

    shapiro.test(sisa)
    ## 
    ##  Shapiro-Wilk normality test
    ## 
    ## data:  sisa
    ## W = 0.92909, p-value = 0.06564

    1. Hipotesis:

      \(H_0:\) Galat menyebar normal

      \(H_1:\) Galat tidak menyebar normal

    2. Taraf signifikansi:

      \(α\) = 5%

    3. Daerah Kritis:

      \(H_0\) ditolak jika:

      Uji Jarque-Bera : 𝜌-value < 0.05

      Uji Shapiro-Wilk : 𝜌-value < 0.05

    4. Statistik Uji:

      Berdasarkan Uji Jarque-Bera dan Shapiro-Wilk

    5. Kesimpulan:

      Berdasarkan uji Jarque-Bera dengan 𝜌-value = 0.438 dan Shapiro-Wilk dengan 𝜌-value = 0.06564, maka \(H_0\) tidak dapat ditolak, yang berarti bahwa dengan taraf nyata 5%, sudah cukup bukti bahwa galat menyebar normal sehingga asumsi normalitas galat terpenuhi.

    3.3.3 Uji Homogenitas Ragam

    Uji Levene

    1. Hipotesis:

      \(H_0:\) Ragam setiap kelompok sama

      \(H_1:\) Paling sedikit terdapat satu kelompok yang memiliki ragam berbeda

    2. Taraf signifikansi:

      \(α\) = 5%

    3. Daerah Kritis:

      \(H_0\) ditolak jika 𝜌-value < 0.05

    4. Statistik Uji:

    leveneTest(IPM ~ Tahun, data = IPM_Bali_long)
    ## Warning in leveneTest.default(y = y, group = group, ...): group coerced to
    ## factor.
    ## Levene's Test for Homogeneity of Variance (center = median)
    ##       Df F value Pr(>F)
    ## group  2  0.0075 0.9926
    ##       24
    1. Kesimpulan:

      Karena 𝜌-value = 0.9926, maka \(H_0\) tidak dapat ditolak, yang berarti bahwa ragam dari ketiga tahun sama sehingga asumsi homogenitas ragam terpenuhi.

    3.4 Kesimpulan

    Karena data memenuhi asumsi normalitas dan kehomogenanan ragam, sehingga dapat disimpulkan bahwa memenuhi asumsi. Sehingga tidak perlu dilanjutkan dengan uji lanjut.

    DAFTAR PUSTAKA

    Anonim. 2013. Modul II ANOVA. Universitas Islam Indonesia.

    bali.bps.go.id, 28 Maret 2024, [Metode Baru] Indeks Pembangunan Manusia menurut Kabupaten/Kota di Provinsi Bali (Umur Harapan Hidup Hasil Long Form SP2020) 2020 - 2023, Diakses pada 17 Mei 2024, link ke IPM BPS Bali.

    Harlan, J. 2018. Analisis Variansi. Depok: Gunadarma.

    Husnul, Nisak Ruwah Ibnatur., dkk. 2020. STATISTIKA DESKRIPTIF. Tangerang Selatan: UNPAM PRESS.

    Nurmalasari, Mieke. 2018. Modul Statistik Inferens. Universitas Esa Unggul.