[R-sig-Geo] Fwd: Error is spdep spautolm()

Samar Deen sa462 at cornell.edu
Wed Apr 13 04:54:26 CEST 2016


Thank you. I made the recommended changes and the CAR function is now
working.
Regards,

On Tue, Apr 12, 2016 at 6:40 AM, Roger Bivand <Roger.Bivand at nhh.no> wrote:

> 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
>



-- 
Samar Deen

Summer Research Fellow,  Atkinson Center for a Sustainable Future
PhD Student, Department of Natural Resources, Cornell University
M.P.A. Cornell University, 2011

Phone: +1 607 793 4200
Skype ID: samarnasiruddeen

	[[alternative HTML version deleted]]



More information about the R-sig-Geo mailing list