# 1. LOAD PACKAGE
``` r
library(sf)
## Linking to GEOS 3.14.1, GDAL 3.12.1, PROJ 9.7.1; sf_use_s2() is TRUE
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')`
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
library(ggplot2)
shp <- st_read("D:/STATISTIKA/SEM 5/Analisis Data Spasial/Tugas 3/Shapefile/SHP.shp")
## Reading layer `SHP' from data source
## `D:\STATISTIKA\SEM 5\Analisis Data Spasial\Tugas 3\Shapefile\SHP.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 540 features and 25 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: 94.97195 ymin: -11.00755 xmax: 141.02 ymax: 6.076741
## Geodetic CRS: WGS 84
# Melihat data
shp
## Simple feature collection with 540 features and 25 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: 94.97195 ymin: -11.00755 xmax: 141.02 ymax: 6.076741
## Geodetic CRS: WGS 84
## First 10 features:
## OBJECTID NAMOBJ FCODE REMARK METADATA SRS_ID
## 1 1077 Aceh Barat BA03050040 <NA> TASWIL5000020260612KABKOTA 4326
## 2 1078 Aceh Barat Daya BA03050040 <NA> TASWIL5000020260612KABKOTA 4326
## 3 1080 Aceh Jaya BA03050040 <NA> TASWIL5000020260612KABKOTA 4326
## 4 1081 Aceh Selatan BA03050040 <NA> TASWIL5000020260612KABKOTA 4326
## 5 1082 Aceh Singkil BA03050040 <NA> TASWIL5000020260612KABKOTA 4326
## 6 1083 Aceh Tamiang BA03050040 <NA> TASWIL5000020260612KABKOTA 4326
## 7 1084 Aceh Tengah BA03050040 <NA> TASWIL5000020221227KABKOTA 4326
## 8 1085 Aceh Tenggara BA03050040 <NA> TASWIL5000020221227KABKOTA 4326
## 9 1086 Aceh Timur BA03050040 <NA> TASWIL5000020260612KABKOTA 4326
## 10 1087 Aceh Utara BA03050040 <NA> TASWIL5000020260612KABKOTA 4326
## KDBBPS KDCBPS KDCPUM KDEBPS KDEPUM KDPBPS KDPKAB KDPPUM LUASWH TIPADM
## 1 <NA> <NA> <NA> <NA> <NA> <NA> 11.05 11 2782.606 4
## 2 <NA> <NA> <NA> <NA> <NA> <NA> 11.12 11 1882.054 4
## 3 <NA> <NA> <NA> <NA> <NA> <NA> 11.14 11 3870.566 4
## 4 <NA> <NA> <NA> <NA> <NA> <NA> 11.01 11 4174.211 4
## 5 <NA> <NA> <NA> <NA> <NA> <NA> 11.10 11 1851.615 4
## 6 <NA> <NA> <NA> <NA> <NA> <NA> 11.16 11 2187.817 4
## 7 <NA> <NA> <NA> <NA> <NA> <NA> 11.04 11 4468.417 4
## 8 <NA> <NA> <NA> <NA> <NA> <NA> 11.02 11 4179.123 4
## 9 <NA> <NA> <NA> <NA> <NA> <NA> 11.03 11 5409.158 4
## 10 <NA> <NA> <NA> <NA> <NA> <NA> 11.08 11 2705.045 4
## WADMKC WADMKD WADMKK WADMPR WIADKC WIADKK WIADPR WIADKD
## 1 <NA> <NA> Aceh Barat Aceh <NA> <NA> <NA> 0
## 2 <NA> <NA> Aceh Barat Daya Aceh <NA> Aceh Selatan <NA> 0
## 3 <NA> <NA> Aceh Jaya Aceh <NA> <NA> <NA> 0
## 4 <NA> <NA> Aceh Selatan Aceh <NA> Aceh Selatan <NA> 0
## 5 <NA> <NA> Aceh Singkil Aceh <NA> <NA> <NA> 0
## 6 <NA> <NA> Aceh Tamiang Aceh <NA> Aceh Timur <NA> 0
## 7 <NA> <NA> Aceh Tengah Aceh <NA> <NA> <NA> 0
## 8 <NA> <NA> Aceh Tenggara Aceh <NA> <NA> <NA> 0
## 9 <NA> <NA> Aceh Timur Aceh <NA> Aceh Timur <NA> 0
## 10 <NA> <NA> Aceh Utara Aceh <NA> <NA> <NA> 0
## LastSync geometry
## 1 LapakGIS.com MULTIPOLYGON (((96.24327 4....
## 2 LapakGIS.com MULTIPOLYGON (((96.72918 4....
## 3 LapakGIS.com MULTIPOLYGON (((95.38995 5....
## 4 LapakGIS.com MULTIPOLYGON (((97.267 3.64...
## 5 LapakGIS.com MULTIPOLYGON (((98.01587 2....
## 6 LapakGIS.com MULTIPOLYGON (((98.11884 4....
## 7 LapakGIS.com MULTIPOLYGON (((96.62116 4....
## 8 LapakGIS.com MULTIPOLYGON (((97.8248 3.7...
## 9 LapakGIS.com MULTIPOLYGON (((97.49564 5....
## 10 LapakGIS.com MULTIPOLYGON (((96.97708 5....
# Nama variabel
names(shp)
## [1] "OBJECTID" "NAMOBJ" "FCODE" "REMARK" "METADATA" "SRS_ID"
## [7] "KDBBPS" "KDCBPS" "KDCPUM" "KDEBPS" "KDEPUM" "KDPBPS"
## [13] "KDPKAB" "KDPPUM" "LUASWH" "TIPADM" "WADMKC" "WADMKD"
## [19] "WADMKK" "WADMPR" "WIADKC" "WIADKK" "WIADPR" "WIADKD"
## [25] "LastSync" "geometry"
# Sistem koordinat
st_crs(shp)
## Coordinate Reference System:
## User input: WGS 84
## wkt:
## GEOGCRS["WGS 84",
## DATUM["World Geodetic System 1984",
## ELLIPSOID["WGS 84",6378137,298.257223563,
## LENGTHUNIT["metre",1]]],
## PRIMEM["Greenwich",0,
## ANGLEUNIT["degree",0.0174532925199433]],
## CS[ellipsoidal,2],
## AXIS["latitude",north,
## ORDER[1],
## ANGLEUNIT["degree",0.0174532925199433]],
## AXIS["longitude",east,
## ORDER[2],
## ANGLEUNIT["degree",0.0174532925199433]],
## ID["EPSG",4326]]
# Jumlah seluruh wilayah dalam shapefile
nrow(shp)
## [1] 540
pan <- data.frame(wilayah = c("Jakarta Timur", "Jakarta Selatan", "Jakarta Pusat", "Jakarta Barat","Jakarta Utara",
"Kota Bandung", "Kota Cimahi", "Kab. Bandung", "Kab. Bandung Barat","Kab. Cianjur",
"Kota Bogor", "Kab. Sukabumi", "Kota Sukabumi", "Kab. Bogor", "Kota Bekasi", "Kota Depok",
"Kab. Purwakarta", "Kab. Karawang", "Kab. Bekasi", "Kab. Cirebon", "Kab. Indramayu",
"Kota Cirebon", "Kab. Majalengka", "Kab. Sumedang", "Kab. Subang", "Kab. Ciamis",
"Kab. Kuningan", "Kota Banjar", "Kab. Garut", "Kab. Tasikmalaya", "Kota Tasikmalaya"),
suara_pan = c(417344, 274529, 145495, 285640, 212101, 442769, 84855, 436420, 169282, 223892, 150358, 269380, 42044,
553302, 269862, 208964, 68245, 209263, 190200, 164567, 64018, 34526, 70730, 83097, 129990, 170575,
100034, 12217, 264577, 144249, 71859))
cat("Jumlah observasi =", nrow(pan), "\n")
## Jumlah observasi = 31
# Total suara
cat("Total suara PAN =", sum(pan$suara_pan), "\n")
## Total suara PAN = 5964384
# Statistik deskriptif
summary(pan$suara_pan)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 12217 83976 169282 192399 266979 553302
pan
## wilayah suara_pan
## 1 Jakarta Timur 417344
## 2 Jakarta Selatan 274529
## 3 Jakarta Pusat 145495
## 4 Jakarta Barat 285640
## 5 Jakarta Utara 212101
## 6 Kota Bandung 442769
## 7 Kota Cimahi 84855
## 8 Kab. Bandung 436420
## 9 Kab. Bandung Barat 169282
## 10 Kab. Cianjur 223892
## 11 Kota Bogor 150358
## 12 Kab. Sukabumi 269380
## 13 Kota Sukabumi 42044
## 14 Kab. Bogor 553302
## 15 Kota Bekasi 269862
## 16 Kota Depok 208964
## 17 Kab. Purwakarta 68245
## 18 Kab. Karawang 209263
## 19 Kab. Bekasi 190200
## 20 Kab. Cirebon 164567
## 21 Kab. Indramayu 64018
## 22 Kota Cirebon 34526
## 23 Kab. Majalengka 70730
## 24 Kab. Sumedang 83097
## 25 Kab. Subang 129990
## 26 Kab. Ciamis 170575
## 27 Kab. Kuningan 100034
## 28 Kota Banjar 12217
## 29 Kab. Garut 264577
## 30 Kab. Tasikmalaya 144249
## 31 Kota Tasikmalaya 71859
pan$nama_shp <- c("Kota Administrasi Jakarta Timur", "Kota Administrasi Jakarta Selatan", "Kota Administrasi Jakarta Pusat",
"Kota Administrasi Jakarta Barat", "Kota Administrasi Jakarta Utara", "Kota Bandung", "Kota Cimahi", "Bandung",
"Bandung Barat", "Cianjur", "Kota Bogor", "Sukabumi", "Kota Sukabumi", "Bogor", "Kota Bekasi", "Kota Depok",
"Purwakarta", "Karawang", "Bekasi", "Cirebon", "Indramayu", "Kota Cirebon", "Majalengka", "Sumedang", "Subang",
"Ciamis", "Kuningan", "Kota Banjar", "Garut", "Tasikmalaya", "Kota Tasikmalaya")
# Cek pencocokan
pan[, c("wilayah", "nama_shp", "suara_pan")]
## wilayah nama_shp suara_pan
## 1 Jakarta Timur Kota Administrasi Jakarta Timur 417344
## 2 Jakarta Selatan Kota Administrasi Jakarta Selatan 274529
## 3 Jakarta Pusat Kota Administrasi Jakarta Pusat 145495
## 4 Jakarta Barat Kota Administrasi Jakarta Barat 285640
## 5 Jakarta Utara Kota Administrasi Jakarta Utara 212101
## 6 Kota Bandung Kota Bandung 442769
## 7 Kota Cimahi Kota Cimahi 84855
## 8 Kab. Bandung Bandung 436420
## 9 Kab. Bandung Barat Bandung Barat 169282
## 10 Kab. Cianjur Cianjur 223892
## 11 Kota Bogor Kota Bogor 150358
## 12 Kab. Sukabumi Sukabumi 269380
## 13 Kota Sukabumi Kota Sukabumi 42044
## 14 Kab. Bogor Bogor 553302
## 15 Kota Bekasi Kota Bekasi 269862
## 16 Kota Depok Kota Depok 208964
## 17 Kab. Purwakarta Purwakarta 68245
## 18 Kab. Karawang Karawang 209263
## 19 Kab. Bekasi Bekasi 190200
## 20 Kab. Cirebon Cirebon 164567
## 21 Kab. Indramayu Indramayu 64018
## 22 Kota Cirebon Kota Cirebon 34526
## 23 Kab. Majalengka Majalengka 70730
## 24 Kab. Sumedang Sumedang 83097
## 25 Kab. Subang Subang 129990
## 26 Kab. Ciamis Ciamis 170575
## 27 Kab. Kuningan Kuningan 100034
## 28 Kota Banjar Kota Banjar 12217
## 29 Kab. Garut Garut 264577
## 30 Kab. Tasikmalaya Tasikmalaya 144249
## 31 Kota Tasikmalaya Kota Tasikmalaya 71859
shp_pan <- shp %>% filter(WADMKK %in% pan$nama_shp) %>% arrange(match(WADMKK, pan$nama_shp))
# Jumlah wilayah
cat("Jumlah wilayah pada analisis =", nrow(shp_pan), "\n")
## Jumlah wilayah pada analisis = 31
wilayah_tidak_ditemukan <- setdiff(pan$nama_shp, shp_pan$WADMKK)
print(wilayah_tidak_ditemukan)
## character(0)
shp_pan$suara_pan <- pan$suara_pan
shp_pan %>%st_drop_geometry() %>% select(WADMKK, suara_pan)
## WADMKK suara_pan
## 1 Kota Administrasi Jakarta Timur 417344
## 2 Kota Administrasi Jakarta Selatan 274529
## 3 Kota Administrasi Jakarta Pusat 145495
## 4 Kota Administrasi Jakarta Barat 285640
## 5 Kota Administrasi Jakarta Utara 212101
## 6 Kota Bandung 442769
## 7 Kota Cimahi 84855
## 8 Bandung 436420
## 9 Bandung Barat 169282
## 10 Cianjur 223892
## 11 Kota Bogor 150358
## 12 Sukabumi 269380
## 13 Kota Sukabumi 42044
## 14 Bogor 553302
## 15 Kota Bekasi 269862
## 16 Kota Depok 208964
## 17 Purwakarta 68245
## 18 Karawang 209263
## 19 Bekasi 190200
## 20 Cirebon 164567
## 21 Indramayu 64018
## 22 Kota Cirebon 34526
## 23 Majalengka 70730
## 24 Sumedang 83097
## 25 Subang 129990
## 26 Ciamis 170575
## 27 Kuningan 100034
## 28 Kota Banjar 12217
## 29 Garut 264577
## 30 Tasikmalaya 144249
## 31 Kota Tasikmalaya 71859
p1 <- ggplot(shp_pan) + geom_sf(aes(fill = suara_pan), color = "white", linewidth = 0.3) +
scale_fill_gradient(low = "#E3F2FD", high = "#0D47A1", name = "Suara PAN") +
labs(title = "Persebaran Perolehan Suara PAN", subtitle = "DKI Jakarta dan Jawa Barat") +
theme_minimal(base_size = 12) +
theme(plot.title = element_text(face = "bold", size = 15), plot.subtitle = element_text(size = 11),
legend.title = element_text(face = "bold"), panel.grid = element_blank())
print(p1)
# 10. QUEEN CONTIGUITY
# w <- poly2nb(p, row.names=p$Id)
nb <- poly2nb(shp_pan, queen = TRUE)
# Struktur objek
class(nb)
## [1] "nb"
summary(nb)
## Neighbour list object:
## Number of regions: 31
## Number of nonzero links: 128
## Percentage nonzero weights: 13.31946
## Average number of links: 4.129032
## Link number distribution:
##
## 1 2 3 4 5 6 7 8
## 4 1 5 9 4 6 1 1
## 4 least connected regions:
## 11 13 22 28 with 1 link
## 1 most connected region:
## 14 with 8 links
str(nb)
## List of 31
## $ : int [1:6] 2 3 5 15 16 19
## $ : int [1:4] 1 3 4 16
## $ : int [1:4] 1 2 4 5
## $ : int [1:3] 2 3 5
## $ : int [1:4] 1 3 4 19
## $ : int [1:3] 7 8 9
## $ : int [1:3] 6 8 9
## $ : int [1:7] 6 7 9 10 24 25 29
## $ : int [1:6] 6 7 8 10 17 25
## $ : int [1:6] 8 9 12 14 17 29
## $ : int 14
## $ : int [1:3] 10 13 14
## $ : int 12
## $ : int [1:8] 10 11 12 15 16 17 18 19
## $ : int [1:4] 1 14 16 19
## $ : int [1:4] 1 2 14 15
## $ : int [1:5] 9 10 14 18 25
## $ : int [1:4] 14 17 19 25
## $ : int [1:5] 1 5 14 15 18
## $ : int [1:4] 21 22 23 27
## $ : int [1:4] 20 23 24 25
## $ : int 20
## $ : int [1:6] 20 21 24 26 27 30
## $ : int [1:6] 8 21 23 25 29 30
## $ : int [1:6] 8 9 17 18 21 24
## $ : int [1:5] 23 27 28 30 31
## $ : int [1:3] 20 23 26
## $ : int 26
## $ : int [1:4] 8 10 24 30
## $ : int [1:5] 23 24 26 29 31
## $ : int [1:2] 26 30
## - attr(*, "class")= chr "nb"
## - attr(*, "region.id")= chr [1:31] "1" "2" "3" "4" ...
## - attr(*, "call")= language poly2nb(pl = shp_pan, queen = TRUE)
## - attr(*, "type")= chr "queen"
## - attr(*, "snap")= num 9e-08
## - attr(*, "sym")= logi TRUE
## - attr(*, "ncomp")=List of 2
## ..$ nc : int 1
## ..$ comp.id: int [1:31] 1 1 1 1 1 1 1 1 1 1 ...
jumlah_tetangga <- data.frame(wilayah = pan$wilayah, jumlah_tetangga = card(nb))
print(jumlah_tetangga)
## wilayah jumlah_tetangga
## 1 Jakarta Timur 6
## 2 Jakarta Selatan 4
## 3 Jakarta Pusat 4
## 4 Jakarta Barat 3
## 5 Jakarta Utara 4
## 6 Kota Bandung 3
## 7 Kota Cimahi 3
## 8 Kab. Bandung 7
## 9 Kab. Bandung Barat 6
## 10 Kab. Cianjur 6
## 11 Kota Bogor 1
## 12 Kab. Sukabumi 3
## 13 Kota Sukabumi 1
## 14 Kab. Bogor 8
## 15 Kota Bekasi 4
## 16 Kota Depok 4
## 17 Kab. Purwakarta 5
## 18 Kab. Karawang 4
## 19 Kab. Bekasi 5
## 20 Kab. Cirebon 4
## 21 Kab. Indramayu 4
## 22 Kota Cirebon 1
## 23 Kab. Majalengka 6
## 24 Kab. Sumedang 6
## 25 Kab. Subang 6
## 26 Kab. Ciamis 5
## 27 Kab. Kuningan 3
## 28 Kota Banjar 1
## 29 Kab. Garut 4
## 30 Kab. Tasikmalaya 5
## 31 Kota Tasikmalaya 2
# Jumlah nonzero links
jumlah_nonzero_links <- sum(card(nb))
cat("Jumlah nonzero links =", jumlah_nonzero_links, "\n")
## Jumlah nonzero links = 128
# Hubungan unik tak berarah
jumlah_pasangan_unik <- (jumlah_nonzero_links / 2)
cat("Jumlah pasangan hubungan unik =", jumlah_pasangan_unik, "\n")
## Jumlah pasangan hubungan unik = 64
# Titik centroid
xy_centroid <- st_centroid(st_geometry(shp_pan))
coords <- st_coordinates(xy_centroid)
plot(st_geometry(shp_pan), col = "#F2F2F2", border = "#555555", main = "Queen Contiguity 31 Kabupaten/Kota")
plot(nb, coords, col = "#D73027", lwd = 1.5, add = TRUE)
points(coords, pch = 19, col = "#222222", cex = 0.5)
# 13. MEMBUAT MATRIKS BOBOT W*
# wm <- nb2mat(w, style='B')
W_star <- nb2mat(nb, style = "B", zero.policy = TRUE)
W_star
## 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
## 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0
## 2 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
## 3 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## 4 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## 5 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
## 6 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## 7 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## 8 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0
## 9 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0
## 10 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0
## 11 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## 12 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## 13 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## 14 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0
## 15 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0
## 16 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
## 17 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0
## 18 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0
## 19 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0
## 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0
## 21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0
## 22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
## 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 1 0
## 24 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0
## 25 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0
## 26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1
## 27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0
## 28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
## 29 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
## 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0
## 31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
## 29 30 31
## 1 0 0 0
## 2 0 0 0
## 3 0 0 0
## 4 0 0 0
## 5 0 0 0
## 6 0 0 0
## 7 0 0 0
## 8 1 0 0
## 9 0 0 0
## 10 1 0 0
## 11 0 0 0
## 12 0 0 0
## 13 0 0 0
## 14 0 0 0
## 15 0 0 0
## 16 0 0 0
## 17 0 0 0
## 18 0 0 0
## 19 0 0 0
## 20 0 0 0
## 21 0 0 0
## 22 0 0 0
## 23 0 1 0
## 24 1 1 0
## 25 0 0 0
## 26 0 1 1
## 27 0 0 0
## 28 0 0 0
## 29 0 1 0
## 30 1 0 1
## 31 0 1 0
## attr(,"call")
## nb2mat(neighbours = nb, style = "B", zero.policy = TRUE)
# Ukuran matriks
dim(W_star)
## [1] 31 31
S0_star <- sum(W_star)
cat("S0 W* =", S0_star, "\n")
## S0 W* = 128
listw_B <- nb2listw(nb, style = "B", zero.policy = TRUE)
# Cek S0
Szero(listw_B)
## [1] 128
# n <- length(p)
# y <- p$value
# ybar <- mean(y)
n <- length(pan$suara_pan)
y <- pan$suara_pan
ybar <- mean(y)
cat("n =", n,"\n")
## n = 31
cat("Rata-rata suara =", ybar, "\n")
## Rata-rata suara = 192399.5
# Selisih terhadap rata-rata
dy <- y - ybar
# Membentuk pasangan nilai
g <- expand.grid(dy, dy)
yiyj <- g[, 1] * g[, 2]
yi <- rep(dy, each = n)
yj <- rep(dy)
yiyj <- yi * yj
# Membentuk matriks
pm <- matrix(yiyj, ncol = n)
# Perkalian dengan matriks bobot
pmw <- pm * W_star
# PEMBILANG
spmw <- sum(pmw)
pembilang <- spmw
# S0
smw <- sum(W_star)
S0 <- smw
# PENYEBUT
penyebut <- sum(dy^2)
# Komponen rumus Moran
vr <- n / penyebut
sw <- pembilang / S0
# MORAN'S I
MI <- vr * sw
# EXPECTED MORAN'S I
EI <- -1 / (n - 1)
cat("\n============================================\n")
##
## ============================================
cat("PERHITUNGAN MANUAL MORAN'S I\n")
## PERHITUNGAN MANUAL MORAN'S I
cat("============================================\n")
## ============================================
cat("Jumlah wilayah (n) =", n, "\n")
## Jumlah wilayah (n) = 31
cat("Rata-rata (ybar) =", ybar, "\n")
## Rata-rata (ybar) = 192399.5
cat("S0 =", S0, "\n")
## S0 = 128
cat("Pembilang =", pembilang, "\n")
## Pembilang = 269434758621
cat("Penyebut =", penyebut, "\n")
## Penyebut = 522836865586
cat("n / Penyebut =", vr, "\n")
## n / Penyebut = 5.929192e-11
cat("Pembilang / S0 =", sw,"\n")
## Pembilang / S0 = 2104959052
cat("Moran's I =", MI,"\n")
## Moran's I = 0.1248071
cat("Expected Moran's I =", EI, "\n")
## Expected Moran's I = -0.03333333
# moran(p$value, ww,
# n=length(ww$neighbours),
# S0=Szero(ww))
moran_Wstar <- moran(y, listw_B, n = length(listw_B$neighbours),
S0 = Szero(listw_B),
zero.policy = TRUE)
cat("HASIL MORAN'S I DENGAN FUNGSI moran()\n")
## HASIL MORAN'S I DENGAN FUNGSI moran()
print(moran_Wstar)
## $I
## [1] 0.1248071
##
## $K
## [1] 3.484466
uji_Moran_Wstar <- moran.test(y, listw_B, randomisation = FALSE, alternative = "greater", zero.policy = TRUE)
print(uji_Moran_Wstar)
##
## Moran I test under normality
##
## data: y
## weights: listw_B
##
## Moran I statistic standard deviate = 1.4022, p-value = 0.08043
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.12480706 -0.03333333 0.01271996
# rwm <- mat2listw(wm, style='W')
listw_W <- mat2listw(W_star, style = "W")
# 22. MENGUBAH LISTW MENJADI MATRIKS
W <- listw2mat(listw_W)
W
## 1 2 3 4 5 6 7 8
## 1 0.00 0.1666667 0.1666667 0.00 0.1666667 0.0000000 0.0000000 0.0000000
## 2 0.25 0.0000000 0.2500000 0.25 0.0000000 0.0000000 0.0000000 0.0000000
## 3 0.25 0.2500000 0.0000000 0.25 0.2500000 0.0000000 0.0000000 0.0000000
## 4 0.00 0.3333333 0.3333333 0.00 0.3333333 0.0000000 0.0000000 0.0000000
## 5 0.25 0.0000000 0.2500000 0.25 0.0000000 0.0000000 0.0000000 0.0000000
## 6 0.00 0.0000000 0.0000000 0.00 0.0000000 0.0000000 0.3333333 0.3333333
## 7 0.00 0.0000000 0.0000000 0.00 0.0000000 0.3333333 0.0000000 0.3333333
## 8 0.00 0.0000000 0.0000000 0.00 0.0000000 0.1428571 0.1428571 0.0000000
## 9 0.00 0.0000000 0.0000000 0.00 0.0000000 0.1666667 0.1666667 0.1666667
## 10 0.00 0.0000000 0.0000000 0.00 0.0000000 0.0000000 0.0000000 0.1666667
## 11 0.00 0.0000000 0.0000000 0.00 0.0000000 0.0000000 0.0000000 0.0000000
## 12 0.00 0.0000000 0.0000000 0.00 0.0000000 0.0000000 0.0000000 0.0000000
## 13 0.00 0.0000000 0.0000000 0.00 0.0000000 0.0000000 0.0000000 0.0000000
## 14 0.00 0.0000000 0.0000000 0.00 0.0000000 0.0000000 0.0000000 0.0000000
## 15 0.25 0.0000000 0.0000000 0.00 0.0000000 0.0000000 0.0000000 0.0000000
## 16 0.25 0.2500000 0.0000000 0.00 0.0000000 0.0000000 0.0000000 0.0000000
## 17 0.00 0.0000000 0.0000000 0.00 0.0000000 0.0000000 0.0000000 0.0000000
## 18 0.00 0.0000000 0.0000000 0.00 0.0000000 0.0000000 0.0000000 0.0000000
## 19 0.20 0.0000000 0.0000000 0.00 0.2000000 0.0000000 0.0000000 0.0000000
## 20 0.00 0.0000000 0.0000000 0.00 0.0000000 0.0000000 0.0000000 0.0000000
## 21 0.00 0.0000000 0.0000000 0.00 0.0000000 0.0000000 0.0000000 0.0000000
## 22 0.00 0.0000000 0.0000000 0.00 0.0000000 0.0000000 0.0000000 0.0000000
## 23 0.00 0.0000000 0.0000000 0.00 0.0000000 0.0000000 0.0000000 0.0000000
## 24 0.00 0.0000000 0.0000000 0.00 0.0000000 0.0000000 0.0000000 0.1666667
## 25 0.00 0.0000000 0.0000000 0.00 0.0000000 0.0000000 0.0000000 0.1666667
## 26 0.00 0.0000000 0.0000000 0.00 0.0000000 0.0000000 0.0000000 0.0000000
## 27 0.00 0.0000000 0.0000000 0.00 0.0000000 0.0000000 0.0000000 0.0000000
## 28 0.00 0.0000000 0.0000000 0.00 0.0000000 0.0000000 0.0000000 0.0000000
## 29 0.00 0.0000000 0.0000000 0.00 0.0000000 0.0000000 0.0000000 0.2500000
## 30 0.00 0.0000000 0.0000000 0.00 0.0000000 0.0000000 0.0000000 0.0000000
## 31 0.00 0.0000000 0.0000000 0.00 0.0000000 0.0000000 0.0000000 0.0000000
## 9 10 11 12 13 14 15 16
## 1 0.0000000 0.0000000 0.000 0.0000000 0.0000000 0.0000000 0.1666667 0.1666667
## 2 0.0000000 0.0000000 0.000 0.0000000 0.0000000 0.0000000 0.0000000 0.2500000
## 3 0.0000000 0.0000000 0.000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
## 4 0.0000000 0.0000000 0.000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
## 5 0.0000000 0.0000000 0.000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
## 6 0.3333333 0.0000000 0.000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
## 7 0.3333333 0.0000000 0.000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
## 8 0.1428571 0.1428571 0.000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
## 9 0.0000000 0.1666667 0.000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
## 10 0.1666667 0.0000000 0.000 0.1666667 0.0000000 0.1666667 0.0000000 0.0000000
## 11 0.0000000 0.0000000 0.000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000
## 12 0.0000000 0.3333333 0.000 0.0000000 0.3333333 0.3333333 0.0000000 0.0000000
## 13 0.0000000 0.0000000 0.000 1.0000000 0.0000000 0.0000000 0.0000000 0.0000000
## 14 0.0000000 0.1250000 0.125 0.1250000 0.0000000 0.0000000 0.1250000 0.1250000
## 15 0.0000000 0.0000000 0.000 0.0000000 0.0000000 0.2500000 0.0000000 0.2500000
## 16 0.0000000 0.0000000 0.000 0.0000000 0.0000000 0.2500000 0.2500000 0.0000000
## 17 0.2000000 0.2000000 0.000 0.0000000 0.0000000 0.2000000 0.0000000 0.0000000
## 18 0.0000000 0.0000000 0.000 0.0000000 0.0000000 0.2500000 0.0000000 0.0000000
## 19 0.0000000 0.0000000 0.000 0.0000000 0.0000000 0.2000000 0.2000000 0.0000000
## 20 0.0000000 0.0000000 0.000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
## 21 0.0000000 0.0000000 0.000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
## 22 0.0000000 0.0000000 0.000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
## 23 0.0000000 0.0000000 0.000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
## 24 0.0000000 0.0000000 0.000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
## 25 0.1666667 0.0000000 0.000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
## 26 0.0000000 0.0000000 0.000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
## 27 0.0000000 0.0000000 0.000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
## 28 0.0000000 0.0000000 0.000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
## 29 0.0000000 0.2500000 0.000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
## 30 0.0000000 0.0000000 0.000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
## 31 0.0000000 0.0000000 0.000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
## 17 18 19 20 21 22 23 24
## 1 0.0000000 0.0000000 0.1666667 0.0000000 0.0000000 0.00 0.0000000 0.0000000
## 2 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.00 0.0000000 0.0000000
## 3 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.00 0.0000000 0.0000000
## 4 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.00 0.0000000 0.0000000
## 5 0.0000000 0.0000000 0.2500000 0.0000000 0.0000000 0.00 0.0000000 0.0000000
## 6 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.00 0.0000000 0.0000000
## 7 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.00 0.0000000 0.0000000
## 8 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.00 0.0000000 0.1428571
## 9 0.1666667 0.0000000 0.0000000 0.0000000 0.0000000 0.00 0.0000000 0.0000000
## 10 0.1666667 0.0000000 0.0000000 0.0000000 0.0000000 0.00 0.0000000 0.0000000
## 11 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.00 0.0000000 0.0000000
## 12 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.00 0.0000000 0.0000000
## 13 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.00 0.0000000 0.0000000
## 14 0.1250000 0.1250000 0.1250000 0.0000000 0.0000000 0.00 0.0000000 0.0000000
## 15 0.0000000 0.0000000 0.2500000 0.0000000 0.0000000 0.00 0.0000000 0.0000000
## 16 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.00 0.0000000 0.0000000
## 17 0.0000000 0.2000000 0.0000000 0.0000000 0.0000000 0.00 0.0000000 0.0000000
## 18 0.2500000 0.0000000 0.2500000 0.0000000 0.0000000 0.00 0.0000000 0.0000000
## 19 0.0000000 0.2000000 0.0000000 0.0000000 0.0000000 0.00 0.0000000 0.0000000
## 20 0.0000000 0.0000000 0.0000000 0.0000000 0.2500000 0.25 0.2500000 0.0000000
## 21 0.0000000 0.0000000 0.0000000 0.2500000 0.0000000 0.00 0.2500000 0.2500000
## 22 0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.00 0.0000000 0.0000000
## 23 0.0000000 0.0000000 0.0000000 0.1666667 0.1666667 0.00 0.0000000 0.1666667
## 24 0.0000000 0.0000000 0.0000000 0.0000000 0.1666667 0.00 0.1666667 0.0000000
## 25 0.1666667 0.1666667 0.0000000 0.0000000 0.1666667 0.00 0.0000000 0.1666667
## 26 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.00 0.2000000 0.0000000
## 27 0.0000000 0.0000000 0.0000000 0.3333333 0.0000000 0.00 0.3333333 0.0000000
## 28 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.00 0.0000000 0.0000000
## 29 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.00 0.0000000 0.2500000
## 30 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.00 0.2000000 0.2000000
## 31 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.00 0.0000000 0.0000000
## 25 26 27 28 29 30 31
## 1 0.0000000 0.0000000 0.0000000 0.0 0.0000000 0.0000000 0.0
## 2 0.0000000 0.0000000 0.0000000 0.0 0.0000000 0.0000000 0.0
## 3 0.0000000 0.0000000 0.0000000 0.0 0.0000000 0.0000000 0.0
## 4 0.0000000 0.0000000 0.0000000 0.0 0.0000000 0.0000000 0.0
## 5 0.0000000 0.0000000 0.0000000 0.0 0.0000000 0.0000000 0.0
## 6 0.0000000 0.0000000 0.0000000 0.0 0.0000000 0.0000000 0.0
## 7 0.0000000 0.0000000 0.0000000 0.0 0.0000000 0.0000000 0.0
## 8 0.1428571 0.0000000 0.0000000 0.0 0.1428571 0.0000000 0.0
## 9 0.1666667 0.0000000 0.0000000 0.0 0.0000000 0.0000000 0.0
## 10 0.0000000 0.0000000 0.0000000 0.0 0.1666667 0.0000000 0.0
## 11 0.0000000 0.0000000 0.0000000 0.0 0.0000000 0.0000000 0.0
## 12 0.0000000 0.0000000 0.0000000 0.0 0.0000000 0.0000000 0.0
## 13 0.0000000 0.0000000 0.0000000 0.0 0.0000000 0.0000000 0.0
## 14 0.0000000 0.0000000 0.0000000 0.0 0.0000000 0.0000000 0.0
## 15 0.0000000 0.0000000 0.0000000 0.0 0.0000000 0.0000000 0.0
## 16 0.0000000 0.0000000 0.0000000 0.0 0.0000000 0.0000000 0.0
## 17 0.2000000 0.0000000 0.0000000 0.0 0.0000000 0.0000000 0.0
## 18 0.2500000 0.0000000 0.0000000 0.0 0.0000000 0.0000000 0.0
## 19 0.0000000 0.0000000 0.0000000 0.0 0.0000000 0.0000000 0.0
## 20 0.0000000 0.0000000 0.2500000 0.0 0.0000000 0.0000000 0.0
## 21 0.2500000 0.0000000 0.0000000 0.0 0.0000000 0.0000000 0.0
## 22 0.0000000 0.0000000 0.0000000 0.0 0.0000000 0.0000000 0.0
## 23 0.0000000 0.1666667 0.1666667 0.0 0.0000000 0.1666667 0.0
## 24 0.1666667 0.0000000 0.0000000 0.0 0.1666667 0.1666667 0.0
## 25 0.0000000 0.0000000 0.0000000 0.0 0.0000000 0.0000000 0.0
## 26 0.0000000 0.0000000 0.2000000 0.2 0.0000000 0.2000000 0.2
## 27 0.0000000 0.3333333 0.0000000 0.0 0.0000000 0.0000000 0.0
## 28 0.0000000 1.0000000 0.0000000 0.0 0.0000000 0.0000000 0.0
## 29 0.0000000 0.0000000 0.0000000 0.0 0.0000000 0.2500000 0.0
## 30 0.0000000 0.2000000 0.0000000 0.0 0.2000000 0.0000000 0.2
## 31 0.0000000 0.5000000 0.0000000 0.0 0.0000000 0.5000000 0.0
row_sum_W <- apply(W, 1, sum)
print(row_sum_W)
## 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
## 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## 27 28 29 30 31
## 1 1 1 1 1
# Ringkasan
cat("Minimum jumlah baris W =", min(row_sum_W), "\n")
## Minimum jumlah baris W = 1
cat("Maksimum jumlah baris W =", max(row_sum_W), "\n")
## Maksimum jumlah baris W = 1
Moran_I_W <- moran(y, listw_W, n = length(listw_W$neighbours), S0 = Szero(listw_W),zero.policy = TRUE)
cat("HASIL MORAN'S I W STANDARDIZED\n")
## HASIL MORAN'S I W STANDARDIZED
print(Moran_I_W)
## $I
## [1] 0.08588489
##
## $K
## [1] 3.484466
uji_Moran_W <- moran.test(y, listw_W, randomisation = FALSE, alternative = "greater", zero.policy = TRUE)
print(uji_Moran_W)
##
## Moran I test under normality
##
## data: y
## weights: listw_W
##
## Moran I statistic standard deviate = 0.93657, p-value = 0.1745
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.08588489 -0.03333333 0.01620326
I_value <- as.numeric(uji_Moran_W$estimate[1])
E_value <- as.numeric(uji_Moran_W$estimate[2])
Var_value <- as.numeric(uji_Moran_W$estimate[3])
Z_value <- as.numeric(uji_Moran_W$statistic)
alpha <- 0.05
# Karena alternative = "greater" digunakan uji satu arah
Z_kritis <- qnorm(1 - alpha)
p_value <- pnorm(Z_value,lower.tail = FALSE)
cat("\n============================================\n")
##
## ============================================
cat("HASIL UJI MORAN'S I\n")
## HASIL UJI MORAN'S I
cat("============================================\n")
## ============================================
cat("Moran's I =", I_value, "\n")
## Moran's I = 0.08588489
cat("E(I) =", E_value,"\n")
## E(I) = -0.03333333
cat("Var(I) =", Var_value, "\n")
## Var(I) = 0.01620326
cat("Z hitung =", Z_value, "\n")
## Z hitung = 0.9365726
cat("Z kritis =", Z_kritis, "\n")
## Z kritis = 1.644854
cat("p-value =", p_value, "\n")
## p-value = 0.1744892
if (Z_value > Z_kritis) {
cat("\nKeputusan: Tolak H0\n")
cat("Terdapat autokorelasi spasial positif yang signifikan.\n")
} else {
cat("\nKeputusan: Gagal menolak H0\n")
cat("Tidak terdapat autokorelasi spasial positif yang signifikan.\n")
}
##
## Keputusan: Gagal menolak H0
## Tidak terdapat autokorelasi spasial positif yang signifikan.
hasil_moran <- data.frame(Statistik = c("Moran's I", "E(I)", "Var(I)", "Z hitung", "Z kritis", "p-value"),
Nilai = c(I_value, E_value, Var_value, Z_value, Z_kritis, p_value))
print(hasil_moran)
## Statistik Nilai
## 1 Moran's I 0.08588489
## 2 E(I) -0.03333333
## 3 Var(I) 0.01620326
## 4 Z hitung 0.93657264
## 5 Z kritis 1.64485363
## 6 p-value 0.17448922
# Menggunakan simpangan baku dengan penyebut n agar sesuai dengan perhitungan manual.
sd_y <- sqrt(sum((y - ybar)^2) / n)
z_pan <- (y - ybar) / sd_y
# Tabel standardisasi
tabel_z <- data.frame(wilayah = pan$wilayah, suara_pan = y, z_pan = z_pan)
print(tabel_z)
## wilayah suara_pan z_pan
## 1 Jakarta Timur 417344 1.7321008
## 2 Jakarta Selatan 274529 0.6324075
## 3 Jakarta Pusat 145495 -0.3611704
## 4 Jakarta Barat 285640 0.7179636
## 5 Jakarta Utara 212101 0.1517041
## 6 Kota Bandung 442769 1.9278764
## 7 Kota Cimahi 84855 -0.8281059
## 8 Kab. Bandung 436420 1.8789883
## 9 Kab. Bandung Barat 169282 -0.1780075
## 10 Kab. Cianjur 223892 0.2424963
## 11 Kota Bogor 150358 -0.3237247
## 12 Kab. Sukabumi 269380 0.5927596
## 13 Kota Sukabumi 42044 -1.1577559
## 14 Kab. Bogor 553302 2.7789943
## 15 Kota Bekasi 269862 0.5964710
## 16 Kota Depok 208964 0.1275488
## 17 Kab. Purwakarta 68245 -0.9560050
## 18 Kab. Karawang 209263 0.1298512
## 19 Kab. Bekasi 190200 -0.0169363
## 20 Kab. Cirebon 164567 -0.2143136
## 21 Kab. Indramayu 64018 -0.9885534
## 22 Kota Cirebon 34526 -1.2156455
## 23 Kab. Majalengka 70730 -0.9368702
## 24 Kab. Sumedang 83097 -0.8416427
## 25 Kab. Subang 129990 -0.4805608
## 26 Kab. Ciamis 170575 -0.1680512
## 27 Kab. Kuningan 100034 -0.7112257
## 28 Kota Banjar 12217 -1.3874276
## 29 Kab. Garut 264577 0.5557759
## 30 Kab. Tasikmalaya 144249 -0.3707647
## 31 Kota Tasikmalaya 71859 -0.9281767
# spatially lagged y
spatial_lag <- as.vector(W %*% z_pan)
# Tabel
tabel_lag <- data.frame(wilayah = pan$wilayah, suara_pan = y, z_pan = z_pan, spatial_lag = spatial_lag)
print(tabel_lag)
## wilayah suara_pan z_pan spatial_lag
## 1 Jakarta Timur 417344 1.7321008 0.18833747
## 2 Jakarta Selatan 274529 0.6324075 0.55411071
## 3 Jakarta Pusat 145495 -0.3611704 0.80854399
## 4 Jakarta Barat 285640 0.7179636 0.14098042
## 5 Jakarta Utara 212101 0.1517041 0.51798942
## 6 Kota Bandung 442769 1.9278764 0.29095831
## 7 Kota Cimahi 84855 -0.8281059 1.20961909
## 8 Kab. Bandung 436420 1.8789883 0.05683309
## 9 Kab. Bandung Barat 169282 -0.1780075 0.29744823
## 10 Kab. Cianjur 223892 0.2424963 0.77875093
## 11 Kota Bogor 150358 -0.3237247 2.77899430
## 12 Kab. Sukabumi 269380 0.5927596 0.62124488
## 13 Kota Sukabumi 42044 -1.1577559 0.59275956
## 14 Kab. Bogor 553302 2.7789943 0.04905762
## 15 Kota Bekasi 269862 0.5964710 1.15542690
## 16 Kota Depok 208964 0.1275488 1.43499340
## 17 Kab. Purwakarta 68245 -0.9560050 0.49855469
## 18 Kab. Karawang 209263 0.1298512 0.33137306
## 19 Kab. Bekasi 190200 -0.0169363 1.07782428
## 20 Kab. Cirebon 164567 -0.2143136 -0.96307369
## 21 Kab. Indramayu 64018 -0.9885534 -0.61834682
## 22 Kota Cirebon 34526 -1.2156455 -0.21431359
## 23 Kab. Majalengka 70730 -0.9368702 -0.54909190
## 24 Kab. Sumedang 83097 -0.8416427 -0.05699748
## 25 Kab. Subang 129990 -0.4805608 -0.15922818
## 26 Kab. Ciamis 170575 -0.1680512 -0.86689298
## 27 Kab. Kuningan 100034 -0.7112257 -0.43974500
## 28 Kota Banjar 12217 -1.3874276 -0.16805124
## 29 Kab. Garut 264577 0.5557759 0.22726930
## 30 Kab. Tasikmalaya 144249 -0.3707647 -0.46379300
## 31 Kota Tasikmalaya 71859 -0.9281767 -0.26940798
tabel_lag$kuadran <- case_when(tabel_lag$z_pan >= 0 & tabel_lag$spatial_lag >= 0 ~ "HH",
tabel_lag$z_pan < 0 & tabel_lag$spatial_lag >= 0 ~ "LH",
tabel_lag$z_pan < 0 & tabel_lag$spatial_lag < 0~ "LL",
tabel_lag$z_pan >= 0 & tabel_lag$spatial_lag < 0~ "HL")
print(tabel_lag)
## wilayah suara_pan z_pan spatial_lag kuadran
## 1 Jakarta Timur 417344 1.7321008 0.18833747 HH
## 2 Jakarta Selatan 274529 0.6324075 0.55411071 HH
## 3 Jakarta Pusat 145495 -0.3611704 0.80854399 LH
## 4 Jakarta Barat 285640 0.7179636 0.14098042 HH
## 5 Jakarta Utara 212101 0.1517041 0.51798942 HH
## 6 Kota Bandung 442769 1.9278764 0.29095831 HH
## 7 Kota Cimahi 84855 -0.8281059 1.20961909 LH
## 8 Kab. Bandung 436420 1.8789883 0.05683309 HH
## 9 Kab. Bandung Barat 169282 -0.1780075 0.29744823 LH
## 10 Kab. Cianjur 223892 0.2424963 0.77875093 HH
## 11 Kota Bogor 150358 -0.3237247 2.77899430 LH
## 12 Kab. Sukabumi 269380 0.5927596 0.62124488 HH
## 13 Kota Sukabumi 42044 -1.1577559 0.59275956 LH
## 14 Kab. Bogor 553302 2.7789943 0.04905762 HH
## 15 Kota Bekasi 269862 0.5964710 1.15542690 HH
## 16 Kota Depok 208964 0.1275488 1.43499340 HH
## 17 Kab. Purwakarta 68245 -0.9560050 0.49855469 LH
## 18 Kab. Karawang 209263 0.1298512 0.33137306 HH
## 19 Kab. Bekasi 190200 -0.0169363 1.07782428 LH
## 20 Kab. Cirebon 164567 -0.2143136 -0.96307369 LL
## 21 Kab. Indramayu 64018 -0.9885534 -0.61834682 LL
## 22 Kota Cirebon 34526 -1.2156455 -0.21431359 LL
## 23 Kab. Majalengka 70730 -0.9368702 -0.54909190 LL
## 24 Kab. Sumedang 83097 -0.8416427 -0.05699748 LL
## 25 Kab. Subang 129990 -0.4805608 -0.15922818 LL
## 26 Kab. Ciamis 170575 -0.1680512 -0.86689298 LL
## 27 Kab. Kuningan 100034 -0.7112257 -0.43974500 LL
## 28 Kota Banjar 12217 -1.3874276 -0.16805124 LL
## 29 Kab. Garut 264577 0.5557759 0.22726930 HH
## 30 Kab. Tasikmalaya 144249 -0.3707647 -0.46379300 LL
## 31 Kota Tasikmalaya 71859 -0.9281767 -0.26940798 LL
cat("\nJumlah wilayah berdasarkan kuadran:\n")
##
## Jumlah wilayah berdasarkan kuadran:
print(table(tabel_lag$kuadran))
##
## HH LH LL
## 13 7 11
# MORAN SCATTERPLOT DENGAN SPDEP
moran.plot(y, listw_W, labels = pan$wilayah, xlab = "Standardized PAN Votes", ylab = "Spatial Lag",main = "Moran Scatterplot Suara PAN")
# 36. VISUALISASI 4
# MORAN SCATTERPLOT MANUAL
p_scatter <- ggplot(tabel_lag,aes(x = z_pan, y = spatial_lag, color = kuadran)) +
geom_hline(yintercept = 0, linetype = "dashed", color = "#777777") +
geom_vline(xintercept = 0, linetype = "dashed", color = "#777777") +
geom_point(size = 3) +
geom_text(aes(label = wilayah), vjust = -0.7, size = 2.8, show.legend = FALSE) +
scale_color_manual(values = c("HH" = "#D73027", "LH" = "#4575B4","LL" = "#74ADD1", "HL" = "#FC8D59"),name = "Kuadran") +
labs(title = "Moran Scatterplot Suara PAN", subtitle = "DKI Jakarta dan Jawa Barat", x = "Standardized PAN Votes (Z)", y = "Spatial Lag") +
theme_minimal(base_size = 12) +
theme(plot.title = element_text(face = "bold", size = 15), plot.subtitle = element_text(size = 11), legend.title = element_text(face = "bold"),
panel.grid.minor = element_blank())
print(p_scatter)
# 37. LOCAL MORAN’S I / LISA
lisa <- localmoran(y, listw_W, zero.policy = TRUE, conditional = TRUE)
print(lisa)
## Ii E.Ii Var.Ii Z.Ii Pr(z != E(Ii))
## 1 0.32621948 -1.000058e-01 3.848473e-01 0.6870604 0.492044651
## 2 0.35042377 -1.333131e-02 9.139473e-02 1.2032295 0.228887517
## 3 -0.29202213 -4.348134e-03 3.008067e-02 -1.6586580 0.097184732
## 4 0.10121881 -1.718239e-02 1.624661e-01 0.2937479 0.768950566
## 5 0.07858113 -7.671381e-04 5.326198e-03 1.0872485 0.276926998
## 6 0.56093167 -1.238903e-01 1.044244e+00 0.6701573 0.502757545
## 7 -1.00169272 -2.285865e-02 2.148890e-01 -2.1115532 0.034724792
## 8 0.10678872 -1.176866e-01 3.647063e-01 0.3717037 0.710113461
## 9 -0.05294802 -1.056222e-03 4.511491e-03 -0.7725714 0.439776057
## 10 0.18884421 -1.960148e-03 8.364896e-03 2.0862101 0.036959599
## 11 -0.89962898 -3.493255e-03 1.079126e-01 -2.7279579 0.006372773
## 12 0.36824884 -1.171213e-02 1.113591e-01 1.1386132 0.254864518
## 13 -0.68627090 -4.467996e-02 1.323194e+00 -0.5577589 0.577009005
## 14 0.13633084 -2.574270e-01 5.619396e-01 0.5252722 0.599394011
## 15 0.68917866 -1.185926e-02 8.142416e-02 2.4567720 0.014019162
## 16 0.18303174 -5.422902e-04 3.765938e-03 2.9914009 0.002777006
## 17 -0.47662077 -3.046485e-02 1.578688e-01 -1.1228933 0.261482800
## 18 0.04302918 -5.620442e-04 3.903044e-03 0.6977460 0.485336040
## 19 -0.01825435 -9.561275e-06 5.110288e-05 -2.5522093 0.010704221
## 20 0.20639978 -1.531010e-03 1.062160e-02 2.0175481 0.043638343
## 21 0.61126886 -3.257459e-02 2.189644e-01 1.3759210 0.168846089
## 22 0.26052935 -4.925980e-02 1.451831e+00 0.2571036 0.797098822
## 23 0.51442782 -2.925752e-02 1.214410e-01 1.5601451 0.118725602
## 24 0.04797152 -2.361208e-02 9.857809e-02 0.2279940 0.819650940
## 25 0.07651882 -7.697956e-03 3.266202e-02 0.4659906 0.641222252
## 26 0.14568244 -9.413740e-04 5.026745e-03 2.0680502 0.038635301
## 27 0.31275796 -1.686140e-02 1.594831e-01 0.8253828 0.409154308
## 28 0.23315892 -6.416517e-02 1.861488e+00 0.2179214 0.827490316
## 29 0.12631079 -1.029623e-02 7.080442e-02 0.5133846 0.607682334
## 30 0.17195808 -4.582216e-03 2.437893e-02 1.1306717 0.258193283
## 31 0.25005822 -2.871707e-02 4.174242e-01 0.4314848 0.666115919
## attr(,"call")
## localmoran(x = y, listw = listw_W, zero.policy = TRUE, conditional = TRUE)
## attr(,"class")
## [1] "localmoran" "matrix" "array"
## attr(,"quadr")
## mean median pysal
## 1 High-Low High-Low High-High
## 2 High-High High-High High-High
## 3 Low-High Low-High Low-High
## 4 High-Low High-Low High-High
## 5 High-High High-High High-High
## 6 High-High High-High High-High
## 7 Low-High Low-High Low-High
## 8 High-Low High-Low High-High
## 9 Low-High Low-High Low-High
## 10 High-High High-High High-High
## 11 Low-High Low-High Low-High
## 12 High-High High-High High-High
## 13 Low-High Low-High Low-High
## 14 High-Low High-Low High-High
## 15 High-High High-High High-High
## 16 High-High High-High High-High
## 17 Low-High Low-High Low-High
## 18 High-High High-High High-High
## 19 Low-High High-High Low-High
## 20 Low-Low Low-Low Low-Low
## 21 Low-Low Low-Low Low-Low
## 22 Low-Low Low-Low Low-Low
## 23 Low-Low Low-Low Low-Low
## 24 Low-Low Low-Low Low-Low
## 25 Low-Low Low-Low Low-Low
## 26 Low-Low High-Low Low-Low
## 27 Low-Low Low-Low Low-Low
## 28 Low-Low Low-Low Low-Low
## 29 High-Low High-Low High-High
## 30 Low-Low Low-Low Low-Low
## 31 Low-Low Low-Low Low-Low
hasil_lisa <- data.frame(wilayah = pan$wilayah, suara_pan = y, Local_Moran_I = lisa[, "Ii"],
E_Ii = lisa[, "E.Ii"], Var_Ii = lisa[, "Var.Ii"], Z_Ii = lisa[, "Z.Ii"], p_value = lisa[, "Pr(z != E(Ii))"])
# Tambahkan Z PAN
hasil_lisa$z_pan <- z_pan
# Tambahkan spatial lag
hasil_lisa$spatial_lag <- spatial_lag
hasil_lisa$kuadran <- case_when(hasil_lisa$z_pan >= 0 & hasil_lisa$spatial_lag >= 0 ~ "HH",
hasil_lisa$z_pan < 0 & hasil_lisa$spatial_lag >= 0 ~ "LH",
hasil_lisa$z_pan < 0 & hasil_lisa$spatial_lag < 0 ~ "LL",
hasil_lisa$z_pan >= 0 & hasil_lisa$spatial_lag < 0 ~ "HL")
hasil_lisa$signifikan <- ifelse(hasil_lisa$p_value < 0.05, "Signifikan", "Tidak Signifikan")
hasil_lisa$cluster <- case_when(hasil_lisa$p_value < 0.05 & hasil_lisa$kuadran == "HH" ~ "HH Signifikan",
hasil_lisa$p_value < 0.05 & hasil_lisa$kuadran == "LH" ~ "LH Signifikan",
hasil_lisa$p_value < 0.05 & hasil_lisa$kuadran == "LL" ~ "LL Signifikan",
hasil_lisa$p_value < 0.05 & hasil_lisa$kuadran == "HL" ~ "HL Signifikan",
TRUE ~ "Tidak Signifikan")
print(hasil_lisa)
## wilayah suara_pan Local_Moran_I E_Ii Var_Ii
## 1 Jakarta Timur 417344 0.32621948 -1.000058e-01 3.848473e-01
## 2 Jakarta Selatan 274529 0.35042377 -1.333131e-02 9.139473e-02
## 3 Jakarta Pusat 145495 -0.29202213 -4.348134e-03 3.008067e-02
## 4 Jakarta Barat 285640 0.10121881 -1.718239e-02 1.624661e-01
## 5 Jakarta Utara 212101 0.07858113 -7.671381e-04 5.326198e-03
## 6 Kota Bandung 442769 0.56093167 -1.238903e-01 1.044244e+00
## 7 Kota Cimahi 84855 -1.00169272 -2.285865e-02 2.148890e-01
## 8 Kab. Bandung 436420 0.10678872 -1.176866e-01 3.647063e-01
## 9 Kab. Bandung Barat 169282 -0.05294802 -1.056222e-03 4.511491e-03
## 10 Kab. Cianjur 223892 0.18884421 -1.960148e-03 8.364896e-03
## 11 Kota Bogor 150358 -0.89962898 -3.493255e-03 1.079126e-01
## 12 Kab. Sukabumi 269380 0.36824884 -1.171213e-02 1.113591e-01
## 13 Kota Sukabumi 42044 -0.68627090 -4.467996e-02 1.323194e+00
## 14 Kab. Bogor 553302 0.13633084 -2.574270e-01 5.619396e-01
## 15 Kota Bekasi 269862 0.68917866 -1.185926e-02 8.142416e-02
## 16 Kota Depok 208964 0.18303174 -5.422902e-04 3.765938e-03
## 17 Kab. Purwakarta 68245 -0.47662077 -3.046485e-02 1.578688e-01
## 18 Kab. Karawang 209263 0.04302918 -5.620442e-04 3.903044e-03
## 19 Kab. Bekasi 190200 -0.01825435 -9.561275e-06 5.110288e-05
## 20 Kab. Cirebon 164567 0.20639978 -1.531010e-03 1.062160e-02
## 21 Kab. Indramayu 64018 0.61126886 -3.257459e-02 2.189644e-01
## 22 Kota Cirebon 34526 0.26052935 -4.925980e-02 1.451831e+00
## 23 Kab. Majalengka 70730 0.51442782 -2.925752e-02 1.214410e-01
## 24 Kab. Sumedang 83097 0.04797152 -2.361208e-02 9.857809e-02
## 25 Kab. Subang 129990 0.07651882 -7.697956e-03 3.266202e-02
## 26 Kab. Ciamis 170575 0.14568244 -9.413740e-04 5.026745e-03
## 27 Kab. Kuningan 100034 0.31275796 -1.686140e-02 1.594831e-01
## 28 Kota Banjar 12217 0.23315892 -6.416517e-02 1.861488e+00
## 29 Kab. Garut 264577 0.12631079 -1.029623e-02 7.080442e-02
## 30 Kab. Tasikmalaya 144249 0.17195808 -4.582216e-03 2.437893e-02
## 31 Kota Tasikmalaya 71859 0.25005822 -2.871707e-02 4.174242e-01
## Z_Ii p_value z_pan spatial_lag kuadran signifikan
## 1 0.6870604 0.492044651 1.7321008 0.18833747 HH Tidak Signifikan
## 2 1.2032295 0.228887517 0.6324075 0.55411071 HH Tidak Signifikan
## 3 -1.6586580 0.097184732 -0.3611704 0.80854399 LH Tidak Signifikan
## 4 0.2937479 0.768950566 0.7179636 0.14098042 HH Tidak Signifikan
## 5 1.0872485 0.276926998 0.1517041 0.51798942 HH Tidak Signifikan
## 6 0.6701573 0.502757545 1.9278764 0.29095831 HH Tidak Signifikan
## 7 -2.1115532 0.034724792 -0.8281059 1.20961909 LH Signifikan
## 8 0.3717037 0.710113461 1.8789883 0.05683309 HH Tidak Signifikan
## 9 -0.7725714 0.439776057 -0.1780075 0.29744823 LH Tidak Signifikan
## 10 2.0862101 0.036959599 0.2424963 0.77875093 HH Signifikan
## 11 -2.7279579 0.006372773 -0.3237247 2.77899430 LH Signifikan
## 12 1.1386132 0.254864518 0.5927596 0.62124488 HH Tidak Signifikan
## 13 -0.5577589 0.577009005 -1.1577559 0.59275956 LH Tidak Signifikan
## 14 0.5252722 0.599394011 2.7789943 0.04905762 HH Tidak Signifikan
## 15 2.4567720 0.014019162 0.5964710 1.15542690 HH Signifikan
## 16 2.9914009 0.002777006 0.1275488 1.43499340 HH Signifikan
## 17 -1.1228933 0.261482800 -0.9560050 0.49855469 LH Tidak Signifikan
## 18 0.6977460 0.485336040 0.1298512 0.33137306 HH Tidak Signifikan
## 19 -2.5522093 0.010704221 -0.0169363 1.07782428 LH Signifikan
## 20 2.0175481 0.043638343 -0.2143136 -0.96307369 LL Signifikan
## 21 1.3759210 0.168846089 -0.9885534 -0.61834682 LL Tidak Signifikan
## 22 0.2571036 0.797098822 -1.2156455 -0.21431359 LL Tidak Signifikan
## 23 1.5601451 0.118725602 -0.9368702 -0.54909190 LL Tidak Signifikan
## 24 0.2279940 0.819650940 -0.8416427 -0.05699748 LL Tidak Signifikan
## 25 0.4659906 0.641222252 -0.4805608 -0.15922818 LL Tidak Signifikan
## 26 2.0680502 0.038635301 -0.1680512 -0.86689298 LL Signifikan
## 27 0.8253828 0.409154308 -0.7112257 -0.43974500 LL Tidak Signifikan
## 28 0.2179214 0.827490316 -1.3874276 -0.16805124 LL Tidak Signifikan
## 29 0.5133846 0.607682334 0.5557759 0.22726930 HH Tidak Signifikan
## 30 1.1306717 0.258193283 -0.3707647 -0.46379300 LL Tidak Signifikan
## 31 0.4314848 0.666115919 -0.9281767 -0.26940798 LL Tidak Signifikan
## cluster
## 1 Tidak Signifikan
## 2 Tidak Signifikan
## 3 Tidak Signifikan
## 4 Tidak Signifikan
## 5 Tidak Signifikan
## 6 Tidak Signifikan
## 7 LH Signifikan
## 8 Tidak Signifikan
## 9 Tidak Signifikan
## 10 HH Signifikan
## 11 LH Signifikan
## 12 Tidak Signifikan
## 13 Tidak Signifikan
## 14 Tidak Signifikan
## 15 HH Signifikan
## 16 HH Signifikan
## 17 Tidak Signifikan
## 18 Tidak Signifikan
## 19 LH Signifikan
## 20 LL Signifikan
## 21 Tidak Signifikan
## 22 Tidak Signifikan
## 23 Tidak Signifikan
## 24 Tidak Signifikan
## 25 Tidak Signifikan
## 26 LL Signifikan
## 27 Tidak Signifikan
## 28 Tidak Signifikan
## 29 Tidak Signifikan
## 30 Tidak Signifikan
## 31 Tidak Signifikan
hasil_final <- hasil_lisa %>% select(wilayah, suara_pan, z_pan, spatial_lag, Local_Moran_I, Z_Ii,
p_value, kuadran, signifikan, cluster)
print(hasil_final)
## wilayah suara_pan z_pan spatial_lag Local_Moran_I Z_Ii
## 1 Jakarta Timur 417344 1.7321008 0.18833747 0.32621948 0.6870604
## 2 Jakarta Selatan 274529 0.6324075 0.55411071 0.35042377 1.2032295
## 3 Jakarta Pusat 145495 -0.3611704 0.80854399 -0.29202213 -1.6586580
## 4 Jakarta Barat 285640 0.7179636 0.14098042 0.10121881 0.2937479
## 5 Jakarta Utara 212101 0.1517041 0.51798942 0.07858113 1.0872485
## 6 Kota Bandung 442769 1.9278764 0.29095831 0.56093167 0.6701573
## 7 Kota Cimahi 84855 -0.8281059 1.20961909 -1.00169272 -2.1115532
## 8 Kab. Bandung 436420 1.8789883 0.05683309 0.10678872 0.3717037
## 9 Kab. Bandung Barat 169282 -0.1780075 0.29744823 -0.05294802 -0.7725714
## 10 Kab. Cianjur 223892 0.2424963 0.77875093 0.18884421 2.0862101
## 11 Kota Bogor 150358 -0.3237247 2.77899430 -0.89962898 -2.7279579
## 12 Kab. Sukabumi 269380 0.5927596 0.62124488 0.36824884 1.1386132
## 13 Kota Sukabumi 42044 -1.1577559 0.59275956 -0.68627090 -0.5577589
## 14 Kab. Bogor 553302 2.7789943 0.04905762 0.13633084 0.5252722
## 15 Kota Bekasi 269862 0.5964710 1.15542690 0.68917866 2.4567720
## 16 Kota Depok 208964 0.1275488 1.43499340 0.18303174 2.9914009
## 17 Kab. Purwakarta 68245 -0.9560050 0.49855469 -0.47662077 -1.1228933
## 18 Kab. Karawang 209263 0.1298512 0.33137306 0.04302918 0.6977460
## 19 Kab. Bekasi 190200 -0.0169363 1.07782428 -0.01825435 -2.5522093
## 20 Kab. Cirebon 164567 -0.2143136 -0.96307369 0.20639978 2.0175481
## 21 Kab. Indramayu 64018 -0.9885534 -0.61834682 0.61126886 1.3759210
## 22 Kota Cirebon 34526 -1.2156455 -0.21431359 0.26052935 0.2571036
## 23 Kab. Majalengka 70730 -0.9368702 -0.54909190 0.51442782 1.5601451
## 24 Kab. Sumedang 83097 -0.8416427 -0.05699748 0.04797152 0.2279940
## 25 Kab. Subang 129990 -0.4805608 -0.15922818 0.07651882 0.4659906
## 26 Kab. Ciamis 170575 -0.1680512 -0.86689298 0.14568244 2.0680502
## 27 Kab. Kuningan 100034 -0.7112257 -0.43974500 0.31275796 0.8253828
## 28 Kota Banjar 12217 -1.3874276 -0.16805124 0.23315892 0.2179214
## 29 Kab. Garut 264577 0.5557759 0.22726930 0.12631079 0.5133846
## 30 Kab. Tasikmalaya 144249 -0.3707647 -0.46379300 0.17195808 1.1306717
## 31 Kota Tasikmalaya 71859 -0.9281767 -0.26940798 0.25005822 0.4314848
## p_value kuadran signifikan cluster
## 1 0.492044651 HH Tidak Signifikan Tidak Signifikan
## 2 0.228887517 HH Tidak Signifikan Tidak Signifikan
## 3 0.097184732 LH Tidak Signifikan Tidak Signifikan
## 4 0.768950566 HH Tidak Signifikan Tidak Signifikan
## 5 0.276926998 HH Tidak Signifikan Tidak Signifikan
## 6 0.502757545 HH Tidak Signifikan Tidak Signifikan
## 7 0.034724792 LH Signifikan LH Signifikan
## 8 0.710113461 HH Tidak Signifikan Tidak Signifikan
## 9 0.439776057 LH Tidak Signifikan Tidak Signifikan
## 10 0.036959599 HH Signifikan HH Signifikan
## 11 0.006372773 LH Signifikan LH Signifikan
## 12 0.254864518 HH Tidak Signifikan Tidak Signifikan
## 13 0.577009005 LH Tidak Signifikan Tidak Signifikan
## 14 0.599394011 HH Tidak Signifikan Tidak Signifikan
## 15 0.014019162 HH Signifikan HH Signifikan
## 16 0.002777006 HH Signifikan HH Signifikan
## 17 0.261482800 LH Tidak Signifikan Tidak Signifikan
## 18 0.485336040 HH Tidak Signifikan Tidak Signifikan
## 19 0.010704221 LH Signifikan LH Signifikan
## 20 0.043638343 LL Signifikan LL Signifikan
## 21 0.168846089 LL Tidak Signifikan Tidak Signifikan
## 22 0.797098822 LL Tidak Signifikan Tidak Signifikan
## 23 0.118725602 LL Tidak Signifikan Tidak Signifikan
## 24 0.819650940 LL Tidak Signifikan Tidak Signifikan
## 25 0.641222252 LL Tidak Signifikan Tidak Signifikan
## 26 0.038635301 LL Signifikan LL Signifikan
## 27 0.409154308 LL Tidak Signifikan Tidak Signifikan
## 28 0.827490316 LL Tidak Signifikan Tidak Signifikan
## 29 0.607682334 HH Tidak Signifikan Tidak Signifikan
## 30 0.258193283 LL Tidak Signifikan Tidak Signifikan
## 31 0.666115919 LL Tidak Signifikan Tidak Signifikan
lisa_signifikan <- hasil_final %>% filter(p_value < 0.05)
print(lisa_signifikan)
## wilayah suara_pan z_pan spatial_lag Local_Moran_I Z_Ii
## 7 Kota Cimahi 84855 -0.8281059 1.2096191 -1.00169272 -2.111553
## 10 Kab. Cianjur 223892 0.2424963 0.7787509 0.18884421 2.086210
## 11 Kota Bogor 150358 -0.3237247 2.7789943 -0.89962898 -2.727958
## 15 Kota Bekasi 269862 0.5964710 1.1554269 0.68917866 2.456772
## 16 Kota Depok 208964 0.1275488 1.4349934 0.18303174 2.991401
## 19 Kab. Bekasi 190200 -0.0169363 1.0778243 -0.01825435 -2.552209
## 20 Kab. Cirebon 164567 -0.2143136 -0.9630737 0.20639978 2.017548
## 26 Kab. Ciamis 170575 -0.1680512 -0.8668930 0.14568244 2.068050
## p_value kuadran signifikan cluster
## 7 0.034724792 LH Signifikan LH Signifikan
## 10 0.036959599 HH Signifikan HH Signifikan
## 11 0.006372773 LH Signifikan LH Signifikan
## 15 0.014019162 HH Signifikan HH Signifikan
## 16 0.002777006 HH Signifikan HH Signifikan
## 19 0.010704221 LH Signifikan LH Signifikan
## 20 0.043638343 LL Signifikan LL Signifikan
## 26 0.038635301 LL Signifikan LL Signifikan
cat("\nJumlah cluster LISA signifikan:\n")
##
## Jumlah cluster LISA signifikan:
print(table(lisa_signifikan$kuadran))
##
## HH LH LL
## 3 3 2
HH_signifikan <- hasil_final %>% filter(p_value < 0.05 & kuadran == "HH")
print(HH_signifikan)
## wilayah suara_pan z_pan spatial_lag Local_Moran_I Z_Ii
## 10 Kab. Cianjur 223892 0.2424963 0.7787509 0.1888442 2.086210
## 15 Kota Bekasi 269862 0.5964710 1.1554269 0.6891787 2.456772
## 16 Kota Depok 208964 0.1275488 1.4349934 0.1830317 2.991401
## p_value kuadran signifikan cluster
## 10 0.036959599 HH Signifikan HH Signifikan
## 15 0.014019162 HH Signifikan HH Signifikan
## 16 0.002777006 HH Signifikan HH Signifikan
LH_signifikan <- hasil_final %>% filter(p_value < 0.05 & kuadran == "LH")
print(LH_signifikan)
## wilayah suara_pan z_pan spatial_lag Local_Moran_I Z_Ii
## 7 Kota Cimahi 84855 -0.8281059 1.209619 -1.00169272 -2.111553
## 11 Kota Bogor 150358 -0.3237247 2.778994 -0.89962898 -2.727958
## 19 Kab. Bekasi 190200 -0.0169363 1.077824 -0.01825435 -2.552209
## p_value kuadran signifikan cluster
## 7 0.034724792 LH Signifikan LH Signifikan
## 11 0.006372773 LH Signifikan LH Signifikan
## 19 0.010704221 LH Signifikan LH Signifikan
LL_signifikan <- hasil_final %>% filter(p_value < 0.05 & kuadran == "LL")
print(LL_signifikan)
## wilayah suara_pan z_pan spatial_lag Local_Moran_I Z_Ii
## 20 Kab. Cirebon 164567 -0.2143136 -0.9630737 0.2063998 2.017548
## 26 Kab. Ciamis 170575 -0.1680512 -0.8668930 0.1456824 2.068050
## p_value kuadran signifikan cluster
## 20 0.04363834 LL Signifikan LL Signifikan
## 26 0.03863530 LL Signifikan LL Signifikan
HL_signifikan <- hasil_final %>% filter(p_value < 0.05 & kuadran == "HL")
print(HL_signifikan)
## [1] wilayah suara_pan z_pan spatial_lag Local_Moran_I
## [6] Z_Ii p_value kuadran signifikan cluster
## <0 rows> (or 0-length row.names)
shp_pan$kuadran <- hasil_lisa$kuadran
shp_pan$cluster <- hasil_lisa$cluster
shp_pan$p_value <- hasil_lisa$p_value
shp_pan$Local_Moran_I <- hasil_lisa$Local_Moran_I
# PETA KUADRAN MORAN
p_kuadran <- ggplot(shp_pan) +
geom_sf(aes(fill = kuadran), color = "white", linewidth = 0.3) +
scale_fill_manual(values = c("HH" = "#D73027","LH" = "#4575B4", "LL" = "#74ADD1", "HL" = "#FC8D59"),name = "Kuadran") +
labs(title = "Moran Scatterplot Map Suara PAN",subtitle = "DKI Jakarta dan Jawa Barat") +
theme_minimal(base_size = 12) +
theme(plot.title = element_text(face = "bold", size = 15), plot.subtitle = element_text(size = 11), legend.title = element_text(face = "bold"),
panel.grid = element_blank())
print(p_kuadran)
# 52. VISUALISASI 6
# PETA LISA
p_lisa <- ggplot(shp_pan) +
geom_sf(aes(fill = cluster), color = "white",linewidth = 0.3) +
scale_fill_manual(values = c("HH Signifikan" = "#D73027", "LH Signifikan" = "#4575B4","LL Signifikan" = "#74ADD1", "HL Signifikan" = "#FC8D59", "Tidak Signifikan" = "#D9D9D9"), name = "Cluster") +
labs(title = "Local Moran's I (LISA) Suara PAN", subtitle = "Cluster dan Outlier Spasial") +
theme_minimal(base_size = 12) +
theme(plot.title = element_text(face = "bold", size = 15), plot.subtitle = element_text(size = 11),
legend.title = element_text(face = "bold"), panel.grid = element_blank())
print(p_lisa)
# 53. VISUALISASI 7
# PETA NILAI LOCAL MORAN'S I
p_local <- ggplot(shp_pan) +
geom_sf(
aes(fill = Local_Moran_I),
color = "white",
linewidth = 0.3
) +
scale_fill_gradient2(
low = "#4575B4",
mid = "white",
high = "#D73027",
midpoint = 0,
name = "Local Moran's I"
) +
labs(
title = "Nilai Local Moran's I Suara PAN",
subtitle = "DKI Jakarta dan Jawa Barat"
) +
theme_minimal(base_size = 12) +
theme(
plot.title = element_text(face = "bold", size = 15),
plot.subtitle = element_text(size = 11),
legend.title = element_text(face = "bold"),
panel.grid = element_blank()
)
print(p_local)
# 54. STATUS SIGNIFIKANSI LISA
shp_pan$status_lisa <- ifelse(shp_pan$p_value < 0.05, "Signifikan", "Tidak Signifikan")
# PETA SIGNIFIKANSI LISA
p_signifikan <- ggplot(shp_pan) +
geom_sf(
aes(fill = status_lisa),
color = "white",
linewidth = 0.3
) +
scale_fill_manual(
values = c(
"Signifikan" = "#D73027",
"Tidak Signifikan" = "#D9D9D9"
),
name = "Status"
) +
labs(
title = "Signifikansi Local Moran's I",
subtitle = "DKI Jakarta dan Jawa Barat"
) +
theme_minimal(base_size = 12) +
theme(
plot.title = element_text(face = "bold", size = 15),
plot.subtitle = element_text(size = 11),
legend.title = element_text(face = "bold"),
panel.grid = element_blank()
)
print(p_signifikan)
# 56. VISUALISASI 9
# PETA SUARA PAN DENGAN LABEL
p_label <- ggplot(shp_pan) +
geom_sf(
aes(fill = suara_pan),
color = "white",
linewidth = 0.3
) +
geom_sf_text(
aes(label = WADMKK),
size = 2
) +
scale_fill_gradient(
low = "#E3F2FD",
high = "#0D47A1",
name = "Suara PAN"
) +
labs(
title = "Perolehan Suara PAN per Kabupaten/Kota",
subtitle = "DKI Jakarta dan Jawa Barat"
) +
theme_minimal(base_size = 12) +
theme(
plot.title = element_text(face = "bold", size = 15),
plot.subtitle = element_text(size = 11),
legend.title = element_text(face = "bold"),
panel.grid = element_blank()
)
print(p_label)
## Warning in st_point_on_surface.sfc(sf::st_zm(x)): st_point_on_surface may not
## give correct results for longitude/latitude data
# 57. RINGKASAN AKHIR
cat("\n============================================\n")
##
## ============================================
cat("RINGKASAN ANALISIS SPASIAL PAN\n")
## RINGKASAN ANALISIS SPASIAL PAN
cat("============================================\n")
## ============================================
cat("Jumlah wilayah :",n,"\n")
## Jumlah wilayah : 31
cat("Total suara PAN :",sum(y),"\n")
## Total suara PAN : 5964384
cat("Queen nonzero links :",jumlah_nonzero_links,"\n")
## Queen nonzero links : 128
cat("Pasangan hubungan unik :",jumlah_pasangan_unik,"\n")
## Pasangan hubungan unik : 64
cat("S0 :",S0,"\n")
## S0 : 128
cat("Pembilang :",pembilang, "\n")
## Pembilang : 269434758621
cat("Penyebut :",penyebut, "\n")
## Penyebut : 522836865586
cat("Moran's I W* :",MI,"\n")
## Moran's I W* : 0.1248071
cat("Moran's I W standardized :",I_value,"\n")
## Moran's I W standardized : 0.08588489
cat("Expected Moran's I :",E_value,"\n")
## Expected Moran's I : -0.03333333
cat("Variance :",Var_value,"\n")
## Variance : 0.01620326
cat("Z hitung :",Z_value,"\n")
## Z hitung : 0.9365726
cat("Z kritis :",Z_kritis,"\n")
## Z kritis : 1.644854
cat("p-value :",p_value,"\n")
## p-value : 0.1744892
cat("============================================\n")
## ============================================
write.csv(pan, "data_suara_PAN.csv", row.names = FALSE)
write.csv(jumlah_tetangga, "jumlah_tetangga_PAN.csv", row.names = FALSE)
write.csv(tabel_z,"standardisasi_PAN.csv",row.names = FALSE)
write.csv(tabel_lag, "moran_scatterplot_PAN.csv",row.names = FALSE)
write.csv(hasil_moran,"hasil_Moran_Global_PAN.csv", row.names = FALSE)
write.csv(hasil_final, "hasil_LISA_PAN.csv",row.names = FALSE)
print(p1)