library(rgdal)
## Loading required package: sp
## rgdal: version: 1.5-16, (SVN revision 1050)
## Geospatial Data Abstraction Library extensions to R successfully loaded
## Loaded GDAL runtime: GDAL 3.0.4, released 2020/01/28
## Path to GDAL shared files: C:/Users/Ny  07/Documents/R/win-library/4.0/rgdal/gdal
## GDAL binary built with GEOS: TRUE 
## Loaded PROJ runtime: Rel. 6.3.1, February 10th, 2020, [PJ_VERSION: 631]
## Path to PROJ shared files: C:/Users/Ny  07/Documents/R/win-library/4.0/rgdal/proj
## Linking to sp version:1.4-2
## To mute warnings of possible GDAL/OSR exportToProj4() degradation,
## use options("rgdal_show_exportToProj4_warnings"="none") before loading rgdal.
library(maptools)
## Checking rgeos availability: TRUE
library(raster)
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')`
## Loading required package: sf
## Warning: package 'sf' was built under R version 4.0.5
## Linking to GEOS 3.9.0, GDAL 3.2.1, PROJ 7.2.1
library(spatialreg)
## Loading required package: Matrix
## Registered S3 methods overwritten by 'spatialreg':
##   method                   from 
##   residuals.stsls          spdep
##   deviance.stsls           spdep
##   coef.stsls               spdep
##   print.stsls              spdep
##   summary.stsls            spdep
##   print.summary.stsls      spdep
##   residuals.gmsar          spdep
##   deviance.gmsar           spdep
##   coef.gmsar               spdep
##   fitted.gmsar             spdep
##   print.gmsar              spdep
##   summary.gmsar            spdep
##   print.summary.gmsar      spdep
##   print.lagmess            spdep
##   summary.lagmess          spdep
##   print.summary.lagmess    spdep
##   residuals.lagmess        spdep
##   deviance.lagmess         spdep
##   coef.lagmess             spdep
##   fitted.lagmess           spdep
##   logLik.lagmess           spdep
##   fitted.SFResult          spdep
##   print.SFResult           spdep
##   fitted.ME_res            spdep
##   print.ME_res             spdep
##   print.lagImpact          spdep
##   plot.lagImpact           spdep
##   summary.lagImpact        spdep
##   HPDinterval.lagImpact    spdep
##   print.summary.lagImpact  spdep
##   print.sarlm              spdep
##   summary.sarlm            spdep
##   residuals.sarlm          spdep
##   deviance.sarlm           spdep
##   coef.sarlm               spdep
##   vcov.sarlm               spdep
##   fitted.sarlm             spdep
##   logLik.sarlm             spdep
##   anova.sarlm              spdep
##   predict.sarlm            spdep
##   print.summary.sarlm      spdep
##   print.sarlm.pred         spdep
##   as.data.frame.sarlm.pred spdep
##   residuals.spautolm       spdep
##   deviance.spautolm        spdep
##   coef.spautolm            spdep
##   fitted.spautolm          spdep
##   print.spautolm           spdep
##   summary.spautolm         spdep
##   logLik.spautolm          spdep
##   print.summary.spautolm   spdep
##   print.WXImpact           spdep
##   summary.WXImpact         spdep
##   print.summary.WXImpact   spdep
##   predict.SLX              spdep
## 
## Attaching package: 'spatialreg'
## The following objects are masked from 'package:spdep':
## 
##     anova.sarlm, as.spam.listw, as_dgRMatrix_listw, as_dsCMatrix_I,
##     as_dsCMatrix_IrW, as_dsTMatrix_listw, bptest.sarlm, can.be.simmed,
##     cheb_setup, coef.gmsar, coef.sarlm, coef.spautolm, coef.stsls,
##     create_WX, deviance.gmsar, deviance.sarlm, deviance.spautolm,
##     deviance.stsls, do_ldet, eigen_pre_setup, eigen_setup, eigenw,
##     errorsarlm, fitted.gmsar, fitted.ME_res, fitted.sarlm,
##     fitted.SFResult, fitted.spautolm, get.ClusterOption,
##     get.coresOption, get.mcOption, get.VerboseOption,
##     get.ZeroPolicyOption, GMargminImage, GMerrorsar, griffith_sone,
##     gstsls, Hausman.test, HPDinterval.lagImpact, impacts, intImpacts,
##     Jacobian_W, jacobianSetup, l_max, lagmess, lagsarlm, lextrB,
##     lextrS, lextrW, lmSLX, logLik.sarlm, logLik.spautolm, LR.sarlm,
##     LR1.sarlm, LR1.spautolm, LU_prepermutate_setup, LU_setup,
##     Matrix_J_setup, Matrix_setup, mcdet_setup, MCMCsamp, ME, mom_calc,
##     mom_calc_int2, moments_setup, powerWeights, predict.sarlm,
##     predict.SLX, print.gmsar, print.ME_res, print.sarlm,
##     print.sarlm.pred, print.SFResult, print.spautolm, print.stsls,
##     print.summary.gmsar, print.summary.sarlm, print.summary.spautolm,
##     print.summary.stsls, residuals.gmsar, residuals.sarlm,
##     residuals.spautolm, residuals.stsls, sacsarlm, SE_classic_setup,
##     SE_interp_setup, SE_whichMin_setup, set.ClusterOption,
##     set.coresOption, set.mcOption, set.VerboseOption,
##     set.ZeroPolicyOption, similar.listw, spam_setup, spam_update_setup,
##     SpatialFiltering, spautolm, spBreg_err, spBreg_lag, spBreg_sac,
##     stsls, subgraph_eigenw, summary.gmsar, summary.sarlm,
##     summary.spautolm, summary.stsls, trW, vcov.sarlm, Wald1.sarlm
library(readxl)
library(sp)

