Thanks, Professor Bivand and Josiah. The previous code had the variable
time mistyped instead of time1. The code below corrects that. See below,
basic info and code:

# Rstudio version and PC info

platform       x86_64-w64-mingw32
arch           x86_64
os             mingw32
system         x86_64, mingw32
status
major          4
minor          1.2
year           2021
month          11
day            01
svn rev        81115
language       R
version.string R version 4.1.2 (2021-11-01)



####### code #####

# Load necessary libraries
library(tigris)
library(splm)
library(spdep)
library(Matrix)
library(plm)


# Load necessary libraries
library(tigris)
library(splm)
library(spdep)
library(Matrix)
library(plm)

# census tracts
dc_tracts_2018 <- tracts(state="DC",cb=TRUE, year=2018)
dc_tracts_2018$row.id <- 1:179

# Spatial matrix
coords <- coordinates(dc_tracts_2018)
DC.knn_7 <- knearneigh(coords, k=7)
DC7_nb <- knn2nb(DC.knn_7)
DCknn_7 <- nb2listw(DC7_nb, style="W")

# reproducible example
set.seed(123)
df2010 <- data.frame(
  y = rnorm(179),
  x = rnorm(179, mean=2),
  x2 = rnorm(179, mean = 3),
  year=2010,
  row.id = 1:179
)

df2015 <- data.frame(
  y = rnorm(179),
  x = rnorm(179, mean=2.5),
  x2 = rnorm(179, mean = 3),
  year=2015,
  row.id = 1:179
)

df2020 <- data.frame(
  y = rnorm(179),
  x = rnorm(179, mean=1.5),
  x2 = rnorm(179, mean = 3.5),
  year=2020,
  row.id = 1:179
)


# drop geom
st_geometry(dc_tracts_2018) <- NULL

#list of data frame
df <- list(df2010,df2015,df2020)

for (i in seq_along(df)) {
  df[[i]] <- merge(df[[i]], dc_tracts_2018, by = "row.id")

}

df2010 <- df[1]
df2015 <- df[2]
df2020 <- df[3]

# merging
panel_dc_2010_2020 <- rbind(df2010[[1]], df2015[[1]], df2020[[1]])

#### setting lag variables
panel_dc_2010_2020.pd<-pdata.frame(panel_dc_2010_2020,
index=c("GEOID","year"))

# lag variables
panel_dc_2010_2020.pd$lag_x <- slag(panel_dc_2010_2020.pd$x,listw=DCknn_7)
panel_dc_2010_2020.pd$lag_x2 <- slag(panel_dc_2010_2020.pd$x2,listw=DCknn_7)

## impacts
time1 <- length(unique(panel_dc_2010_2020$year))
s.lwtracts <- kronecker(Diagonal(time1), listw2dgCMatrix(DCknn_7))
trMatc <- trW(s.lwtracts, type = "mult")

Error in trW(s.lwtracts, type = "mult") : could not find function "trW"

# durbing
model_fix_durbin <- spgm(y ~ x + x2 +lag_x + lag_x2,
data=panel_dc_2010_2020.pd, listw = DCknn_7, model = "within",lag =
TRUE,spatial.error = FALSE,moments="fullweights",method="ec2sls")

# estimating impacts
impacts(model_fix_durbin,tr=trMatc, R=200)

Error in impacts(model_fix_durbin, tr = a, R = 200) :
  could not find function "impacts"


On Sat, May 27, 2023 at 10:58 AM Jose Funes <jefu...@gmail.com> wrote:

