different dimensions in W and my data in moran and spatial model

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

different dimensions in W and my data in moran and spatial model

maria jesus herrerias
Hello everyone,

    I am writing my code in R to run the spatial models. I am learning this
at the moment.
    I have my data for 116 countries over the period 1990-2014,
    and I got the shapefile from the website below.
    The objective is to get the matrix to run the spatial models.
    In the code below, I can get the matrix for the world and also for the
subsample.
    But when I try to run the moran test or sar model I get an error.
    The error is related to the dimension of W (listw) and my dataset. So
any help,
    I would be grateful.

    Below my code just in case someone can help  here.

    # Load the required Packages.

    `library(spdep)          # Spatial Dependence: Weighting Schemes,
Statistics
    `library(rgdal)          # to read shapefiles

    #shapefiles (world map from diva-gis)

       # Read the panel data from stata format for the regression analysis
below.

    `library(foreign)

    `mydata <- read.dta("C:/Users/Usuario/Desktop/instituciones/revision
energy economics/
     spatial  panel in stata/countries_shp/neworiginal.dta")

    `fix(mydata)
    `attach(mydata)

    my data contains 116 countries from 1990 to 2014 in panel.

    # Prepare the dataset for panel data analysis in R.

    `library(plm)

    `mydata <- pdata.frame(mydata, index = c("id", "year"))


    # Read the shapefile and set up the working directory.

    `setwd("C:/Users/Usuario/Desktop/instituciones/revision energy
economics/spatial panel in stata/countries_shp")

    `worlddata <- readOGR("countries.shp")
    `names(worlddata)
    `summary(worlddata)

    # Get the centroids

    `coords <-coordinates(worlddata)

    A. Contiguity based relations

     1. First Order Queen Contiguity

    `queen.nb = poly2nb(worlddata, queen=TRUE)
    `summary(queen.nb)
    `plot(queen.nb,coords)


    # the numbers of neighbours of regions in the neighbours list.

    `cards <- card(queen.nb)

    # convert into a listw type based on contiguity row normalized

    `queen.listw <- nb2listw(queen.nb,style="W", zero.policy = TRUE)
    `summary(queen.listw,zero.policy=TRUE)

    #marginal effects
    `impacts(reg2, listw = listw1,zero.policy=TRUE)

    #marginal effects with p-values
    `summary(impacts(reg2, listw = listw1), R= 500, zstats =
TRUE,zero.policy=TRUE)

    `attributes(queen.listw)

     #Selection of a subset of countries to fit with mydataset (116
countries, the previous ones I did for all countries in the shapefile)


    `setwd("C:/Users/Usuario/Desktop/instituciones/revision energy
economics/spatial panel in stata/countries_shp")

    `worlddata <- readOGR("countries.shp")

    `queen.nb = poly2nb(worlddata, queen=TRUE)

    `coords <-coordinates(worlddata)

    `plot(queen.nb, coords)


    Following Roger Bivand example:

    `to.be.dropped <- c(1, 2, 5, 6, 8, 9, 10, 13, 14, 18, 20, 21, 23, 26,
28, 29, 31, 34, 36, 37, 39, 40, 41, 45, 46, 47, 48, 51, 52, 53, 55, 56, 58,
59, 62, 63, 64, 66, 68, 69, 74, 75, 77, 78, 79, 80, 81, 82, 85, 86, 87, 89,
90, 94, 95, 97, 98, 99, 100, 102, 103, 104, 105, 107, 109, 110, 118, 123,
124, 125, 127, 130, 131, 133, 134, 137, 138, 139, 140, 143, 145, 146, 148,
149, 151, 152, 153, 155, 157, 159, 161, 162, 166, 167, 170, 173, 175, 176,
177, 178, 181, 182, 183, 184, 186, 190, 193, 194, 195, 198, 199, 200, 201,
202, 203, 204, 205, 206, 207, 208, 211, 212, 213, 215, 216, 218, 219, 221,
222, 224, 226, 227, 228, 229, 232, 233, 237, 239, 240, 242, 246, 247, 248,
255, 258, 259, 260, 261, 265)
    sub.queen.nb <- subset(queen.nb,
      !(1:length(queen.nb) %in% to.be.dropped))
    which(!(attr(queen.nb, "region.id") %in%
      attr(sub.queen.nb, "region.id")))

    `sub.queen.listw <- nb2listw(sub.queen.nb,style="W", zero.policy = TRUE)

    so now, I have my 116 countries in the queen matrix.

    # My data and variables
    `y <- cbind(lei)
    `x <- cbind(lgdppcnew, lgdppcnew2, industryg, importsg, fdig)
    `xy <- cbind(mydata$x, mydata$y)
    `listw1 <- sub.queen.listw
    `coords <- coords

    #Define formula

    `reg.ols <- y ~ x


    # Autocorrelation test
    `lm.morantest(ols.eq1,listw1,zero.policy=TRUE)
    `plot.moran(ols.eq1,listw1)

    (here I get the error where it is said the objects have different
dimensions)

    `reg2 <- lagsarlm(ols.eq1, data = mydata, listw1, zero.policy=TRUE)
    `summary(reg2,correlation=TRUE, Nagelkerke=TRUE, Hausman=TRUE,
zero.policy=TRUE)

    (here I get the error where it is said the objects have different
dimensions)

     #marginal effects

    `impacts(reg2, listw = listw1,zero.policy=TRUE)

     #marginal effects with p-values

     `summary(impacts(reg2, listw = listw1), R= 500, zstats =
TRUE,zero.policy=TRUE)

     I don't know if it is for my panel data, the missing values or
something else.
     I tried also in Stata having similar issues.

     thanks in advance and my apologies if it is very naive question, but I
am stuck.

all the best
Maria Jesus

        [[alternative HTML version deleted]]

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Reply | Threaded
Open this post in threaded view
|

Re: different dimensions in W and my data in moran and spatial model

Bert Gunter-2
Almost certainly better posted on R-Sig-geo, not here.
See here for more info on R mailing lists:
https://www.r-project.org/mail.html

Bert Gunter

"The trouble with having an open mind is that people keep coming along and
sticking things into it."
-- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )


On Wed, Apr 14, 2021 at 3:32 PM maria jesus herrerias <
[hidden email]> wrote:

> Hello everyone,
>
>     I am writing my code in R to run the spatial models. I am learning this
> at the moment.
>     I have my data for 116 countries over the period 1990-2014,
>     and I got the shapefile from the website below.
>     The objective is to get the matrix to run the spatial models.
>     In the code below, I can get the matrix for the world and also for the
> subsample.
>     But when I try to run the moran test or sar model I get an error.
>     The error is related to the dimension of W (listw) and my dataset. So
> any help,
>     I would be grateful.
>
>     Below my code just in case someone can help  here.
>
>     # Load the required Packages.
>
>     `library(spdep)          # Spatial Dependence: Weighting Schemes,
> Statistics
>     `library(rgdal)          # to read shapefiles
>
>     #shapefiles (world map from diva-gis)
>
>        # Read the panel data from stata format for the regression analysis
> below.
>
>     `library(foreign)
>
>     `mydata <- read.dta("C:/Users/Usuario/Desktop/instituciones/revision
> energy economics/
>      spatial  panel in stata/countries_shp/neworiginal.dta")
>
>     `fix(mydata)
>     `attach(mydata)
>
>     my data contains 116 countries from 1990 to 2014 in panel.
>
>     # Prepare the dataset for panel data analysis in R.
>
>     `library(plm)
>
>     `mydata <- pdata.frame(mydata, index = c("id", "year"))
>
>
>     # Read the shapefile and set up the working directory.
>
>     `setwd("C:/Users/Usuario/Desktop/instituciones/revision energy
> economics/spatial panel in stata/countries_shp")
>
>     `worlddata <- readOGR("countries.shp")
>     `names(worlddata)
>     `summary(worlddata)
>
>     # Get the centroids
>
>     `coords <-coordinates(worlddata)
>
>     A. Contiguity based relations
>
>      1. First Order Queen Contiguity
>
>     `queen.nb = poly2nb(worlddata, queen=TRUE)
>     `summary(queen.nb)
>     `plot(queen.nb,coords)
>
>
>     # the numbers of neighbours of regions in the neighbours list.
>
>     `cards <- card(queen.nb)
>
>     # convert into a listw type based on contiguity row normalized
>
>     `queen.listw <- nb2listw(queen.nb,style="W", zero.policy = TRUE)
>     `summary(queen.listw,zero.policy=TRUE)
>
>     #marginal effects
>     `impacts(reg2, listw = listw1,zero.policy=TRUE)
>
>     #marginal effects with p-values
>     `summary(impacts(reg2, listw = listw1), R= 500, zstats =
> TRUE,zero.policy=TRUE)
>
>     `attributes(queen.listw)
>
>      #Selection of a subset of countries to fit with mydataset (116
> countries, the previous ones I did for all countries in the shapefile)
>
>
>     `setwd("C:/Users/Usuario/Desktop/instituciones/revision energy
> economics/spatial panel in stata/countries_shp")
>
>     `worlddata <- readOGR("countries.shp")
>
>     `queen.nb = poly2nb(worlddata, queen=TRUE)
>
>     `coords <-coordinates(worlddata)
>
>     `plot(queen.nb, coords)
>
>
>     Following Roger Bivand example:
>
>     `to.be.dropped <- c(1, 2, 5, 6, 8, 9, 10, 13, 14, 18, 20, 21, 23, 26,
> 28, 29, 31, 34, 36, 37, 39, 40, 41, 45, 46, 47, 48, 51, 52, 53, 55, 56, 58,
> 59, 62, 63, 64, 66, 68, 69, 74, 75, 77, 78, 79, 80, 81, 82, 85, 86, 87, 89,
> 90, 94, 95, 97, 98, 99, 100, 102, 103, 104, 105, 107, 109, 110, 118, 123,
> 124, 125, 127, 130, 131, 133, 134, 137, 138, 139, 140, 143, 145, 146, 148,
> 149, 151, 152, 153, 155, 157, 159, 161, 162, 166, 167, 170, 173, 175, 176,
> 177, 178, 181, 182, 183, 184, 186, 190, 193, 194, 195, 198, 199, 200, 201,
> 202, 203, 204, 205, 206, 207, 208, 211, 212, 213, 215, 216, 218, 219, 221,
> 222, 224, 226, 227, 228, 229, 232, 233, 237, 239, 240, 242, 246, 247, 248,
> 255, 258, 259, 260, 261, 265)
>     sub.queen.nb <- subset(queen.nb,
>       !(1:length(queen.nb) %in% to.be.dropped))
>     which(!(attr(queen.nb, "region.id") %in%
>       attr(sub.queen.nb, "region.id")))
>
>     `sub.queen.listw <- nb2listw(sub.queen.nb,style="W", zero.policy =
> TRUE)
>
>     so now, I have my 116 countries in the queen matrix.
>
>     # My data and variables
>     `y <- cbind(lei)
>     `x <- cbind(lgdppcnew, lgdppcnew2, industryg, importsg, fdig)
>     `xy <- cbind(mydata$x, mydata$y)
>     `listw1 <- sub.queen.listw
>     `coords <- coords
>
>     #Define formula
>
>     `reg.ols <- y ~ x
>
>
>     # Autocorrelation test
>     `lm.morantest(ols.eq1,listw1,zero.policy=TRUE)
>     `plot.moran(ols.eq1,listw1)
>
>     (here I get the error where it is said the objects have different
> dimensions)
>
>     `reg2 <- lagsarlm(ols.eq1, data = mydata, listw1, zero.policy=TRUE)
>     `summary(reg2,correlation=TRUE, Nagelkerke=TRUE, Hausman=TRUE,
> zero.policy=TRUE)
>
>     (here I get the error where it is said the objects have different
> dimensions)
>
>      #marginal effects
>
>     `impacts(reg2, listw = listw1,zero.policy=TRUE)
>
>      #marginal effects with p-values
>
>      `summary(impacts(reg2, listw = listw1), R= 500, zstats =
> TRUE,zero.policy=TRUE)
>
>      I don't know if it is for my panel data, the missing values or
> something else.
>      I tried also in Stata having similar issues.
>
>      thanks in advance and my apologies if it is very naive question, but I
> am stuck.
>
> all the best
> Maria Jesus
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> [hidden email] mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

        [[alternative HTML version deleted]]

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.