memanggil data shp

ind<-readOGR(dsn="D:/SHP Indonesia", layer="prov")
## OGR data source with driver: ESRI Shapefile 
## Source: "D:\SHP Indonesia", layer: "prov"
## with 34 features
## It has 4 fields
ind
## class       : SpatialPolygonsDataFrame 
## features    : 34 
## extent      : 95.0097, 141.0194, -11.00762, 6.076941  (xmin, xmax, ymin, ymax)
## crs         : +proj=longlat +datum=WGS84 +no_defs 
## variables   : 4
## names       :    NAME_0,     NAME_1, KODE, ipm 
## min values  : Indonesia,       Aceh,   11,  NA 
## max values  : Indonesia, Yogyakarta,   92,  NA
##input data
covid<-read.csv("D:\\total.csv",header=T, sep=";", stringsAsFactors = F)
summary(covid)
##    Provinsi             Total       
##  Length:34          Min.   :  1941  
##  Class :character   1st Qu.:  3806  
##  Mode  :character   Median :  9207  
##                     Mean   : 21839  
##                     3rd Qu.: 18135  
##                     Max.   :183248

membuat peta

ind$ipm<-covid$Total
ind$NAME_1<-covid$Provinsi
plot(ind,col=c(1:5), main="Peta Indonesia")
legend("bottomleft", legend = c("c 1","c 2","c 3","c 4","c 5"),
       fill=c(1:5))
text(ind,"NAME_1",cex=0.4,col="gray40")

#indikasi kelasterisasinya
spplot(ind, "ipm", col.regions = rainbow(99, start=.1))

MORAN InDEX

#jarak_EUC <- dist(coordinates(jawa), method="euclidean")
#w<-as.matrix(1/jarak_EUC)
#w<-poly2nb(ind, queen=F)
w<-as.matrix(1/dist(coordinates(ind)))
ww<-mat2listw(w)
moran(covid$Total,ww,n=length(ww$neighbours),S0=Szero(ww))
## $I
## [1] 0.09778682
## 
## $K
## [1] 13.14362
moran.test(covid$Total, ww,randomisation=T,alternative="two.sided")
## 
##  Moran I test under randomisation
## 
## data:  covid$Total  
## weights: ww    
## 
## Moran I statistic standard deviate = 3.6247, p-value = 0.0002893
## alternative hypothesis: two.sided
## sample estimates:
## Moran I statistic       Expectation          Variance 
##       0.097786815      -0.030303030       0.001248797
a<-moran.plot(covid$Total, ww, labels=F)
text(a,covid$Provinsi,cex=0.5, col="red")

LISA

s<-localmoran(covid$Total, ww)
moran.map <- cbind(ind, s)
quadrant <- vector(mode="numeric",length=nrow(s))
quadrant
##  [1] 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 0 0 0 0 0 0 0 0 0
m.qualification <- covid$Total - mean(covid$Total)   

# centers the local Moran's around the mean
m.local <- s[,4] - mean(s[,4]) 
# significance threshold
signif <- 0.3
# builds a data quadrant
quadrant[m.qualification >0 & m.local>0 & (s[, 5] <= 0.3)] <- 4  
quadrant[m.qualification <0 & m.local<0 & (s[, 5] <= 0.3)] <- 1      
quadrant[m.qualification <0 & m.local>0 & (s[, 5] <= 0.3)] <- 2
quadrant[m.qualification >0 & m.local<0 & (s[, 5] <= 0.3)] <- 3
quadrant[s[,5]>signif] <- 0  

# plot in r
brks <- c(0,1,2,3,4)
colors <- c("white","blue",rgb(0,0,1,alpha=0.4),rgb(1,0,0,alpha=0.4),"red")
plot(ind,border="lightgray",main="Local Moran's",col=colors[findInterval(quadrant,brks,all.inside=FALSE)])
box()
legend("bottomleft", legend = c("insignificant","low-low","low-high","high-low","high-high"),
       fill=colors,bty="n")
text(ind,"NAME_1",cex=0.45, col="gray40")