> Thanks Professor Bivand and Josiah. See below, basic info and code:
>
> # Rstudio version and PC info
>
> platform       x86_64-w64-mingw32
> arch           x86_64
> os             mingw32
> system         x86_64, mingw32
> status
> major          4
> minor          1.2
> year           2021
> month          11
> day            01
> svn rev        81115
> language       R
> version.string R version 4.1.2 (2021-11-01)
>
>
>
> ####### code #####
>
> # Load necessary libraries
> library(tigris)
> library(splm)
> library(spdep)
> library(Matrix)
> library(plm)
>
> # census tracts
> dc_tracts_2018 <- tracts(state="DC",cb=TRUE, year=2018)
> dc_tracts_2018$row.id <- 1:179
>
> # Spatial matrix
> coords <- coordinates(dc_tracts_2018)
> DC.knn_7 <- knearneigh(coords, k=7)
> DC7_nb <- knn2nb(DC.knn_7)
> DCknn_7 <- nb2listw(DC7_nb, style="W")
>
> # reproducible example
> set.seed(123)
> df2010 <- data.frame(
>   y = rnorm(179),
>   x = rnorm(179, mean=2),
>   x2 = rnorm(179, mean = 3),
>   year=2010,
>   row.id = 1:179
> )
>
> df2015 <- data.frame(
>   y = rnorm(179),
>   x = rnorm(179, mean=2.5),
>   x2 = rnorm(179, mean = 3),
>   year=2015,
>   row.id = 1:179
> )
>
> df2020 <- data.frame(
>   y = rnorm(179),
>   x = rnorm(179, mean=1.5),
>   x2 = rnorm(179, mean = 3.5),
>   year=2020,
>   row.id = 1:179
> )
>
>
> # drop geom
> st_geometry(dc_tracts_2018) <- NULL
>
> #list of data frame
> df <- list(df2010,df2015,df2020)
>
> for (i in seq_along(df)) {
>   df[[i]] <- merge(df[[i]], dc_tracts_2018, by = "row.id")
>
> }
>
> df2010 <- df[1]
> df2015 <- df[2]
> df2020 <- df[3]
>
> # merging
> panel_dc_2010_2020 <- rbind(df2010[[1]], df2015[[1]], df2020[[1]])
>
> #### setting lag variables
> panel_dc_2010_2020.pd<-pdata.frame(panel_dc_2010_2020, 
> index=c("GEOID","year"))
>
> # lag variables
> panel_dc_2010_2020.pd$lag_x <- slag(panel_dc_2010_2020.pd$x,listw=DCknn_7)
> panel_dc_2010_2020.pd$lag_x2 <- slag(panel_dc_2010_2020.pd$x2,listw=DCknn_7)
>
> ## impacts
> time1 <- length(unique(panel_dc_2010_2020$year))
> s.lwtracts <- kronecker(Diagonal(time), listw2dgCMatrix(DCknn_7))
> trMatc <- trW(s.lwtracts, type = "mult")
>
> Error in trW(s.lwtracts, type = "mult") : could not find function "trW"
>
> # durbin
> model_fix_durbin <- spgm(y ~ x + x2 +lag_x + lag_x2,
> data=panel_dc_2010_2020.pd, listw = DCknn_7, model = "within",lag =
> TRUE,spatial.error = FALSE,moments="fullweights",method="ec2sls")
>
> # estimating impacts
> impacts(model_fix_durbin,tr=trMatc, R=200)
>
> Error in impacts(model_fix_durbin, tr = a, R = 200) :
>   could not find function "impacts"
>
>
>
>
> On Fri, May 26, 2023 at 2:34 PM Roger Bivand <roger.biv...@nhh.no> wrote:
>
>> I think the example is using the splm package to fit a GMM model. It is
>> now some years since spdep was split, with model fitting functions and
>> methods moving to spatialreg. The latter has also been updated several
>> times since then, so knowledge of versions of R and packages is essential,
>> in addition to a reproducible example. Specifically,
>> https://github.com/r-spatial/spatialreg/pull/16 changed impacts methods
>> for sphet GMM, and other changes in impacts methods may have occurred:
>> https://github.com/r-spatial/spatialreg/commits/main/R/impacts.R gives
>> full details. Provide a fully reproducible example, best with built-in
>> data, or raise an issue if you can see how any changes have impacted splm
>> in ways that the splm maintainer did not anticipate.
>>
>> Hope this clarifies,
>>
>> Roger
>>
>> --
>> Roger Bivand
>> Emeritus Professor
>> Norwegian School of Economics
>> Postboks 3490 Ytre Sandviken, 5045 Bergen, Norway
>> roger.biv...@nhh.no
>>
>> ________________________________________
>> From: R-sig-Geo <r-sig-geo-boun...@r-project.org> on behalf of Josiah
>> Parry <josiah.pa...@gmail.com>
>> Sent: 26 May 2023 20:14
>> To: Jose Funes
>> Cc: r-sig-geo@r-project.org
>> Subject: Re: [R-sig-Geo]  Estimate impacts from a spgm - spatial panel
>> regression model
>>
>> Jose have you built the model that you want impacts for using the
>> spatialreg package? Additionally, it would be great if you provided a
>> reproducible example for folks to try and replicate the behavior you are
>> experiencing.
>>
>> On Fri, May 26, 2023 at 12:26 PM Jose Funes <jefu...@gmail.com> wrote:
>>
>> > Hi,
>> > I would like to estimate the impacts of a spatial lag model output. It
>> used
>> > to work, but it does not work anymore. I used to work fine with the
>> impacts
>> > function in the spdep package, but it seems the function does not work
>> any
>> > longer. The second option was to load the spatialreg library and use the
>> > impacts function, but I get an error message "object type not
>> recognized".
>> > Please advise.
>> >
>> > Jose Funes
>> > Economic geographer
>> > DC Office of Planning
>> > 1100 4th Street SW, 20024
>> >
>> >         [[alternative HTML version deleted]]
>> >
>> > _______________________________________________
>> > R-sig-Geo mailing list
>> > R-sig-Geo@r-project.org
>> > https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>> >
>>
>>         [[alternative HTML version deleted]]
>>
>> _______________________________________________
>> R-sig-Geo mailing list
>> R-sig-Geo@r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>>
>

        [[alternative HTML version deleted]]

_______________________________________________
R-sig-Geo mailing list
R-sig-Geo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-geo

Reply via email to