[R-sig-Geo] moran test - Empty neighbour sets found

Roger Bivand Roger@B|v@nd @end|ng |rom nhh@no
Tue Oct 12 15:19:53 CEST 2021


Please use plain text email only, HTML only makes things illegible.

The clear error message is: "Empty neighbour sets found", so you need to 
continue to use the zero.policy=TRUE argument to assert how you want to 
handle this problem.

Roger

On Mon, 11 Oct 2021, maria jesus herrerias wrote:

> Dear Roger,
>
> I try first with your suggestion for the map:
>
>
>
> library(rnaturalearth)
>
> spdf_world <- ne_countries(returnclass="sf")
>
>
>
> if (require(sp)) {
>
>  plot(spdf_world)
>
>  }
>
>
>
> names(spdf_world)
>
>
>
> [1] "scalerank"  "featurecla" "labelrank"  "sovereignt" "sov_a3"
>
> [6] "adm0_dif"   "level"      "type"       "admin"      "adm0_a3"
>
> [11] "geou_dif"   "geounit"    "gu_a3"      "su_dif"     "subunit"
>
> [16] "su_a3"      "brk_diff"   "name"       "name_long"  "brk_a3"
>
> [21] "brk_name"   "brk_group"  "abbrev"     "postal"     "formal_en"
>
> [26] "formal_fr"  "note_adm0"  "note_brk"   "name_sort"  "name_alt"
>
> [31] "mapcolor7"  "mapcolor8"  "mapcolor9"  "mapcolor13" "pop_est"
>
> [36] "gdp_md_est" "pop_year"   "lastcensus" "gdp_year"   "economy"
>
> [41] "income_grp" "wikipedia"  "fips_10"    "iso_a2"     "iso_a3"
>
> [46] "iso_n3"     "un_a3"      "wb_a2"      "wb_a3"      "woe_id"
>
> [51] "adm0_a3_is" "adm0_a3_us" "adm0_a3_un" "adm0_a3_wb" "continent"
>
> [56] "region_un"  "subregion"  "region_wb"  "name_len"   "long_len"
>
> [61] "abbrev_len" "tiny"       "homepart"   "geometry"
>
>
>
>
>
> spdf_world$geounit
>
>
>
> library(foreign)
>
> library(haven)
>
>
>
>
>
> setwd("C:/Users/Usuario/Desktop/instituciones/revision energy
> economics/docs enviados/spatial test")
>
>
>
> x <- read.dta("C:/Users/Usuario/Desktop/instituciones/revision energy
> economics/docs enviados/spatial test/high_spatial.dta")
>
>
>
> dta_cntries <- unique(x$geounit)
>
>
>
> library(sf)
>
>
>
> wrld_a <- aggregate(spdf_world, list(spdf_world$geounit), head, n=1)
>
>
>
>
>
> o <- match(dta_cntries, wrld_a$geounit)
>
>
>
> #Check if matching is right
>
>
>
> which(is.na(o))
>
> [1] 9
>
> dta_cntries[9] <- "France"
>
> o <- match(dta_cntries, spdf_world$geounit)
>
> o
>
> which(is.na(o))
>
>
>
> library(spdep)
>
> row.names(wrld_a) <- wrld_a$geounit
>
> nb <- poly2nb(wrld_a)
>
> nb1 <- subset(nb, 1:nrow(wrld_a) %in% o)
>
>
>
> Neighbour list object:
>
> Number of regions: 32
>
> Number of nonzero links: 24
>
> Percentage nonzero weights: 2.34375
>
> Average number of links: 0.75
>
> 17 regions with no links:
>
> Angola Dominican Republic East Timor Egypt Falkland Islands Fiji Gambia
> Guyana Liberia Malaysia Oman Papua New Guinea Puerto Rico Republic of
> Serbia Slovenia Sweden Uruguay
>
> Note for roger: this is wrong as I didn’t include these countries in the
> data (17 regions with no links)
>
>
>
> wrld_s <- wrld_a[1:nrow(wrld_a) %in% o,]
>
> nb2 <- poly2nb(wrld_s)
>
> all.equal(nb1, nb2, check.attributes=FALSE)
>
> [1] TRUE  # subsetting well-done however.
>
> ---------------------------------------------------
>
> I try now with my map:
>
>
>
> #Spatial Dependence for Panel 32 regions from 1990-2014
>
>
>
> # The Spatial Matrix
>
> # Read the shapefile and set up the working directory.
>
> library(foreign)
>
> library(haven)
>
>
>
>
>
> setwd("C:/Users/Usuario/Desktop/instituciones/revision energy
> economics/docs enviados/spatial test")
>
>
>
> x <- read.dta("C:/Users/Usuario/Desktop/instituciones/revision energy
> economics/docs enviados/spatial test/high_spatial.dta")
>
>
>
> # Matching with stata file and shapefile by ID
>
>
>
> dta_cntries <- unique(x$OBJECTID)
>
>
>
> library(sf)
>
>
>
> wrld <- st_read("C:/Users/Usuario/Desktop/instituciones/revision energy
> economics/docs
> enviados/Longitude_Graticules_and_World_Countries_Boundaries-shp/mapa1.shp")
>
> wrld_a <- aggregate(wrld, list(wrld$OBJECTID), head, n=1)
>
>
>
>
>
> o <- match(dta_cntries, wrld_a$OBJECTID)
>
>
>
> #Check if matching is right
>
>
>
>
>
> which(is.na(o))
>
>
>
> o <- match(dta_cntries, wrld$OBJECTID)
>
> o
>
>
>
> library(spdep)
>
> row.names(wrld_a) <- wrld_a$OBJECTID
>
> nb <- poly2nb(wrld_a, queen=TRUE)
>
> nb1 <- subset(nb, 1:nrow(wrld_a) %in% o)
>
>
>
> nb1llistw <- nb2listw(nb1,style = "W", zero.policy = TRUE)
>
>
>
> #high
>
> Neighbour list object:
>
> Number of regions: 32
>
> Number of nonzero links: 82
>
> Percentage nonzero weights: 8.007812
>
> Average number of links: 2.5625
>
>
>
> wrld_s <- wrld_a[1:nrow(wrld_a) %in% o,]
>
> nb2 <- poly2nb(wrld_s,queen=TRUE)
>
> all.equal(nb1, nb2, check.attributes=FALSE)
>
> [1] TRUE  # subsetting well-done
>
>
>
> subworlddata <- wrld_s
>
>
>
>
>
>
>
> # Tranform the nb object into a matrix row standarised.
>
>
>
> sub.queen.w.Mat <- listw2mat(sub.queen.listw) # creates a standardized
> matrix (rows sum to 1)
>
> sub.queen.B.Mat <- nb2mat(sub.queen.nb, style='B',zero.policy=TRUE) # a
> simple binary matrix (rows sum to the number of neighbors)
>
>
>
> rownames(sub.queen.w.Mat) <- subworlddata$OBJECTID
>
> colnames(sub.queen.w.Mat) <- subworlddata$OBJECTID
>
>
>
>
>
> rownames(sub.queen.B.Mat) <- subworlddata$OBJECTID
>
> colnames(sub.queen.B.Mat) <- subworlddata$OBJECTID
>
>
>
>
> ----------------------------------------------------------------------------------------------------------
>
>
>
>
>
> sub.queen.w.Mat1 <-
> read.dta("C:/Users/Usuario/Desktop/instituciones/revision energy
> economics/docs enviados/subqueenW.dta")
>
> sub.queen.B.Mat1 <-
> read.dta("C:/Users/Usuario/Desktop/instituciones/revision energy
> economics/docs enviados/subqueenB.dta")
>
>
>
>
>
> sub.queen.w.Mat11 <- as.matrix(sub.queen.w.Mat1)
>
> rownames(sub.queen.w.Mat11) <- subworlddata$OBJECTID
>
> colnames(sub.queen.w.Mat11) <- subworlddata$OBJECTID
>
> sub.queen.lw.Mat11 <- mat2listw(sub.queen.w.Mat11)
>
>
>
> sub.queen.B.Mat11 <- as.matrix(sub.queen.B.Mat1)
>
> rownames(sub.queen.B.Mat11) <- subworlddata$OBJECTID
>
> colnames(sub.queen.B.Mat11) <- subworlddata$OBJECTID
>
> sub.queen.lB.Mat11 <- mat2listw(sub.queen.B.Mat11)
>
>
>
>
>
> listw1 <- sub.queen.lw.Mat11
>
> listw2 <- sub.queen.lB.Mat11
>
>
>
> sub.queen.lw.listw.Mat21 <- nb2listw(sub.queen.lw.Mat11$neighbours,
> style="W",zero.policy=TRUE)
>
> sub.queen.lB.listw.Mat21 <- nb2listw(sub.queen.lB.Mat11$neighbours,
> style="B",zero.policy=TRUE)
>
>
>
> # Summary Matrix nb object to listw
>
> listw21 <- sub.queen.lw.listw.Mat21
>
> listw22 <- sub.queen.lB.listw.Mat21
>
>
>
> ---------------------------------------------------
>
>
>
>
>
> library(plm)
>
>
>
> setwd("C:/Users/Usuario/Desktop/instituciones/revision energy
> economics/code and data/quantile")
>
>
>
> x <- read.dta("C:/Users/Usuario/Desktop/instituciones/revision energy
> economics/docs enviados/spatial test/high_spatial.dta")
>
>
>
>
>
> mydata <- pdata.frame(x, index = c("OBJECTID", "year"))
>
> **************************************
>
> #Variables.
>
>
>
> energy <- mydata$leic
>
> gdp <- mydata$lgdppcnewc
>
> gdp2 <- mydata$lgdppcnewc2
>
> fdi <- mydata$fdigc
>
> imports <- mydata$importsgc
>
> industry <- mydata$industrygc
>
> inst <- mydata$kun_legabsc
>
> ID <- mydata$OBJECTID
>
> time <- mydata$year
>
>
>
> **********************************
>
> #Define formula
>
>
>
> model.1 <- energy ~ gdp + gdp2 + fdi + imports + industry + inst
>
>
>
> ols.eq1 <- lm(model.1, data = mydata)
>
> summary(ols.eq1)
>
>
>
>
>
> lmMoranTest <- lm.morantest(ols.eq1,listw = nb2listw(nb1,style = "W",
> zero.policy = TRUE))
>
> lmMoranTest
>
>
>
> *Error in nb2listw(neighbours = subnb, glist = NULL, style = style,
> zero.policy = zero.policy) : *
>
> *  Empty neighbour sets found*
>
>
>
> lmLMtests <- lm.LMtests(ols.eq1, listw = nb2listw(nb1,style = "W",
> zero.policy = TRUE), test=c("LMerr", "LMlag", "RLMerr", "RLMlag", "SARMA"))
>
> lmLMtests
>
>
>
> *Error in nb2listw(neighbours = subnb, glist = NULL, style = style,
> zero.policy = zero.policy) : *
>
> *  Empty neighbour sets found*
>
>
> many thanks
> maria jesus
>
> 	[[alternative HTML version deleted]]
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo using r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>

-- 
Roger Bivand
Emeritus Professor
Department of Economics, Norwegian School of Economics,
Postboks 3490 Ytre Sandviken, 5045 Bergen, Norway.
e-mail: Roger.Bivand using nhh.no
https://orcid.org/0000-0003-2392-6140
https://scholar.google.no/citations?user=AWeghB0AAAAJ&hl=en


More information about the R-sig-Geo mailing list