[R-sig-Geo] Fwd: Error is spdep spautolm()
Roger Bivand
Roger.Bivand at nhh.no
Tue Apr 12 12:40:19 CEST 2016
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
More information about the R-sig-Geo
mailing list