Analisis ini bertujuan untuk menguji apakah terdapat autokorelasi spasial pada variabel (misalnya kemiskinan) antar seluruh kabupaten/kota di Sulawesi Selatan menggunakan Global Moran’s I berbasis data spasial (SHP).
data <- read.csv("D:/Youtube/Spasial/Moran.csv")
data
## wilayah Kemiskinan
## 1 Bantaeng 11.000000
## 2 Barru 29.374738
## 3 Bone 40.959866
## 4 Bulukumba 21.033022
## 5 Enrekang 54.854249
## 6 Gowa 19.634148
## 7 Jeneponto 8.278893
## 8 Kepulauan Selayar 1.351635
## 9 Luwu 64.561073
## 10 Luwu Timur 97.000000
## 11 Luwu Utara 89.527740
## 12 Makassar 12.067227
## 13 Maros 20.745629
## 14 Palopo 71.917377
## 15 Pangkajene dan Kepulauan 12.691165
## 16 Parepare 46.175712
## 17 Pinrang 48.051138
## 18 Sindereng Rappang 41.482636
## 19 Sinjai 26.369766
## 20 Soppeng 34.781655
## 21 Takalar 2.000000
## 22 Tana Toraja 58.417412
## 23 Toraja Utara 63.035686
## 24 Wajo 46.799723
library(sf)
## Linking to GEOS 3.13.1, GDAL 3.11.4, PROJ 9.7.0; sf_use_s2() is TRUE
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
shp <- st_read("D:/Youtube/Spasial/SHP/sulsel.shp")
## Reading layer `sulsel' from data source `D:\Youtube\Spasial\SHP\sulsel.shp' using driver `ESRI Shapefile'
## Simple feature collection with 24 features and 13 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: 117.0385 ymin: -7.758941 xmax: 121.8402 ymax: -1.895236
## Geodetic CRS: WGS 84
shp$kemiskinan <- data$Kemiskinan
shp$wilayah <- shp$NAME_2
library(spdep)
## Loading required package: spData
## To access larger datasets in this package, install the spDataLarge
## package with: `install.packages('spDataLarge',
## repos='https://nowosad.github.io/drat/', type='source')`
nb <- poly2nb(shp, queen = TRUE)
## Warning in poly2nb(shp, queen = TRUE): some observations have no neighbours;
## if this seems unexpected, try increasing the snap argument.
## Warning in poly2nb(shp, queen = TRUE): neighbour object has 2 sub-graphs;
## if this sub-graph count seems unexpected, try increasing the snap argument.
lw <- nb2listw(nb, style = "W", zero.policy = TRUE)
# Uji Moran
moran_test <- moran.test(shp$kemiskinan, lw)
moran_test
##
## Moran I test under randomisation
##
## data: shp$kemiskinan
## weights: lw
## n reduced by no-neighbour observations
##
## Moran I statistic standard deviate = 5.6211, p-value = 9.487e-09
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.75385912 -0.04545455 0.02022041
Hasil uji Moran’s I menunjukkan adanya autokorelasi spasial positif yang sangat signifikan (p < 0.05) , yang berarti wilayah dengan tingkat kemiskinan tinggi cenderung bertetangga dengan wilayah yang juga berstatus miskin (membentuk pola pengelompokan atau clustering).
mp <- moran.plot(shp$kemiskinan, lw,
labels = FALSE,
col = "blue", pch = 19,
xlab = "Kemiskinan")
text(mp$x, mp$wx,
labels = shp$wilayah,
cex = 0.6, pos = 4)
Grafik ini membagi wilayah ke dalam empat kuadran berdasarkan hubungannya dengan tetangga:
High-High (Kuadran Kanan Atas): Wilayah dengan kemiskinan tinggi dikelilingi oleh tetangga yang juga memiliki kemiskinan tinggi. Contoh jelas di sini adalah Luwu Utara, Palopo, Toraja Utara, dan Luwu. Ini adalah titik panas (hotspots) kemiskinan.
Low-Low (Kuadran Kiri Bawah): Wilayah dengan kemiskinan rendah dikelilingi oleh tetangga dengan kemiskinan rendah pula. Wilayah seperti Makassar, Gowa, Maros, dan Kepulauan Selayar berada di area ini (coldspots).
Outliers (Low-High atau High-Low): Titik-titik yang menjauh dari garis diagonal, seperti Bone (berada di kuadran kanan bawah/High-Low, meski mepet) atau wilayah yang berada jauh dari tren utama, menunjukkan anomali di mana kondisi wilayah tersebut berbeda signifikan dengan rata-rata tetangganya.
library(ggplot2)
ggplot(data = shp) +
geom_sf(aes(fill = kemiskinan), color = "black", size = 0.2) +
scale_fill_gradient(low = "#2c7bb6", high = "#d7191c",
name = "Kemiskinan (%)") +
labs(
title = "Peta Sebaran Kemiskinan",
subtitle = "Kabupaten/Kota di Sulawesi Selatan",
caption = "Sumber: Data Simulasi"
) +
theme_minimal()