Error is spdep spautolm()
On Tue, 12 Apr 2016, Roger Bivand wrote:
On Tue, 12 Apr 2016, Samar Deen wrote:
I was running a CAR with different inputs into the function, but have a few errors that I am unable to resolve. CAR1 = spautolm(s2008 ~ 1, data = df4, listw = gab.nhbr.listw, + weights = 1, family = "CAR") Error in model.frame.default(formula = s2008 ~ 1, data = df4, weights = 1, : variable lengths differ (found for '(weights)')
This is trivial, input weights must be of the same length as the number of observations.
weights <- 1 length(weights)
[1] 1 ... more below
CAR1 = spautolm(s2008 ~ 1, data = df4, listw = gab.nhbr.listw, + weights = tempmean, family = "CAR") Error in validObject(.Object) : invalid class ?dgRMatrix? object: slot j is not increasing inside a column
This was a long-standing and previously unknown bug in sn2listw() used inside tri2nb(), and a new release of spdep has been submitted to CRAN. Roger
Here in both cases I used a Delaunay Triangulation to determine neighbors and also made the neighbors symmetric using the command: nc_nb.tri <- make.sym.nb(nc_nb.tri) In my code I also have other methods for determining the neighbors. I seem to be getting different errors for all. I would really appreciate any guidance on how I may resolve this error.
(I have access to the data from an earlier offline exchange involving issues with missing data) The points are (most likely) in geographical coordinates, so almost all of your attempts to create neighbour objects are wrong - all graph methods are only on the plane. Distances can be used when longlat=TRUE only. Your use of scaled inverted spatial weights is contorted and the declared listw object style wrong, this ought to be sufficient: gab.dist.sinv <- lapply(gab.dist, function(x) min(unlist(gab.dist))/x) Much seems to have been copied from a script detailing analysis of the NC SIDS data set (the 30 mile threshold was used there). It isn't obvious what you are trying to do. Roger
Any help will be really appreciated.
Thank you & Regards,
My code is pasted below:
library(Matrix)
library(spdep)
library(RColorBrewer)
#Get cents3
setwd("~/Desktop/Flounder")
cents3 <- read.csv("cents3.csv")
#Subset the relevant data
df=data.frame(cents3)
df2 <- subset(df, select = c(8,9,41,49,50))
df3 <- df2[complete.cases(df2), ]
df4 <- na.omit(df3)
coordinates(df4) = c("x","y")
##SET the neighbours
coords = coordinates(df4)
IDs = row.names(data.frame(df4))
# Delaunay Triangulation
nc_nb.tri = tri2nb(coords,row.names=IDs)
nc_nb.tri <- make.sym.nb(nc_nb.tri)
#
plot(df4, border = "grey")
plot(nc_nb.tri, coordinates(df4), add = TRUE, col = "blue")
# Sphere of Influence
nc_nb.soi = graph2nb(soi.graph(nc_nb.tri,coords),row.names=IDs)
nc_nb.soi <- make.sym.nb(nc_nb.soi)
#
plot(df4, border = "grey")
plot(nc_nb.soi, coordinates(df4), add = TRUE, col = "blue")
# Relative Graph
#
nc_nb.relative = graph2nb(relativeneigh(coords),row.names=IDs)
#
plot(df4, border = "grey")
plot(nc_nb.relative, coordinates(df4), add = TRUE, col = "blue")
#
# Neighbors based on distance (Here all neighbors withing 30 miles
# This one is a bit messy
nc_nb.dnn = dnearneigh(cbind(df4$x,df4$y),0,2,row.names=IDs)
#
plot(df4, border = "grey")
plot(nc_nb.dnn, coordinates(df4), add = TRUE, col = "blue")
#
# K nearest neighbors
#
nc_nb.knn = knn2nb(knearneigh(coordinates(df4),k=5),row.names=IDs)
nc_nb.knn <- make.sym.nb(nc_nb.knn)
#
plot(df4, border = "grey")
plot(nc_nb.knn, coordinates(df4), add = TRUE, col = "blue")
#
#7- Making Neighborhood Wieghts
#
# Compute distances between neighbors
gab.dist = nbdists(nc_nb.tri, cbind(df4$x, df4$y))
#
# Create a spatial neighbor object from weights object
# using inverse distance weighting, style B gives equal weights to the
nrihbors
gab.nhbr = listw2sn(nb2listw(nc_nb.tri, glist = gab.dist,
style = "U", zero.policy = TRUE))
#
# The distance between neighbor i and j
dij = gab.nhbr[, 3]
#
# SSTobserved
n = df4$tempmean
#
# Scaled inverse distance
el1 = min(dij)/dij
#
# Square root of ratio of central fish to neighbor fish quantities
# not needed
el2 = sqrt(n[gab.nhbr$to]/n[gab.nhbr$from])
#
# Combine distance and birth weightings
gab.nhbr$weights = el1
#
# Create spatial weights object from spatial neighbor object
gab.nhbr.listw = sn2listw(gab.nhbr)
gab.nhbr.listw$style <- "W"
#8- CAR with no predictor
# when wieght = 1 it will be propotional to the variance-
# since it is a standardized survey across the region we can assume it is 1
CAR1 = spautolm(s2008 ~ tempmean, data = df4, listw = gab.nhbr.listw,
verbose = TRUE, family = "CAR", method = "Matrix_J")
CAR1 = spautolm(s2008 ~ 1, data = df4, listw = gab.nhbr.listw,
weights = 1, family = "CAR")
summary(CAR1)
[[alternative HTML version deleted]]
_______________________________________________ R-sig-Geo mailing list R-sig-Geo at 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; fax +47 55 95 91 00 e-mail: Roger.Bivand at nhh.no http://orcid.org/0000-0003-2392-6140 https://scholar.google.no/citations?user=AWeghB0AAAAJ&hl=en http://depsy.org/person/434412