UAS REGSPAS
Import Library
## Warning: package 'spdep' was built under R version 4.3.3
## Loading required package: spData
## Warning: package 'spData' was built under R version 4.3.3
## To access larger datasets in this package, install the spDataLarge
## package with: `install.packages('spDataLarge',
## repos='https://nowosad.github.io/drat/', type='source')`
## Loading required package: sf
## Warning: package 'sf' was built under R version 4.3.3
## Linking to GEOS 3.11.2, GDAL 3.8.2, PROJ 9.3.1; sf_use_s2() is TRUE
## Warning: package 'sp' was built under R version 4.3.3
library(sf) # Mengelola data spasial dengan standar Simple Features (sf)
library(readxl) # Membaca file Excel (format .xls dan .xlsx)## Warning: package 'readxl' was built under R version 4.3.2
## Warning: package 'openxlsx' was built under R version 4.3.3
## Warning: package 'corrplot' was built under R version 4.3.2
## corrplot 0.92 loaded
## Warning: package 'DescTools' was built under R version 4.3.3
library(nortest) # Melakukan uji normalitas (Anderson-Darling, Lilliefors, dll)
library(car) # Fungsi regresi linear dan diagnostik model (vif, durbinWatsonTest, dll)## Warning: package 'car' was built under R version 4.3.2
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.3.2
##
## Attaching package: 'car'
## The following object is masked from 'package:DescTools':
##
## Recode
## Warning: package 'spatialreg' was built under R version 4.3.3
## Loading required package: Matrix
##
## Attaching package: 'spatialreg'
## The following objects are masked from 'package:spdep':
##
## get.ClusterOption, get.coresOption, get.mcOption,
## get.VerboseOption, get.ZeroPolicyOption, set.ClusterOption,
## set.coresOption, set.mcOption, set.VerboseOption,
## set.ZeroPolicyOption
## Warning: package 'lmtest' was built under R version 4.3.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.3.2
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
## Warning: package 'dplyr' was built under R version 4.3.2
##
## Attaching package: 'dplyr'
## The following object is masked from 'package:car':
##
## recode
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(RColorBrewer) # Skema palet warna yang dapat digunakan dalam visualisasi
library(ggplot2) # Membuat grafik statistik dengan pendekatan Grammar of Graphics## Warning: package 'ggplot2' was built under R version 4.3.3
Tahap pertama dalam pemodelan regresi spasial adalah mngimport library yang diperlukan dalam analisis
Import Data
Data yang digunakan terdiri dari dua jenis data:
Data Polygon (Peta Pulau Jawa, dengan extension .shp)
Dataframe (Peubah Y dan X yang dilibatkan)
Berikut ini adalah peubah-peubah yang digunakan:
Peubah Y
Peubah X1
Peubah X2
Data Frame
## # A tibble: 6 × 3
## Y X1 X2
## <dbl> <dbl> <dbl>
## 1 5.68 0.684 0.171
## 2 5.95 0.690 0.440
## 3 1.51 0.195 0.308
## 4 0.674 0.204 0.101
## 5 3.62 0.374 0.280
## 6 0.514 0.0962 0.345
## [1] 119 3
Data terdiri dari 119 kabupaten/kota di Pulau Jawa. Peubah yang dilibatkan diantaranya adalah satu peubah respon (Y) dan dua peubah penjelas (X1 dan X2)
Data Peta
## Reading layer `jawa' from data source
## `C:\Users\Admin\Downloads\Adriano Excel Putra\Jawamap' using driver `ESRI Shapefile'
## Simple feature collection with 119 features and 5 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: 105.0998 ymin: -8.78036 xmax: 116.2702 ymax: -5.048857
## Geodetic CRS: WGS 84
## Simple feature collection with 119 features and 5 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: 105.0998 ymin: -8.78036 xmax: 116.2702 ymax: -5.048857
## Geodetic CRS: WGS 84
## First 10 features:
## PROVNO KABKOTNO PROVINSI KABKOT ID2013
## 1 31 01 DKI JAKARTA KEPULAUAN SERIBU 3101
## 2 31 71 DKI JAKARTA JAKARTA SELATAN 3171
## 3 31 72 DKI JAKARTA JAKARTA TIMUR 3172
## 4 31 73 DKI JAKARTA JAKARTA PUSAT 3173
## 5 31 74 DKI JAKARTA JAKARTA BARAT 3174
## 6 31 75 DKI JAKARTA JAKARTA UTARA 3175
## 7 32 01 JAWA BARAT BOGOR 3201
## 8 32 02 JAWA BARAT SUKABUMI 3202
## 9 32 03 JAWA BARAT CIANJUR 3203
## 10 32 04 JAWA BARAT BANDUNG 3204
## geometry
## 1 MULTIPOLYGON (((106.3842 -5...
## 2 MULTIPOLYGON (((106.8491 -6...
## 3 MULTIPOLYGON (((106.9719 -6...
## 4 MULTIPOLYGON (((106.8788 -6...
## 5 MULTIPOLYGON (((106.711 -6....
## 6 MULTIPOLYGON (((106.969 -6....
## 7 MULTIPOLYGON (((106.994 -6....
## 8 MULTIPOLYGON (((106.9652 -6...
## 9 MULTIPOLYGON (((107.2843 -6...
## 10 MULTIPOLYGON (((107.75 -6.8...
Berikut adalah visulaisisa Peta Jawa yang dibagi menjadi 5 Bagian
Eksplorasi Data
Pengecekan Missing Value
## # A tibble: 0 × 3
## # ℹ 3 variables: Y <dbl>, X1 <dbl>, X2 <dbl>
Hasil pengecekan missing value menunjukkan bahwa tidak ada missing value pada data
Ringkasan Statistik Deskrpitif
## Y X1 X2
## Min. : 0.5135 Min. :0.01925 Min. :0.004079
## 1st Qu.: 3.4436 1st Qu.:0.26193 1st Qu.:0.241331
## Median : 5.2935 Median :0.51078 Median :0.451687
## Mean : 5.4175 Mean :0.51291 Mean :0.480641
## 3rd Qu.: 7.3440 3rd Qu.:0.78740 3rd Qu.:0.720443
## Max. :11.0567 Max. :0.99968 Max. :0.997271
# Menunjukkan kab/kota dengan Y tertinggi
kab_max <- data %>%
arrange(desc(Y)) %>%
slice(1)
print(paste("Kabupaten/kota dengan Y tertinggi adalah", kab_max$Y))## [1] "Kabupaten/kota dengan Y tertinggi adalah 11.0566924649"
Boxplot
par(mfrow=c(1,3))
boxplot(data$Y,main = "Sebaran Y", col="dodgerblue")
boxplot(data$X1,main = "Sebaran X1", col="dodgerblue")
boxplot(data$X2,main = "Sebaran X2", col="dodgerblue")Berdasarkan Boxplot dari peubah respon dan peubah penjelas diatas diketahui bahwa tidak terdapat pencilan pada data.
Scatter plot
Berdasarkan scatter plot di atas, tampak adanya pola hubungan linear positif antara peubah X1 maupun X2 terhadap peubah Y, dengan X1 tampak memiliki hubungan yang lebih kuat. Selain itu, tampak juga bahwa antar peubah penjelas tidak memiliki hubungan karena tidak memiliki pola tertentu.
Corplot
Peubah X1 dan X2 berkorelasi positif dengan Y dengan peubah X1 memiliki korelasi yang lebih tinggi daripada X2 . Hal ini menginidkasikan bahwa Korelasi X1 dan Peubah Y terindikasi kuat, sedangkan X2 lemah. Peubah X1 dan X2 juga tidak memiliki korelasi sehingga dapat mengindikasikan bahwa tidak ada multikoliniearitas.
Uji Korelasi Antar Peubah
Ho: Tidak terdapat korelasi antara peubah Y dan X1
H1: Ada korelasi antara peubah Y dan X1
Keputusan: Tolak Ho jika p-value < alpha=0.05
##
## Pearson's product-moment correlation
##
## data: data$Y and data$X1
## t = 16.598, df = 117, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.7746143 0.8844228
## sample estimates:
## cor
## 0.8377981
##
## Pearson's product-moment correlation
##
## data: data$Y and data$X2
## t = 2.8594, df = 117, p-value = 0.005027
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.07922337 0.41641402
## sample estimates:
## cor
## 0.2555745
Dari Kedua uji , dapat dikatakan p-valuenya lebih kecil dari 0.05. Hal ini mengindiaksikan Tolak H-0 , artinya terdapat korelasi antar peubah X1, X2 terhadap Y secara parsial.
Sebaran Spasial Data
Sebaran Spasial Y
k=102
colfunc <- colorRampPalette(c("green", "yellow","red"))
peta$Y <- data$Y
# Plot menggunakan ggplot2
ggplot(peta) +
geom_sf(aes(fill = Y)) +
scale_fill_gradientn(colors = colfunc(k)) +
labs(title = "Peta Sebaran Spasial Peubah Respon Y") +
theme_minimal()Dari Plot Sebaran Spasial Data, ada kecenderungan bahwa ada pola pengerombolan pada Peubah Y. Hal ini dapat diliahat dari warna gradasi yang cenderung mengelompok ( Hijau ke kkuningan) disekitar Jawa Tengah ke Jawa Timar. Hal ini bisa mengnindikasikan adanya autokorelasi positif pada data.
Sebaran Spasial X2
peta$X2<- data$X2
# Plot menggunakan ggplot2
ggplot(peta) +
geom_sf(aes(fill = X2)) +
scale_fill_gradientn(colors = colfunc(k)) +
labs(title = "Sebaran Spasial Peubah Penjelas X2") +
theme_minimal()Hal yang menarik dapat dilihat pada peubah X1 dimana ada beberapa daerah yang cenderung kontras perbedaanya seperti di Jawa Tengah yang dimana ada beberapa daerah yang terindikasi sebagai Hot-Spot dimana daerahnya memiliki nilai yang lebih tinggi dibandingkan dengan derah yang lain.
Pembentukan Matrix Pembobot Spasial
Dari Visualisasi, Dapat Dilihat Bahwa Terdapat Daerah yang tidak memilli Tetangga, Hal ini mengindikasikan bahwa Matrix Pembobot dengan pendekatan ketetanggan kurang cocok dalam analisis data ini. Namun untuk perbandingan, Kedua Matrix tetangga tetap dimasukkan ( Rook dan Queen Conquinitiy).
Queen Conquinity
# Memvalidasi geometri dalam objek sf
peta <- st_make_valid(peta)
# Konversi objek sf ke objek sp
sp.peta <- as(peta, "Spatial")
# Mengakses slot polygons dari objek sp
sp.polygons <- SpatialPolygons(sp.peta@polygons)
queen <- poly2nb(sp.peta, queen = T)## Warning in poly2nb(sp.peta, queen = T): some observations have no neighbours;
## if this seems unexpected, try increasing the snap argument.
## Warning in poly2nb(sp.peta, queen = T): neighbour object has 3 sub-graphs;
## if this sub-graph count seems unexpected, try increasing the snap argument.
W.queen <- nb2listw(queen, style='W',zero.policy=TRUE)
qc = moran.test(data$Y, W.queen,randomisation=T,
alternative="greater", zero.policy = TRUE)
qc##
## Moran I test under randomisation
##
## data: data$Y
## weights: W.queen
## n reduced by no-neighbour observations
##
## Moran I statistic standard deviate = 1.2013, p-value = 0.1148
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.073056069 -0.008547009 0.004614014
Indeks Moran tidak Singifikan pada Taraf nyata 5%. Hal ini mengindikasikan bahwa tidak terdapat autkorelasi spasial dalam penggunaan matrix pembobot Queen
Rook Conquinity
## Warning in poly2nb(sp.peta, queen = F): some observations have no neighbours;
## if this seems unexpected, try increasing the snap argument.
## Warning in poly2nb(sp.peta, queen = F): neighbour object has 3 sub-graphs;
## if this sub-graph count seems unexpected, try increasing the snap argument.
W.rook <- nb2listw(rook, style='W',zero.policy=TRUE)
rc = moran.test(data$Y, W.rook,randomisation=T,
alternative="greater", zero.policy = TRUE)
rc##
## Moran I test under randomisation
##
## data: data$Y
## weights: W.rook
## n reduced by no-neighbour observations
##
## Moran I statistic standard deviate = 1.0827, p-value = 0.1395
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.065154200 -0.008547009 0.004633723
Indeks Moran tidak Singifikan pada Taraf nyata 5%. Hal ini mengindikasikan bahwa tidak terdapat autkorelasi spasial dalam penggunaan matrix pembobot Rook.
Matrix Pembobot Jarak
Sebelum Menentukan matrix yang digunakan terlebih dahulu ditentukan jarak yang akan digunakan dalam pembentukan Matrix ini.Pada Kasus ini jarak matrix akan dihitung sebagai centroid dan digunakan metode jarak Euclidean. dalam pembentukan jaraknya.
## Warning: st_centroid assumes attributes are constant over geometries
# Ekstrak koordinat centroid
longlat <- st_coordinates(centroids)
# Tambahkan koordinat long dan lat ke objek peta
peta$long <- longlat[, 1] # Kolom X (long)
peta$lat <- longlat[, 2] # Kolom Y (lat
coords <- peta[c("long","lat")]
#class(coords)
koord <- as.data.frame(coords)
jarak<-dist(longlat, method = "euclidean")
m.jarak<-as.matrix(jarak)KNN
Matriks bobot k-nearest neighbor menentukan tetangga berdasarkan
sejumlah tetangga terdekat (k) yang dipilih untuk setiap
titik atau wilayah. Pada kali ini saya akan mencoba 2 Tetangga yaitu
dengan 3 dan 5 Tetangga.
KNN 5 Tetangga
W.knn<-knn2nb(knearneigh(longlat,k=5,longlat=TRUE))
W.knn.s <- nb2listw(W.knn,style='W')
MI.knn5 <- moran(data$Y,W.knn.s,n=length(W.knn.s$neighbours),S0=Szero(W.knn.s))
mt1 = moran.test(data$Y,W.knn.s,randomisation = T,alternative = "greater")
mt1##
## Moran I test under randomisation
##
## data: data$Y
## weights: W.knn.s
##
## Moran I statistic standard deviate = 1.6616, p-value = 0.0483
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.080037530 -0.008474576 0.002837664
KNN 3 Tetangga
W.knn<-knn2nb(knearneigh(longlat,k=3,longlat=TRUE))
W.knn.s <- nb2listw(W.knn,style='W')
MI.knn <- moran(data$Y,W.knn.s,n=length(W.knn.s$neighbours),S0=Szero(W.knn.s))
mt1 = moran.test(data$Y,W.knn.s,randomisation = T,alternative = "greater")
mt1##
## Moran I test under randomisation
##
## data: data$Y
## weights: W.knn.s
##
## Moran I statistic standard deviate = 0.68051, p-value = 0.2481
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.038205920 -0.008474576 0.004705478
Indeks moran yang didapat memiliki variasi dari tetangga yang digunakan. Indeks Moran dengan 3 Tetangga tidak signifikan pada taraf nyata 5%. Namun hal ini berbeda dengan Indeks Moran dengan jumlah ketetanggan 5, dimana indeks morannya singinifkan pada taraf nyata 5%. Namun Niali indeks morannya tergolong kecil dan mendekati 0. Sehingga menunjukkan adanya korelasi acak antara peubah di daerahnya.
RDW
Matriks bobot radial distance mendefinisikan tetangga berdasarkan jarak geografis. Setiap titik atau wilayah dianggap sebagai tetangga jika jaraknya dari titik/wilayah pusat berada dalam jarak radius tertentu. Pada dasarnya Matrix RDW ( Radial Distance) ini aka mengelompokan ketetanggan berdasarkan suatu jarak yang telah ditentukan sebelumnya. Karena Pada kali ini jarak yang ditentukan adalah 100 km.
## Warning in dnearneigh(longlat, 0, 65, longlat = TRUE): neighbour object has 2
## sub-graphs
W.rdw.s <- nb2listw(W.rdw,style='W',zero.policy=TRUE)
MI.rdw <- moran(data$Y,W.rdw.s,n=length(W.rdw.s$neighbours),S0=Szero(W.rdw.s))
mt2 = moran.test(data$Y,W.rdw.s,randomisation = T,alternative = "greater")
mt2##
## Moran I test under randomisation
##
## data: data$Y
## weights: W.rdw.s
## n reduced by no-neighbour observations
##
## Moran I statistic standard deviate = 1.8134, p-value = 0.03489
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.073472037 -0.008547009 0.002045766
Didapatkan dengan RDW, Indeks Morannya signifikan pada taraf nyata 5%. Sehingga dapat dikatakan ada autokorelasi spasial pada data.
IDW ( Inverse Distance Weight)
Matriks pembobot Inverse Distance Weight (IDW) menentukan bobot berdasarkan kebalikan dari jarak antar titik atau wilayah. Konsepnya seperti suara, semakin dekat semakin besar, Semakin dekat dua titik, semakin besar bobot yang diberikan. Pada IDW sendiri ada ada indikator yang disebut alpha yang mengatur seberapa cepat suatu bobot akan berubah nilainya menjadi lebih kecil atau lebih besar, pada kali ini akan diatur 2 bobot yaitu alpha 1 dan alpha 2. ( Misa indikator disini kita sebut alpha).
IDW Alpha 1
alpha1=1
W.idw <-1/(m.jarak^alpha1)
diag(W.idw)<-0
rtot<-rowSums(W.idw,na.rm=TRUE)
W.idw.sd<-W.idw/rtot #row-normalized
W.idw.s = mat2listw(W.idw.sd,style='W')
MI.idw <- moran(data$Y,W.idw.s,n=length(W.idw.s$neighbours),S0=Szero(W.idw.s))
mt3 = moran.test(data$Y,W.idw.s,randomisation = T,alternative = "greater")
mt3##
## Moran I test under randomisation
##
## data: data$Y
## weights: W.idw.s
##
## Moran I statistic standard deviate = 1.9816, p-value = 0.02376
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.0325361575 -0.0084745763 0.0004283172
DIdapatkan p-value yang lebih kecil dari 0,05, hal ini mengindikasikan tolak H-0 yang artinya pada taraf 5%, terdapat autokorelasi spasial pada peubah y dengan metode IDW Alpha 1.
IDW Alpha 2
alpha2=2
W.idw2<-1/(m.jarak^alpha2)
diag(W.idw2)<-0
rtot<-rowSums(W.idw2,na.rm=TRUE)
W.idw2.sd<-W.idw2/rtot #row-normalized
W.idw2.s = mat2listw(W.idw2.sd,style='W')
MI.idw2 <- moran(data$Y,W.idw2.s,n=length(W.idw2.s$neighbours),S0=Szero(W.idw2.s))
mt4 = moran.test(data$Y,W.idw2.s,randomisation = T,alternative = "greater")
mt4##
## Moran I test under randomisation
##
## data: data$Y
## weights: W.idw2.s
##
## Moran I statistic standard deviate = 1.999, p-value = 0.02281
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.090355206 -0.008474576 0.002444346
DIdapatkan p-value yang lebih kecil dari 0,05, hal ini mengindikasikan tolak H-0 yang artinya pada taraf 5%, terdapat autokorelasi spasial pada peubah y dengan metode IDW Alpha 1. Disini hal yang menarik adalah indeks morannya yang semakin besar di penambahan alpha.
EDW ( Exponential Distance Weight)
Matriks exponential distance weight memberikan bobot yang menurun secara eksponensial seiring dengan peningkatan jarak antar unit spasial. Ini mirip dengan inverse distance weight, tetapi penurunan bobot terhadap jarak lebih tajam karena mengikuti sebaran eksponesnial yang seetiap berubah satu titik semakin tajam juga perubahannya.
EDW Alpha 1
alpha=1
W.edw<-exp((-alpha)*m.jarak)
diag(W.edw)<-0
rtot<-rowSums(W.edw,na.rm=TRUE)
W.edw.sd<-W.edw/rtot #row-normalized
W.edw.s = mat2listw(W.edw.sd,style='W')
MI.edw <- moran(data$Y,W.edw.s,n=length(W.edw.s$neighbours),S0=Szero(W.edw.s))
mt5 = moran.test(data$Y,W.edw.s,randomisation = T,alternative = "greater")
mt5##
## Moran I test under randomisation
##
## data: data$Y
## weights: W.edw.s
##
## Moran I statistic standard deviate = 1.5475, p-value = 0.06087
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.0133757825 -0.0084745763 0.0001993578
Didapatkan Indeks Morannya tidak singikan pada taraf 5%.
EDW Alpha 2
alpha2=2
W.edw2<-exp((-alpha2)*m.jarak)
diag(W.edw2)<-0
rtot<-rowSums(W.edw2,na.rm=TRUE)
W.edw2.sd<-W.edw2/rtot #row-normalized
W.edw2.s = mat2listw(W.edw2.sd,style='W')
MI.edw2 <- moran(data$Y,W.edw2.s,n=length(W.edw2.s$neighbours),S0=Szero(W.edw2.s))
mt6 = moran.test(data$Y,W.edw2.s,randomisation = T,alternative = "greater")
mt6##
## Moran I test under randomisation
##
## data: data$Y
## weights: W.edw2.s
##
## Moran I statistic standard deviate = 1.7002, p-value = 0.04455
## alternative hypothesis: greater
## sample estimates:
## Moran I statistic Expectation Variance
## 0.0290258598 -0.0084745763 0.0004864974
Didapatkan Indeks Morannya signifikan pada taraf 5%.
Evaluasi Matrix Pembobot
Di tahap ini yang dimasukkan hanya KNN dengan 5 tetangganya saja karrena dengan 3 Tetangga tidak signifikan.
MatriksBobot <- c("K-Nearest Neighbor (k=5)",
"Radial Distance Weight (dmax=60)",
"Invers Distance Weight (alpha=1)",
"Invers Distance Weight (alpha=2)",
"Exponential Distance Weight (alpha=1)",
"Exponential Distance Weight (alpha=2)",
"Rook Contiguity",
"Queen Contiguity")
IndeksMoran <- c(MI.knn5$I,MI.rdw$I,MI.idw$I,MI.idw2$I,MI.edw$I,MI.edw2$I,rc$estimate[1],qc$estimate[1])
pv = c(mt1$p.value,mt2$p.value,mt3$p.value,mt4$p.value,mt5$p.value,mt6$p.value,rc$p.value,qc$p.value)
Matriks = cbind.data.frame(MatriksBobot, IndeksMoran,"p-value"=pv)
colnames(Matriks) <-c("Matriks Bobot", "Indeks Moran", "p-value")
Matriks## Matriks Bobot Indeks Moran p-value
## 1 K-Nearest Neighbor (k=5) 0.08003753 0.24809124
## 2 Radial Distance Weight (dmax=60) 0.07409468 0.03488730
## 3 Invers Distance Weight (alpha=1) 0.03253616 0.02376233
## 4 Invers Distance Weight (alpha=2) 0.09035521 0.02280574
## 5 Exponential Distance Weight (alpha=1) 0.01337578 0.06086652
## 6 Exponential Distance Weight (alpha=2) 0.02902586 0.04454811
## 7 Rook Contiguity 0.06515420 0.13947001
## 8 Queen Contiguity 0.07305607 0.11480906
Didapatkan dari 8 Model Matrix Pembobot Spasial, Terdapat variasi dari p-value. Dimana ada beberapa matrix pembobot yang menunjukkan tidak ada autokorelasi spasial, dan ada beberapa pula yang menunjukkan adanya korelasi spasial. Untuk itu akan difilter yang memiliki p-value < 0.05
## Matriks Bobot Indeks Moran p-value
## 2 Radial Distance Weight (dmax=60) 0.07409468 0.03488730
## 3 Invers Distance Weight (alpha=1) 0.03253616 0.02376233
## 4 Invers Distance Weight (alpha=2) 0.09035521 0.02280574
## 6 Exponential Distance Weight (alpha=2) 0.02902586 0.04454811
Didapat 5 Matrix Pembobot yang signifikan. Untuk itu akan dpilih berdasarkan Matrix pembobt yang memiliki Nilai Indeks Moran tertinggi. Disini ada 2 calon matrix pembobot yang nilainya paling tinggi dibandingkan matrix pembobt lainnya yaitu KNn dan IDW. Untuk Itu selanjutnya Pemodelan akan memakai Matrix IDW dengan Alpha (2).
Pemodelan Regresi
Regresi OLS
Pemodelan yang akan dilakukan pertama kali adalah pemodelan OLS, dimana Kita akan memodelkan peubah yang ada dengan pendekataan MKT.
##
## Call:
## lm(formula = Y ~ X1 + X2, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.78980 -0.79573 0.00662 0.78422 2.43897
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.04566 0.27560 -0.166 0.869
## X1 7.66908 0.34146 22.460 < 2e-16 ***
## X2 3.18246 0.35171 9.049 4.01e-15 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.097 on 116 degrees of freedom
## Multiple R-squared: 0.8253, Adjusted R-squared: 0.8222
## F-statistic: 273.9 on 2 and 116 DF, p-value: < 2.2e-16
## [1] 364.6135
Dari Pemodelan dapat diambil beberapa kesimpulan:
Model memiliki adjusted R-Squared yang tinggi yaitu 0.8222 , Hal ini menandkan bahwa Model Regresi Linier berganda mampu dengan baik menjelaskan keragaman Y oleh variabel X1 dan X2 nya.
Semua peubah X1 dan X2 signifikan dan memiliki tanda koefisien yang selaras dengan korelasi yang sudah dibentuk
AIC dari Model adalah 364.6135
Uji Diagnostik OLS
Uji Normalitas Sisaan
Pengujian Normalitas akan menggunakan Uji Anderson Darling Test, karena Pada pengujian ini, sifat lokasi akan diperhitungkan sebagai kriteria kenormalan data
H0 : sisaan model menyebar normal H1 : sisaan model tidak menyebar normal
Tolak H0 jika p-value < 0.05
##
## Anderson-Darling normality test
##
## data: err.ols
## A = 0.32445, p-value = 0.5202
Karena p-value > 5%, maka gagal tolak H0. Artinya sisaan menyebar normal.
QQ-Plot
qqnorm(err.ols,datax=T)
qqline(rnorm(length(err.ols),mean(err.ols),sd(err.ols)),datax=T, col="blue")Dapat dilihat bahwa data cenderung menyebar normal karena ssebagian besar data sudah berada digaris Quantil. Terlihat pula ada satu pencilan yang keluar dari garisnya, Namun tidak menyebabkan data menjadi tidak normal.
Uji Kehomogenan Ragam
##
## studentized Breusch-Pagan test
##
## data: ols
## BP = 16.66, df = 2, p-value = 0.0002412
Karena p-value < 0.05, maka gagal tolak H0. Artinya ragam sisaan tidak homogen.
Uji Multikolinearitas
## X1 X2
## 1.012596 1.012596
Didapatkan Bahwa Nilai VIF antar Peubah memiliki niali 1 yang dibawah treshold 5 dan 10. Hal ini menunjukkan bahwa tidak terjadi multikolinearitas antar peubah.
Pengujian Efek Spasial
Uji Indeks Moran
Pengujian autokorelasi spasial menggunakan Indeks Moran yang memerlukan matriks pembobot spasial. Dalam kasus ini, digunakan matriks bobot terbaik yang telah diperoleh sebelumnya, yaitu k-nearest neighbor dengan IDW Alpha 2
H0 : Tidak ada autokorelasi spasial
H1 : Ada autokorelasi spasial
##
## Global Moran I for regression residuals
##
## data:
## model: lm(formula = Y ~ X1 + X2, data = data)
## weights: ww
##
## Moran I statistic standard deviate = 4.1328, p-value = 3.584e-05
## alternative hypothesis: two.sided
## sample estimates:
## Observed Moran I Expectation Variance
## 0.194533435 -0.009058664 0.002426796
Didapatkan Bahwa odel memiliki autokorelasi spasial dibuktian pada indeks morannya yang nyata pada taraf 5%.
err.ols <- residuals(ols)
merr <- moran.test(err.ols, ww,randomisation=T,
alternative="two.sided")
merr##
## Moran I test under randomisation
##
## data: err.ols
## weights: ww
##
## Moran I statistic standard deviate = 4.1105, p-value = 3.948e-05
## alternative hypothesis: two.sided
## sample estimates:
## Moran I statistic Expectation Variance
## 0.194533435 -0.008474576 0.002439118
Dapat dilihat bahwa pada model ( dan sisaanya) terdapat autkorelasi spasial. Hal ini dibuktikan pada Indeks moran yang signifikan dengan nilai yang lebih kecil dari taraf 0.05. Hal ini mengindikasikan bahwa terdapat autokorelasi spasial dan itu berpengaruh nyata terhadap model
Pengujian Hetogenitas Spasial
##
## studentized Breusch-Pagan test
##
## data: ols
## BP = 16.66, df = 2, p-value = 0.0002412
Dapat dikatakan bahwa terdapat heterogenitas spasial disini. Namun dalam penanganannya akan dicobakan terlebih dahulu dengan pemodelan spasial dan dilihat apakah dapat tertangani.
Pemodelan Regresi Spasial
Uji Lagrange Multiplier
model <- lm.LMtests(ols,listw=ww,zero.policy = TRUE, test=c("LMerr","RLMerr","LMlag","RLMlag","SARMA"))## Please update scripts to use lm.RStests in place of lm.LMtests
## Rao's score (a.k.a Lagrange multiplier) diagnostics for spatial
## dependence
## data:
## model: lm(formula = Y ~ X1 + X2, data = data)
## test weights: listw
##
## statistic parameter p.value
## RSerr 14.6817 1 0.0001273 ***
## adjRSerr 5.2525 1 0.0219149 *
## RSlag 12.2624 1 0.0004622 ***
## adjRSlag 2.8332 1 0.0923358 .
## SARMA 17.5149 2 0.0001573 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Didapatkan dari output bahwa semua Pengujian bersifat nyata, Dimana pada Adjs Robust Lag nyata pada taraf 10 %, sedangkan pengujian lainnya nyata pada taraf 5%. Untuk itu akan dilakukan ketiga model Spasial untuk melihat apakah ketiga model tersebut dapat mengatasi autkorelasi spasial dan dependensi spasial yang ada.
SAR ( Spatial Autoregressive )
##
## Call:lagsarlm(formula = Y ~ X1 + X2, data = data, listw = ww)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.865092 -0.758024 0.017451 0.848347 2.396457
##
## Type: lag
## Coefficients: (asymptotic standard errors)
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.36972 0.46220 -2.9635 0.003042
## X1 7.58734 0.32251 23.5262 < 2.2e-16
## X2 3.15235 0.33088 9.5272 < 2.2e-16
##
## Rho: 0.25983, LR test value: 10.56, p-value: 0.0011558
## Asymptotic standard error: 0.075756
## z-value: 3.4299, p-value: 0.00060391
## Wald statistic: 11.764, p-value: 0.00060391
##
## Log likelihood: -173.0269 for lag model
## ML residual variance (sigma squared): 1.0614, (sigma: 1.0302)
## Nagelkerke pseudo-R-squared: 0.84009
## Number of observations: 119
## Number of parameters estimated: 5
## AIC: 356.05, (AIC for lm: 364.61)
## LM test for residual autocorrelation
## test value: 3.2231, p-value: 0.072607
Output di atas memperlihatkan bahwa koefisien Rho pada model SAR signifikan, dengan nilai AIC sebesar 356.05. Selain itu, terlihat pula hasil uji autokorelasi pada sisaan model memperlihatkan nilai p-value sebesar 0.07, artinya tidak terdapat lagi autokorelasi pada sisaan.
Uji asumsi Model SAR
Normalitas
##
## Anderson-Darling normality test
##
## data: err.sar
## A = 0.51059, p-value = 0.1929
Kehomogenan Ragam
##
## studentized Breusch-Pagan test
##
## data:
## BP = 6.6394, df = 2, p-value = 0.03616
Autokorelasi Spasial
##
## Moran I test under randomisation
##
## data: err.sar
## weights: ww
##
## Moran I statistic standard deviate = 1.7711, p-value = 0.07654
## alternative hypothesis: two.sided
## sample estimates:
## Moran I statistic Expectation Variance
## 0.078940701 -0.008474576 0.002435932
Dari ketiga asumsi dapat dikatakan bahwa Normalitas dan Autokorelasi spasial sudah terselesaikan, namun belum untuk heterogenitas,.
SEM ( Spatial Error Model)
##
## Call:errorsarlm(formula = Y ~ X1 + X2, data = data, listw = ww)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.769945 -0.813055 0.045476 0.735133 2.404195
##
## Type: error
## Coefficients: (asymptotic standard errors)
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.11059 0.30356 0.3643 0.7156
## X1 7.50443 0.30676 24.4635 <2e-16
## X2 3.15265 0.32168 9.8007 <2e-16
##
## Lambda: 0.51875, LR test value: 13.281, p-value: 0.00026806
## Asymptotic standard error: 0.11862
## z-value: 4.3734, p-value: 1.2233e-05
## Wald statistic: 19.127, p-value: 1.2233e-05
##
## Log likelihood: -171.6661 for error model
## ML residual variance (sigma squared): 1.0008, (sigma: 1.0004)
## Nagelkerke pseudo-R-squared: 0.84371
## Number of observations: 119
## Number of parameters estimated: 5
## AIC: 353.33, (AIC for lm: 364.61)
Uji Asumsi Model SEM
Normalitas
##
## Anderson-Darling normality test
##
## data: err.sem
## A = 0.42164, p-value = 0.3177
Kehomogenan Ragam
##
## studentized Breusch-Pagan test
##
## data:
## BP = 11.528, df = 2, p-value = 0.003139
##
## Moran I test under randomisation
##
## data: err.sem
## weights: ww
##
## Moran I statistic standard deviate = 0.46766, p-value = 0.64
## alternative hypothesis: two.sided
## sample estimates:
## Moran I statistic Expectation Variance
## 0.014611413 -0.008474576 0.002436894
Pada Model SEM , terdapat 2 asumsi yang terlanggar yaitu kehomogenan ragam dan masih adanya autokorelasi spasial
Model SARMA
##
## Call:
## sacsarlm(formula = Y ~ X1 + X2, data = data, listw = ww, zero.policy = TRUE)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.800523 -0.766824 0.054183 0.737547 2.407304
##
## Type: sac
## Coefficients: (asymptotic standard errors)
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.64223 0.72636 -0.8842 0.3766
## X1 7.60663 0.31765 23.9464 <2e-16
## X2 3.17940 0.32507 9.7808 <2e-16
##
## Rho: 0.12466
## Asymptotic standard error: 0.11644
## z-value: 1.0705, p-value: 0.28437
## Lambda: 0.38561
## Asymptotic standard error: 0.16813
## z-value: 2.2934, p-value: 0.021823
##
## LR test value: 14.146, p-value: 0.0008476
##
## Log likelihood: -171.2337 for sac model
## ML residual variance (sigma squared): 1.0135, (sigma: 1.0067)
## Number of observations: 119
## Number of parameters estimated: 6
## AIC: 354.47, (AIC for lm: 364.61)
##
## Anderson-Darling normality test
##
## data: err.SARMA
## A = 0.41745, p-value = 0.3251
##
## studentized Breusch-Pagan test
##
## data:
## BP = 9.5116, df = 2, p-value = 0.008602
##
## Moran I test under randomisation
##
## data: err.SARMA
## weights: ww
##
## Moran I statistic standard deviate = 0.29006, p-value = 0.7718
## alternative hypothesis: two.sided
## sample estimates:
## Moran I statistic Expectation Variance
## 0.005842557 -0.008474576 0.002436318
Asumsi yang sama terjadi pada Model SARMA , yang sejalan dengan Model SAR dimana masih terdepat heterogenitas spasial yang terjadi.
Model SDM
##
## Call:lagsarlm(formula = Y ~ X1 + X2, data = data, listw = ww, type = "mixed",
## zero.policy = TRUE)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.811812 -0.779087 0.025882 0.758124 2.401374
##
## Type: mixed
## Coefficients: (asymptotic standard errors)
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.61366 0.63752 -0.9626 0.33576
## X1 7.55991 0.31174 24.2507 < 2e-16
## X2 3.16786 0.32198 9.8387 < 2e-16
## lag.X1 -2.85557 1.28718 -2.2185 0.02652
## lag.X2 -1.13669 0.94816 -1.1988 0.23059
##
## Rho: 0.49368, LR test value: 11.698, p-value: 0.00062577
## Asymptotic standard error: 0.12119
## z-value: 4.0735, p-value: 4.6318e-05
## Wald statistic: 16.593, p-value: 4.6318e-05
##
## Log likelihood: -171.0136 for mixed model
## ML residual variance (sigma squared): 0.99474, (sigma: 0.99737)
## Number of observations: 119
## Number of parameters estimated: 7
## AIC: 356.03, (AIC for lm: 365.72)
## LM test for residual autocorrelation
## test value: 0.17282, p-value: 0.67762
##
## studentized Breusch-Pagan test
##
## data:
## BP = 14.009, df = 4, p-value = 0.007268
Goodnes of Fit
Dari Kelima Model terdapat beberapa model yang sudah memenuhi asumsi autokorelasinya dimana ada beberapa calon kandidat model yang sudah tidak terdapat lagi autokorelasi spasial pada modelnya.
df2 <- data.frame("Model" = c("OLS (Regresi KlasiK)","SAR","SEM","SARMA", "SDM"),
"AIC" = c(AIC(ols),AIC(sar), AIC(sem),AIC(SARMA), AIC(sdm)),
"Normalitas" = c(ad.test(err.ols)$p.value, ad.test(err.sar)$p.value, ad.test(err.sem)$p.value, ad.test(err.SARMA)$p.value, ad.test(err.SARMA)$p.value),
"Heterogenitas" = c(lmtest::bptest(ols)$p.value, bptest.Sarlm(sar)$p.value, bptest.Sarlm(sem)$p.value, bptest.Sarlm(SARMA)$p.value, bptest.Sarlm(sdm)$p.value),
"Autokorelasi Spasial" = c(moran.test(err.ols, ww, alternative="two.sided")$p.value, moran.test(err.sar, ww, alternative="two.sided")$p.value, moran.test(err.sem, ww, alternative="two.sided")$p.value, moran.test(err.SARMA, ww, alternative="two.sided")$p.value, moran.test(err.SARMA, ww, alternative="two.sided")$p.value))
df2## Model AIC Normalitas Heterogenitas Autokorelasi.Spasial
## 1 OLS (Regresi KlasiK) 364.6135 0.5202404 0.0002411682 3.947689e-05
## 2 SAR 356.0538 0.1928857 0.0361627962 7.653613e-02
## 3 SEM 353.3322 0.3176869 0.0031389239 6.400278e-01
## 4 SARMA 354.4673 0.3250679 0.0086017569 7.717697e-01
## 5 SDM 356.0272 0.3250679 0.0072675707 7.717697e-01
Berdasarkan output diatas, Dari Kriteria AIC sendiri Model yang menjadi model Terbaik adalah MODEL SEM. Namun bila diperhatikan, Kelima model ini masih tidak memenuhi asumsi Kehomogenan Ragam. Hal ini mengindikasikan bahwa masih terdapat heterogenitas spasial pada data yang ada. Namun pada Penerapan Model Dependensi, bila asumsi ini dianggap setara untuk semua model, Pilihan Model terbaik akan tetap pada SEM karena Normalitas dan Autkorelasi yang sudah terpenuh, dibuktikan sudah tidak adalagi autkorelasi spasial pada sisaaan. Perlu diperhatikan bahwa hetoregenitas perlu diatas dengan beberapa cara dan tidak boleh diabaikan, namun untuk saat ini, Model pilihannya adalah SEM.
Kesimpulan dan Interpretasi
Model SEM sendiri adalah ( Spatial Error Model) yang artinya memodelkan galat spasial. Hal ini berimplikasi bahwa tidak ada efek Spill over atauapun Umpan Balik karena yang dimodelkan pada konteks ini adalah Errornya.
##
## Call:errorsarlm(formula = Y ~ X1 + X2, data = data, listw = ww)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.769945 -0.813055 0.045476 0.735133 2.404195
##
## Type: error
## Coefficients: (asymptotic standard errors)
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.11059 0.30356 0.3643 0.7156
## X1 7.50443 0.30676 24.4635 <2e-16
## X2 3.15265 0.32168 9.8007 <2e-16
##
## Lambda: 0.51875, LR test value: 13.281, p-value: 0.00026806
## Asymptotic standard error: 0.11862
## z-value: 4.3734, p-value: 1.2233e-05
## Wald statistic: 19.127, p-value: 1.2233e-05
##
## Log likelihood: -171.6661 for error model
## ML residual variance (sigma squared): 1.0008, (sigma: 1.0004)
## Nagelkerke pseudo-R-squared: 0.84371
## Number of observations: 119
## Number of parameters estimated: 5
## AIC: 353.33, (AIC for lm: 364.61)
Interptasi Model :
Model Tersebut memiliki Pseudo R-Squared : 74% yang lebih kecil dari OLS namun telah mengatasi efek dependensi spasial yang ditimbulkan pada saat pemodelan OLS
AIC yang didapat merupakan AIC yang paling kecil sehingga menjadi indikator model terbaik dari Pemillihan Model
Koefisien Spasialnya bernilai 0.51 yang nyata pada taraf 5%.
$ Y= 0.11059+7.50443X1+3.15265X2+0.515585W$
Model tersebut memiliki signifikansi disemua paramternya dan parameternya searah dengan korelasi plotnyaa. Dimana dapat diinterpratsikan setiap kenaikan X1 dan peubah lainnya tetap, akan meningkatkan Y sebesar 7.50443 dan setiap kenaikan X2 dan peubah lainnya tetap akan meningkatan Y sebsesar 3.16265. denga 0.515585 sebagai efek kesalah spasialnya
Penangan Kehomogenan Ragam ( Tambahan)
Terdapat Permasalahan pada Asumsi Kehomogenan Ragam pada model OLSnya kemudian setelah dilakukan pemodelan Spasial, Masalah ini masih belom terselesaikan, untuk itu akan dicoba penanganan dengan transformasi, ataupun pemodelan dengan GWR ( Geogrpahic Weighted Regrression)
Transformasi Logaritam
# Lakukan Transformasi Log pada Model OLS pada peubah y
data$Y <- log(data$Y)
# Pemodelan OLS dengan data yang sudah di trasnformasi
ols2 <- lm(Y~X1+X2, data=data)
# Lakukan pengujian yang sama seperti yang sudah saya lakukan
summary(ols2)##
## Call:
## lm(formula = Y ~ X1 + X2, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.39506 -0.15932 0.01382 0.20188 0.65834
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.30652 0.08395 3.651 0.000393 ***
## X1 1.69149 0.10400 16.264 < 2e-16 ***
## X2 0.75294 0.10713 7.029 1.54e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.334 on 116 degrees of freedom
## Multiple R-squared: 0.7157, Adjusted R-squared: 0.7108
## F-statistic: 146 on 2 and 116 DF, p-value: < 2.2e-16
## [1] 81.68016
##
## studentized Breusch-Pagan test
##
## data: ols2
## BP = 19.516, df = 2, p-value = 5.782e-05
Dapat dilihat bahwa pemodelan Regresi dengan Transformasi Log belum mengatasi keheterogenan dn tidak mengatasi masalahnya, sehingga pemodelan mungkin bisa dilanjutkan dengan GWR