Kelompok 2
Kelas SD-A1:
Nadila Fitri Noviardhana (164221006)
Sinta Dian Monica (164221018)
Ditha Meiga Zakaria (164221019)
Amalika Ari Anindya (164221029)
Aura Najma Kustiananda (164221053)
Data yang kami gunakan didapatkan dari Open Data Jabar dengan link sebagai berikut:
library(readxl)
setwd("D:/SEMESTER 4/Analisis Data Spasial")
data <- read_excel('spasssial.xlsx')
data
library(spdep)
library(rgdax)
library(raster)
library(sf)
setwd("D:/SEMESTER 4/Analisis Data Spasial/Jawa Barat")
peta <- st_read(dsn = ".", layer = "Jawa_Barat_ADMIN_BPS")
## Reading layer `Jawa_Barat_ADMIN_BPS' from data source
## `D:\SEMESTER 4\Analisis Data Spasial\Jawa Barat' using driver `ESRI Shapefile'
## Simple feature collection with 28 features and 6 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: 106.3703 ymin: -7.820979 xmax: 108.8469 ymax: -5.918148
## Geodetic CRS: WGS 84
peta$Kabupaten
## [1] "Bandung" "Bandung Barat" "Bekasi" "Bogor"
## [5] "Ciamis" "Cianjur" "Cirebon" "Garut"
## [9] "Indramayu" "Karawang" "Kota Bandung" "Kota Banjar"
## [13] "Kota Bekasi" "Kota Bogor" "Kota Cimahi" "Kota Cirebon"
## [17] "Kota Depok" "Kota Sukabumi" "Kota Tasikmalaya" "Kuningan"
## [21] "Majalengka" "Pangandaran" "Purwakarta" "Subang"
## [25] "Sukabumi" "Sumedang" "Tasikmalaya" "Waduk Cirata"
peta<- subset(peta, Kabupaten != "Waduk Cirata")
peta$Kabupaten
## [1] "Bandung" "Bandung Barat" "Bekasi" "Bogor"
## [5] "Ciamis" "Cianjur" "Cirebon" "Garut"
## [9] "Indramayu" "Karawang" "Kota Bandung" "Kota Banjar"
## [13] "Kota Bekasi" "Kota Bogor" "Kota Cimahi" "Kota Cirebon"
## [17] "Kota Depok" "Kota Sukabumi" "Kota Tasikmalaya" "Kuningan"
## [21] "Majalengka" "Pangandaran" "Purwakarta" "Subang"
## [25] "Sukabumi" "Sumedang" "Tasikmalaya"
peta
y = data$IPM_2021
x1 = data$harapan_lama_sekolah
x2 = data$persentase_melek_huruf
library(ggplot2)
# Membuat scatterplot dengan dua variabel independen
ggplot(data) +
geom_point(aes(x = x1, y = y), color = "blue", size = 3) +
geom_point(aes(x = x2, y = y), color = "red", size = 3) +
labs(x = "X", y = "Y") +
scale_color_manual(name = "Variable", values = c("blue", "red"), labels = c("X1", "X2"))
k <- 16
colfunc <- colorRampPalette(c("green", "yellow", "red"))
color <- colfunc(k)
peta$harapan_lama_sekolah <- x1
library(ggplot2)
ggplot() +
geom_sf(data = peta, aes(fill = harapan_lama_sekolah)) +
scale_fill_gradientn(colors = color, name = "Angka Harapan Lama Sekolah Tahun 2021") +
labs(title = "Peta Harapan Lama Sekolah (dalam Tahun) Tahun 2021",
subtitle = "Berdasarkan Data Spasial",
caption = "Sumber: Open Data Jabar") +
theme_minimal() +
theme(legend.position = "right",
legend.text = element_text(size = 8),
plot.title = element_text(size = 14, face = "bold"),
plot.subtitle = element_text(size = 12),
plot.caption = element_text(size = 10))
colfunc <- colorRampPalette(c("pink", "purple", "blue"))
color <- colfunc(k)
peta$persentase_melek_huruf <- x2
library(ggplot2)
ggplot() +
geom_sf(data = peta, aes(fill = persentase_melek_huruf)) +
scale_fill_gradientn(colors = color, name = "Persentase Melek Huruf") +
labs(title = "Peta Persentase Melek Huruf Pada Tahun 2021",
subtitle = "Berdasarkan Data Spasial",
caption = "Sumber: Open Data Jabar") +
theme_minimal() +
theme(legend.position = "right",
legend.text = element_text(size = 6),
plot.title = element_text(size = 10, face = "bold"),
plot.subtitle = element_text(size = 8),
plot.caption = element_text(size = 6))
library(spdep)
#-----Moran Test-----
w<-poly2nb(peta)
w_matrix <-nb2mat(w, style="B");
coords <- st_coordinates(peta)
plot(peta)
peta_sp <- as(peta, "Spatial")
w <- poly2nb(peta_sp, queen = TRUE) # Using queen contiguity
w_matrix <- nb2mat(w, style = "B")
plot(peta_sp)
plot(w, coordinates(peta_sp), add = TRUE, col = "blue")
text(peta_sp, labels = peta_sp$Kabupaten, cex = 0.5, col = "red")
ww<-nb2listw(w)
moran(x1, ww, n=length(ww$neighbours), S0=Szero(ww))
## $I
## [1] 0.1937557
##
## $K
## [1] 1.824252
moran.test(x1, ww,randomisation=T, alternative="greater")
##
## Moran I test under randomisation
##
## data: x1
## weights: ww
##
## Moran I statistic standard deviate = 1.6317, p-value = 0.05138
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.19375571 -0.03846154 0.02025491
moran.plot(x1, ww, labels=data$nama_kabupaten_kota)
H0: Tidak ada korelasi/asosiasi spasial dalam data harapan lama sekolah di Jawa Barat.
H1: Terdapat korelasi/asosiasi spasial dalam harapan lama sekolah di Jawa Barat.
p-value (0.051) lebih besar dari alpha (0.05), maka GAGAL TOLAK HO. Oleh karena itu, kita menyimpulkan bahwa tidak ada bukti yang signifikan secara statistik untuk adanya pola spasial berkerumun pada data harapan lama sekolah di Jawa Barat.
moran(x2, ww, n=length(ww$neighbours), S0=Szero(ww))
## $I
## [1] 0.4524623
##
## $K
## [1] 5.589169
moran.test(x2, ww,randomisation=T, alternative="greater")
##
## Moran I test under randomisation
##
## data: x2
## weights: ww
##
## Moran I statistic standard deviate = 3.7553, p-value = 8.658e-05
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.45246234 -0.03846154 0.01709022
moran.plot(x2, ww, labels=data$nama_kabupaten_kota)
H0: Tidak ada korelasi/asosiasi spasial dalam data persentase melek huruf di Jawa Barat.
H1: Terdapat korelasi/asosiasi spasial dalam data persentase melek huruf Jawa Barat.
Karena nilai p sebesar 8.658e-05 lebih kecil dari alpha (0.05), maka TOLAK HO. Oleh karena itu, kita menyimpulkan bahwa terdapat bukti yang signifikan secara statistik untuk adanya pola spasial berkerumun pada data persentase melek huruf di Jawa Barat.
reg.klasik = lm(y ~ x1+x2, data=data)
err.regklasik<-residuals(reg.klasik)
summary(reg.klasik)
##
## Call:
## lm(formula = y ~ x1 + x2, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -8.0798 -1.5278 0.3696 1.6723 3.7516
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 20.6884 35.5078 0.583 0.566
## x1 5.1874 0.7546 6.875 4.14e-07 ***
## x2 -0.1543 0.3922 -0.393 0.697
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.726 on 24 degrees of freedom
## Multiple R-squared: 0.7, Adjusted R-squared: 0.675
## F-statistic: 28 on 2 and 24 DF, p-value: 5.321e-07
Koefisien untuk variabel x1 signifikan secara statistik, karena p-value (4.14e-07) < alpha (0.05)
Koefisien untuk variabel x2 tidak signifikan secara statistik, karena p-value (0.697) > alpha (0.05)
R-squared sebesar 0.7 berarti regresi ini dapat menjelaskan 70 persen data
library(nortest)
library(car)
## Loading required package: carData
library(DescTools)
##
## Attaching package: 'DescTools'
## The following object is masked from 'package:car':
##
## Recode
library(lmtest)
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
##
## Attaching package: 'lmtest'
## The following object is masked from 'package:RCurl':
##
## reset
hist(err.regklasik)
qqnorm(err.regklasik,datax=T)
qqline(rnorm(length(err.regklasik),mean(err.regklasik),sd(err.regklasik)),datax=T, col="red")
ad.test(err.regklasik)
##
## Anderson-Darling normality test
##
## data: err.regklasik
## A = 0.50163, p-value = 0.1894
H0: Eror berdistribusi normal
H1: Eror tidak berdistribusi normal
p-value(0.1894) > alpha(0.05), jadi GAGAL TOLAK HO
bptest(reg.klasik)
##
## studentized Breusch-Pagan test
##
## data: reg.klasik
## BP = 4.7403, df = 2, p-value = 0.09347
H0: ragam galatnya homogen
H1: ragam galatnya tidak homogen
Karena p-value (0.09347) > alpha (0.05), maka GAGAL TOLAK H0
#-----Spatial Autocorrelation-----
w<-poly2nb(peta) #jika Rook --> w<-poly2nb(jabar2,queen=FALSE)
ww<-nb2listw(w)
lm.morantest(reg.klasik, ww, alternative="two.sided")
##
## Global Moran I for regression residuals
##
## data:
## model: lm(formula = y ~ x1 + x2, data = data)
## weights: ww
##
## Moran I statistic standard deviate = 4.0461, p-value = 5.208e-05
## alternative hypothesis: two.sided
## sample estimates:
## Observed Moran I Expectation Variance
## 0.49167688 -0.06613201 0.01900618
H0: Tidak ada spasial autocorrelation dalam residu regresi global Moran I.
H1: Terdapat spasial autocorrelation dalam residu regresi global Moran I.
p-value (5.208e-05) < alpha (0.05), maka hasilnya TOLAK H0
moran.test(err.regklasik, ww,randomisation=F, alternative="two.sided")
##
## Moran I test under normality
##
## data: err.regklasik
## weights: ww
##
## Moran I statistic standard deviate = 3.8016, p-value = 0.0001438
## alternative hypothesis: two.sided
## sample estimates:
## Moran I statistic Expectation Variance
## 0.49167688 -0.03846154 0.01944673
H0: Tidak ada spasial autocorrelation dalam residu regresi Moran I.
H1:Terdapat spasial autocorrelation dalam residu regresi Moran I.
p-value (0.0001438) < alpha (0.05), maka hasilnya TOLAK H0
Selain menggunakan fungsi lm.morantest, uji moran dapat dilakukan menggunakan fungsi moran.test.
Perbedaannya adalah pada fungsi pertama, input yang digunakan adalah objek lm, sedangkan pada fungsi kedua, yang digunakan sebagai input adalah data error/galat model.
# Lagrange Multiplier Test
LM <- lm.RStests(reg.klasik, nb2listw(w, style = "W"),
test = c("LMerr", "LMlag", "RLMerr", "RLMlag", "SARMA"))
summary(LM)
## Rao's score (a.k.a Lagrange multiplier) diagnostics for spatial
## dependence
## data:
## model: lm(formula = y ~ x1 + x2, data = data)
## test weights: nb2listw(w, style = "W")
##
## statistic parameter p.value
## RSerr 10.530476 1 0.001174 **
## RSlag 4.507721 1 0.033742 *
## adjRSerr 6.039462 1 0.013990 *
## adjRSlag 0.016707 1 0.897155
## SARMA 10.547183 2 0.005125 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
RSerr (Residual score): Nilai p-value lebih rendah dari alpha, maka TOLAK H0 atau terdapat autokorelasi spasial positif pada residual model.
RSlag (Lag score): Nilai p-value lebih rendah dari alpha, maka TOLAK H0 atau terdapat autokorelasi spasial positif pada lag.
adjRSerr (Adjusted residual score): Nilai p-value lebih rendah dari alpha, maka TOLAK H0 atau terdapat autokorelasi spasial pada residual model.
adjRSlag (Adjusted lag score): Nilai p-value lebih tinggi dari alpha, maka TOLAK H0 atau tidak terdapat autokorelasi spasial pada lag.
SARMA (Spatial autocorrelation regression model): Nilai p-value lebih besar daripada alpha, maka TOLAK H0 atau terdapat autokorelasi spasial positif dalam model autoregresi spasial.
#-----Model SEM-----
library(spatialreg)
sem<-errorsarlm(y ~ x1+x2, data=data,nb2listw(w))
summary(sem)
##
## Call:errorsarlm(formula = y ~ x1 + x2, data = data, listw = nb2listw(w))
##
## Residuals:
## Min 1Q Median 3Q Max
## -7.16138 -0.88639 0.22542 1.56004 2.89105
##
## Type: error
## Coefficients: (asymptotic standard errors)
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -4.92042 34.49058 -0.1427 0.8866
## x1 4.64482 0.62627 7.4167 1.201e-13
## x2 0.18174 0.37180 0.4888 0.6250
##
## Lambda: 0.45359, LR test value: 6.593, p-value: 0.010238
## Asymptotic standard error: 0.19166
## z-value: 2.3666, p-value: 0.017951
## Wald statistic: 5.6009, p-value: 0.017951
##
## Log likelihood: -60.49889 for error model
## ML residual variance (sigma squared): 4.8855, (sigma: 2.2103)
## Number of observations: 27
## Number of parameters estimated: 5
## AIC: 131, (AIC for lm: 135.59)
H0: Tidak ada autokorelasi (lamda = 0)
H1: Ada autokorelasi (lamda =/ 0)
p-value (0.01) < alpha (0.05), sehingga TOLAK H0. AIC: 131
err.sem<-residuals(sem)
ad.test(err.sem)
##
## Anderson-Darling normality test
##
## data: err.sem
## A = 0.67262, p-value = 0.07024
H0: Eror berdistribusi normal
H1: Eror tidak berdistribusi normal
p-value(0.07) > alpha(0.05), jadi GAGAL TOLAK HO
bptest.Sarlm(sem)
##
## studentized Breusch-Pagan test
##
## data:
## BP = 3.5555, df = 2, p-value = 0.169
H0: ragam galatnya homogen
H1: ragam galatnya tidak homogen
Karena p-value (0.016) > alpha (0.05), maka GAGAL TOLAK H0
moran.test(err.sem, ww, alternative="two.sided")
##
## Moran I test under randomisation
##
## data: err.sem
## weights: ww
##
## Moran I statistic standard deviate = -0.1999, p-value = 0.8416
## alternative hypothesis: two.sided
## sample estimates:
## Moran I statistic Expectation Variance
## -0.06491879 -0.03846154 0.01751731
H0: Tidak ada spasial autocorrelation dalam residu regresi Moran I.
H1: Terdapat spasial autocorrelation dalam residu regresi Moran I.
p-value (0.84) > alpha (0.05), maka hasilnya GAGAL TOLAK H0
sar<-
lagsarlm(y ~ x1+x2, data = data,nb2listw(w))
summary(sar)
##
## Call:lagsarlm(formula = y ~ x1 + x2, data = data, listw = nb2listw(w))
##
## Residuals:
## Min 1Q Median 3Q Max
## -6.630742 -1.086307 -0.061694 1.783811 3.164787
##
## Type: lag
## Coefficients: (asymptotic standard errors)
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -9.76153 28.44853 -0.3431 0.7315
## x1 4.58888 0.61700 7.4375 1.026e-13
## x2 -0.12347 0.31452 -0.3926 0.6946
##
## Rho: 0.49553, LR test value: 7.3279, p-value: 0.0067891
## Asymptotic standard error: 0.13146
## z-value: 3.7695, p-value: 0.00016356
## Wald statistic: 14.209, p-value: 0.00016356
##
## Log likelihood: -60.13143 for lag model
## ML residual variance (sigma squared): 4.6954, (sigma: 2.1669)
## Number of observations: 27
## Number of parameters estimated: 5
## AIC: 130.26, (AIC for lm: 135.59)
## LM test for residual autocorrelation
## test value: 1.4313, p-value: 0.23155
H0: Tidak ada autokorelasi (rho = 0)
H1: Ada autokorelasi (rho =/ 0)
p-value (0.006) < alpha (0.05), sehingga TOLAK H0. AIC: 130.26
err.sar<-residuals(sar)
ad.test(err.sar)
##
## Anderson-Darling normality test
##
## data: err.sar
## A = 0.51168, p-value = 0.1785
H0: Eror berdistribusi normal
H1: Eror tidak berdistribusi normal
p-value(0.17) > alpha(0.05), jadi GAGAL TOLAK HO
bptest.Sarlm(sar)
##
## studentized Breusch-Pagan test
##
## data:
## BP = 2.7391, df = 2, p-value = 0.2542
H0: ragam galatnya homogen
H1: ragam galatnya tidak homogen
Karena p-value (0.25) > alpha (0.05), maka GAGAL TOLAK H0
moran.test(err.sar, ww, alternative="two.sided")
##
## Moran I test under randomisation
##
## data: err.sar
## weights: ww
##
## Moran I statistic standard deviate = 1.2575, p-value = 0.2086
## alternative hypothesis: two.sided
## sample estimates:
## Moran I statistic Expectation Variance
## 0.13098267 -0.03846154 0.01815736
H0: Tidak ada spasial autocorrelation dalam residu regresi Moran I.
H1:Terdapat spasial autocorrelation dalam residu regresi Moran I.
p-value (0.20) > alpha (0.05), maka hasilnya GAGAL TOLAK H0
gsm<-sacsarlm(y ~ x1+x2, data=data,nb2listw(w))
summary(gsm)
##
## Call:sacsarlm(formula = y ~ x1 + x2, data = data, listw = nb2listw(w))
##
## Residuals:
## Min 1Q Median 3Q Max
## -6.97324 -0.84559 -0.11896 1.82365 2.62582
##
## Type: sac
## Coefficients: (asymptotic standard errors)
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -14.968287 31.543768 -0.4745 0.6351
## x1 4.660863 0.612440 7.6103 2.731e-14
## x2 0.036796 0.352910 0.1043 0.9170
##
## Rho: 0.33641
## Asymptotic standard error: 0.19863
## z-value: 1.6937, p-value: 0.090326
## Lambda: 0.25276
## Asymptotic standard error: 0.30572
## z-value: 0.82677, p-value: 0.40837
##
## LR test value: 8.2785, p-value: 0.015935
##
## Log likelihood: -59.65615 for sac model
## ML residual variance (sigma squared): 4.6393, (sigma: 2.1539)
## Number of observations: 27
## Number of parameters estimated: 6
## AIC: 131.31, (AIC for lm: 135.59)
H0: Tidak ada autokorelasi (rho = 0)
H1: Ada autokorelasi (rho =/ 0)
p-value (0.09) > alpha (0.05), sehingga GAGAL TOLAK H0.
H0: Tidak ada autokorelasi (lamda = 0)
H1: Ada autokorelasi (lamda =/ 0)
p-value (0.40) > alpha (0.05), sehingga GAGAL TOLAK H0.
AIC = 131.31
err.gsm<-residuals(gsm)
ad.test(err.gsm)
##
## Anderson-Darling normality test
##
## data: err.gsm
## A = 0.81692, p-value = 0.03017
H0: Eror berdistribusi normal
H1: Eror tidak berdistribusi normal
p-value(0.03) < alpha(0.05), jadi TOLAK HO
bptest.Sarlm(gsm)
##
## studentized Breusch-Pagan test
##
## data:
## BP = 2.8974, df = 2, p-value = 0.2349
H0: ragam galatnya homogen
H1: ragam galatnya tidak homogen
Karena p-value (0.23) > alpha (0.05), maka GAGAL TOLAK H0
moran.test(err.gsm, ww, alternative="two.sided")
##
## Moran I test under randomisation
##
## data: err.gsm
## weights: ww
##
## Moran I statistic standard deviate = 0.035477, p-value = 0.9717
## alternative hypothesis: two.sided
## sample estimates:
## Moran I statistic Expectation Variance
## -0.03376275 -0.03846154 0.01754192
H0: Tidak ada spasial autocorrelation dalam residu regresi Moran I.
H1:Terdapat spasial autocorrelation dalam residu regresi Moran I.
p-value (0.97) > alpha (0.05), maka hasilnya GAGAL TOLAK H0
FitTest <- data.frame(
Pengujian = c("AIC", "p-value dari Rho", "p-value dari Lambda", "p-value Uji Normalitas", "p-value Uji Heteroskedastisitas", "p-value Uji Dependensi Spasial"),
OLS = c(135.59, NA, NA, 0.09347, 0.0005208, 0.0001438),
SEM = c(131, NA, 0.45359, 0.07024, 0.169, 0.8416
),
SAR = c(130.26, 0.49553, NA, 0.1785, 0.2542, 0.2086),
SARMA = c(131.31, 0.33641, 0.25276, 0.03017, 0.2349, 0.9717)
)
FitTest
Model yang terbaik adalah SAR karena AIC-nya paling kecil.
Berdasarkan perhitungan yang telah dilakukan, didapatkan hasil berikut:
Berdasarkan uji dependensi, dengan kepercayaan 95% dapat disimpulkan bahwa:
Tidak ada bukti yang signifikan secara statistik untuk adanya pola spasial berkerumun pada data harapan lama sekolah di Jawa Barat.
Terdapat bukti yang signifikan secara statistik untuk adanya pola spasial berkerumun pada data persentase melek huruf di Jawa Barat.
Berdasarkan analisis regresi spasial dengan model OLS, SEM, SAR, dan SARMA, dengan kepercayaan 95% dapat disimpulkan bahwa:
Sehingga, jika membandingkan ke-4 model tersebut, dapat disimpulkan bahwa model yang terbaik adalah SAR karena memiliki AIC yang paling kecil