[R-sig-Geo] Error in spatialreg::predict.sarlm: unknown mismatch. please report this bug
Jiawen Ng
|ove|y||tt|ed@|@|e@ @end|ng |rom gm@||@com
Sun Jul 7 01:52:53 CEST 2019
Dear All,
I am trying to do a out-of-sample prediction using predict.sarlm but I am
getting the 'unknown mismatch' error from predict.sarlm.
I have a training and a testing spatial points dataframe (train_spdf and
test_spdf) and I know that I would require a listw object that contains the
neighbours of the training set for fitting the model and a listw object
that contains the neighbours of training + testing set for predicting.
Here is how I have created the listw object for predicting:
all_coords <- rbind(train_spdf using coords, test_spdf using coords)
col.rel.nb <- graph2nb(relativeneigh(all_coords), sym=TRUE)
test.listw <- nb2listw(col.rel.nb)
It seems like there are at least 2 ways one can create the listw object for
model fitting.
First Way:
nb <- graph2nb(relativeneigh(train_spdf using coords), sym=TRUE)
train.listw <- nb2listw(nb)
Second Way:
train_index <- rep(1:214) # the first 214 observations should be my
training set since that was how I rbind-ed it in all_coords object
train.listw <- subset(test.listw, 1:nrow(all_coords) %in% train_index)
Eventually, the train.listw and test.listw object will be used as follows:
model <- spatialreg::lagsarlm(myformula, data=train_spdf using data,
train.listw, type="mixed",zero.policy = T)
pred <- spatialreg::predict.sarlm(model, test_spdf using data,
test.listw,zero.policy = T)
When I did it the first way, I obtained an error and warning messages from
the predict.sarlm function:
Error in spatialreg::predict.sarlm(model, final_test_spdf using data, test.listw,
:
unknown mismatch. please report this bug
In addition: Warning messages:
1: In spatialreg::predict.sarlm(model, final_test_spdf using data, test.listw, :
some region.id are both in data and newdata
2: In colnames(Xs.not.lagged) != colnames(Xo) :
longer object length is not a multiple of shorter object length
When I did it the second way, I obtained warning messages from the
lagsarlm function:
Warning message:
In spatialreg::lagsarlm(as.formula(rest_formula), data =
final_train_spdf using data, :
Aliased variables found:
A lag.B lag.C lag.D lag. E lag.F lag.G lag.H lag.I lag.J lag.K lag.L lag.M
lag.N lag.O lag.P [... truncated]
And then the same error and warning messages as the first way when using
the predict.sarlm function:
Error in spatialreg::predict.sarlm(model2, final_test_spdf using data,
test.listw, :
unknown mismatch. please report this bug
In addition: Warning messages:
1: In spatialreg::predict.sarlm(model2, final_test_spdf using data, test.listw, :
some region.id are both in data and newdata
2: In colnames(Xs.not.lagged) != colnames(Xo) :
longer object length is not a multiple of shorter object length
As you can see, either method would have me run into the 'unknown mismatch'
error in predict.sarlm.
Here I have 2 questions:
1. Which way should be the right way of creating the listw object for
fitting the model?
2. How can I solve the 'unknown mismatch' error?
Would appreciate any advice! Thank you!
[[alternative HTML version deleted]]
More information about the R-sig-Geo
mailing list