On Tue, 11 Aug 2020, Chanda Chiseni wrote:

I am trying to perform moran's I test on residuals from by probit model
using k-nearest neighbour weights, however i run into an error which i
cant seem to find the solution anywhere online the error is

moran.test(residuals.glm(svyprobitest),knear2weight)
Error in moran.test(residuals.glm(svyprobitest), knear2weight) :
 objects of different length


The codes I use to come up to this are below

library(foreign)
dhsanalysis2= read.dta("DHSSpatialreg11.dta")
##removing NAs in PSU
dhsanalysis3=subset(dhsanalysis2, !is.na(psu))
##generating a survey design
mydesighdhs= svydesign(ids =~psu, data =dhsanalysis3, weight = ~wgt,
strata = ~v023,nest=TRUE)
##Defining coordinate colums
coordinates(dhsanalysis3)= c("longnum","latnum")
#Defining Projection
proj4string(dhsanalysis3) <- CRS("+init=epsg:4326")
##binding longiude and latitude
lon2<- dhsanalysis3$longnum
lat2<- dhsanalysis3$latnum
coords<- cbind(lon2,lat2)
##Creating spatial weights based on the nearest neighbour
knear2= knearneigh(coords,k=2,longlat=T)
Warning message:
In knearneigh(coords, k = 2, longlat = T) :
 knearneigh: identical points found ### I get a warning message on
identical points found, is this a problem and how would i deal with this

It usually indicates muddled thinking. You have more than one observation at the same point, which could be an unintended duplicate (copy of the same observation), or it could indicate that any spatial process has multiple values at that point. In geostatistics, one would jitter the points to introduce distance. In your case, this probably isn't households living at one address point. All the observations at the same point will get the same sets of neighbours. If there are many co-located observations, k in k-nearest may be too small to include them all.

knear2.nb= knn2nb(knear2)
knear2weight= nb2listw(knear2.nb, style="W",zero.policy=T)

##declaring categorical variables as factor variables
dhsanalysis3$hivpositive.f <- factor(dhsanalysis3$hivpositive)
dhsanalysis3$protestant.f <- factor(dhsanalysis3$protestant2)
dhsanalysis3$Married.f <- factor(dhsanalysis3$Married)
dhsanalysis3$female.f <- factor(dhsanalysis3$female)
dhsanalysis3$urban1.f <- factor(dhsanalysis3$urban1)
dhsanalysis3$river10kmdum.f <- factor(dhsanalysis3$river10kmdum)
dhsanalysis3$Explorer50kmdum.f <- factor(dhsanalysis3$Explorer50kmdum)
dhsanalysis3$Rail50kmdum.f <- factor(dhsanalysis3$Rail50kmdum)
dhsanalysis3$Province1.f <- factor(dhsanalysis3$Province1)
dhsanalysis3$WealthIndex.f <- factor(dhsanalysis3$WealthIndex)
dhsanalysis3$occupation2.f <- factor(dhsanalysis3$occupation2)
dhsanalysis3$highested.f <- factor(dhsanalysis3$highested)
protestant.f= dhsanalysis3$protestant.f
hivpositive.f=dhsanalysi3$hivpositive.f
Married.f=dhsanalysis3$Married.f
female.f=dhsanalysis3$female.f
urban1.f=dhsanalysis3$urban1.f
river10kmdum.f=dhsanalysis3$river10kmdum.f
Explorer50kmdum.f=dhsanalysis2$Explorer50kmdum.f
Province1.f=dhsanalysis3$Province1.f
WealthIndex.f=dhsanalysis3$WealthIndex.f
occupation2.f=dhsanalysis3$occupation2.f
highested.f=dhsanalysis3$highested.f
Age=dhsanalysis3$Age
Age2=dhsanalysis3$Age2
HIVKnowledge=dhsanalysis3$HIVKnowledge
churchkm=dhsanalysis3$churchkm
lnhospitalkm=dhsanalysis3$lnhospitalkm
lnElevationMean=dhsanalysis3$lnElevationMean

