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)')
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
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.
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)
Error is spdep spautolm()
4 messages · Roger Bivand, Samar Deen
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 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
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
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]]