【问题标题】:How to include a spatial lag of an explanatory variable in a panel spatial model?如何在面板空间模型中包含解释变量的空间滞后?
【发布时间】:2018-08-17 21:39:53
【问题描述】:

我正在做一个带有 spml 函数(splm 包)的空间 durbin 模型,我已经将一个多项式(2 级)作为回归量包括在内,显然我也需要包括它的空间滞后。 不幸的是,函数 slag 和 lag.listw 不适用于 poly 函数,这给了我错误:

没有适用于类对象的“渣”方法 "c('poly', '矩阵')"

lag.listw(dist.listw, poly(GDP.PCAP, 2)) 中的错误:对象长度 不同

手动插入两个变量被排除在外,因为该模型不适用于奇异性问题。

如果有人可以帮助我,我将不胜感激。

谢谢 西尔维娅

【问题讨论】:

    标签: r panel spatial plm poly


    【解决方案1】:

    您确实可以使用 slag 包含空间滞后的解释变量。但是,您需要确保您的数据属于 pdata.frame 类。

    一个可重现的例子:

    library(plm)
    library(spatialreg)
    library(splm)
    
    # load data
    data(Produc, package = "plm")
    data(usaww, package = "splm")
    
    d <- pdata.frame(Produc, index = c("state","year"), drop.index = FALSE)
    
    # create a spatial explanatory variable
    d$unemp_l <- slag(d$unemp, usaww)
    
    # run model
    m <- splm::spml(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp + unemp_l,
                      data = d, listw = mat2listw(usaww) , model="within")
    summary(m)
    Spatial panel fixed effects error model
    
    
    Call:
    splm::spml(formula = log(gsp) ~ log(pcap) + log(pc) + log(emp) + 
        unemp + unemp_l, data = d, listw = mat2listw(usaww), model = "within")
    
    Residuals:
          Min.    1st Qu.     Median    3rd Qu.       Max. 
    -0.1211492 -0.0234013 -0.0040218  0.0167919  0.1787587 
    
    Spatial error parameter:
        Estimate Std. Error t-value  Pr(>|t|)    
    rho 0.542254   0.033772  16.056 < 2.2e-16 ***
    
    Coefficients:
                Estimate Std. Error t-value Pr(>|t|)    
    log(pcap)  0.0090575  0.0251036  0.3608  0.71824    
    log(pc)    0.2152367  0.0234077  9.1951  < 2e-16 ***
    log(emp)   0.7833003  0.0277672 28.2096  < 2e-16 ***
    unemp     -0.0014795  0.0011443 -1.2930  0.19603    
    unemp_l   -0.0031210  0.0015790 -1.9766  0.04808 *  
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
    

    您可以验证空间解释是否正确。例如:

    a <- usaww["ALABAMA",]
    a <- a[a!=0]
    a
        FLORIDA     GEORGIA MISSISSIPPI    TENNESSE 
           0.25        0.25        0.25        0.25 
    mean(d[d$year=="1970" & d$state %in% names(a) , "unemp"])
    [1] 4.525
    
    d[d$state=="ALABAMA" & d$year=="1970", "unemp_l"]
    ALABAMA-1970 
       4.525 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-08
      • 1970-01-01
      • 1970-01-01
      • 2017-12-20
      • 2020-01-06
      • 2022-06-10
      • 2017-03-14
      相关资源
      最近更新 更多