###VARIABLES IN SURVEY DESIGN
mydesighdhs$hivpositive.f <- factor(dhsanalysis3$hivpositive)
mydesighdhs$protestant.f <- factor(dhsanalysis3$protestant2)
mydesighdhs$Married.f <- factor(dhsanalysis3$Married)
mydesighdhs$female.f <- factor(dhsanalysis3$female)
mydesighdhs$urban1.f <- factor(dhsanalysis3$urban1)
mydesighdhs$river10kmdum.f <- factor(dhsanalysis3$river10kmdum)
mydesighdhs$Explorer50kmdum.f <- factor(dhsanalysis3$Explorer50kmdum)
mydesighdhs$Rail50kmdum.f <- factor(dhsanalysis3$Rail50kmdum)
mydesighdhs$Province1.f <- factor(dhsanalysis3$Province1)
mydesighdhs$WealthIndex.f <- factor(dhsanalysis3$WealthIndex)
mydesighdhs$occupation2.f <- factor(dhsanalysis3$occupation2)
mydesighdhs$highested.f <- factor(dhsanalysis3$highested)
mydesighdhs$Age=Age
mydesighdhs$Age2=Age2
mydesighdhs$HIVKnowledge=HIVKnowledge
mydesighdhs$churchkm=churchkm
mydesighdhs$lnhospitalkm=lnhospitalkm
mydesighdhs$lnElevationMean=lnElevationMean

svyprobitest= svyglm(hivpositive.f~ churchkm +lnhospitalkm +protestant.f+
Age+
Age2+Married.f+female.f+urban1.f+river10kmdum.f+Explorer50kmdum.f+Rail50kmdum.f+lnElevationMean+Province1.f
+ WealthIndex.f + HIVKnowledge+ occupation2.f+
highested.f,design=mydesighdhs,family = quasibinomial(link =
"probit"),data=dhsanalysis3)
Error in .subset2(x, i, exact = exact) : subscript out of bounds

So you've an error anyway.


## Iran my probit model without implementing the survey design in the model
just to see whether Moran test is working
svyprobitest2= glm(hivpositive.f~ churchkm +lnhospitalkm +protestant.f+
Age+
Age2+Married.f+female.f+urban1.f+river10kmdum.f+Explorer50kmdum.f+Rail50kmdum.f+lnElevationMean+Province1.f
+ WealthIndex.f + HIVKnowledge+ occupation2.f+ highested.f,family =
quasibinomial(link = "probit"),data=dhsanalysis3)
#Moran test
moran.test(residuals.glm(svyprobitest),knear2weight)
Error in moran.test(residuals.glm(svyprobitest), knear2weight) :
 objects of different length


Testing residuals using moran.test() is usually wrong, as the expectation and variance of the statistic are based on a null model (intercept only), not a model with covariates.

What are length(residuals.glm(svyprobitest)) and length(knear2.nb)? Did glm drop observations with missing values? If so, you should subset both the data submitted to glm() and the neighbour object so that they match.

Hope this helps,

Roger


Kind Regards,

Michael Chanda Chiseni

Phd Candidate

Department of Economic History

Lund University

Visiting address: Alfa 1, Scheelevägen 15 B, 22363 Lund



*Africa is not poor, it is poorly managed (Ellen Johnson-Sirleaf ). *

        [[alternative HTML version deleted]]

_______________________________________________
R-sig-Geo mailing list
R-sig-Geo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-geo


--
Roger Bivand
Department of Economics, Norwegian School of Economics,
Helleveien 30, N-5045 Bergen, Norway.
voice: +47 55 95 93 55; e-mail: roger.biv...@nhh.no
https://orcid.org/0000-0003-2392-6140
https://scholar.google.no/citations?user=AWeghB0AAAAJ&hl=en
_______________________________________________
R-sig-Geo mailing list
R-sig-Geo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-geo

Reply via email to