Susan Elias
2018-Jan-27 02:19 UTC
[R] GAM: mismatch between nb/polys supplied area names and data area names
Hello, I am new to R and running R version 3.4.3 (2017-11-30),
x86_64-apple-darwin15.6.0 (64-bit), macOS High Sierra 10.13.2.
I am running the gam package to model disease incidence (negative binomial
distribution) as a function of two covariates, and wish to incorporate
spatial correlation among areal neighbors, n = 50 polygons, identified by
"id". For data observed over discrete spatial units, a Markov random
field
can be used through the GAM syntax:
s(id, bs="mrf", xt = list(nb = nb), where the latter nb refers to an
object
with a neighbor list.
The error is "Error in smooth.construct.mrf.smooth.spec(object, dk$data,
dk$knots) :
mismatch between nb/polys supplied area names and data area names".
I have read the documentation, studied the function, and looked at the
traceback, and have been careful to use matching variable types for area
names in nb and data, but have not been successful.
Any advice would be appreciated. Below are code and a data sample.
Thank you,
Susan
code:
#read in data; from a numeric polygon "IDENTIFIER" create a new
polygon
"id" that is a factor
datawide <- read_csv("~/Long/ALLWIDEDATA.csv")
datawide <- transform(datawide, id = factor(formatC(IDENTIFIER, width = 2,
flag = "0")))
#NB: the new area ids are: "01", "02",..."50"
#read in the shapefile and create the neighborhood object nb,
#names(nb) must correspond to the levels of the covariate of the smooth
(i.e. the area labels)
shape<-readOGR(dsn="~/Long/MENHShape",layer=("MENHShape2"))
nb <- poly2nb(shape, queen = TRUE, snap=100, row.names=datawide$id)
names(nb) <- attr(nb, "region.id")
#run GAM spatial neighbors plus covariates
gamspcov <- gam(y2008_2014rate~s(id, bs="mrf", xt = list(nb = nb),
k=20) +
s(deermi2) + s(t14), family=nb( ), data=datawide, method="MLE")
#ERROR MESSSAGE
#Error in smooth.construct.mrf.smooth.spec(object, dk$data, dk$knots) :
# mismatch between nb/polys supplied area names and data area names
#In addition: Warning message:
# In if (all.equal(sort(a.name), sort(levels(k))) != TRUE) stop("mismatch
between nb/polys supplied area names and data area names") :
# the condition has length > 1 and only the first element will be used
data sample:
IDENTIFIER (num) id (factor) caserate (num) deer (num) temp (num) <more
columns>
1 01 0.0 2.0 -9.0 <etc.>
2 02 3.1 8.5 -7.0 <etc.>
...
50 50 200.0 25.0 -3 <etc.>
[[alternative HTML version deleted]]
Apparently Analagous Threads
- Multivariate random forests in R - how to obtain variance explained for multiple responses in randomForestSRC package - or other package
- Gam with mrf smoother (mgcv)
- logistic regression - using polys and products of features
- .Fortran() again
- ESS 5.1.19 w/Xemacs 21.4.6
