【问题标题】:How to solve "impacts()" neighbors length error after running spdep::lagsarlm (Spatial Autoregressive Regression model)?运行 spdep::lagsarlm(空间自回归模型)后如何解决“impacts()”邻居长度错误?
【发布时间】:2019-06-30 03:12:11
【问题描述】:

我的数据集中有 9,150 个多边形。我试图在spdep 中运行空间自回归模型 (SAR) 来测试结果变量的空间依赖性。运行模型后,我想检查直接/间接影响,但遇到了一个错误,似乎与权重矩阵中邻居的长度不等于n 有关。

我尝试运行与 SLX 模型(空间滞后 X)完全相同的方程,并且 impacts() 运行良好,即使我的集合中有一些没有邻居的多边形。我用 Google 搜索并查看了 spdep 文档,但找不到有关如何解决此错误的线索。

# Defining queen contiguity neighbors for polyset and storing the matrix as list
q.nbrs <- poly2nb(polyset) 
listweights <- nb2listw(q.nbrs, zero.policy = TRUE)

# Defining the model
model.equation <- TIME ~ A + B + C

# Run SAR model
reg <- lagsarlm(model.equation, data = polyset, listw = listweights, zero.policy = TRUE)

# Run impacts() to show direct/indirect impacts
impacts(reg, listw = listweights, zero.policy = TRUE)

Error in intImpacts(rho = rho, beta = beta, P = P, n = n, mu = mu, Sigma = Sigma,  : 
  length(listweights$neighbours) == n is not TRUE

【问题讨论】:

    标签: r geospatial spatial spdep


    【解决方案1】:

    我知道这是 2019 年的一个问题,但也许它可以帮助人们处理同样的问题。我发现在我的情况下,问题在于数据集的类型,您的data=polyset 应该是"SpatialPolygonsDataFrame" 类型。这可以通过转换您的数据来实现:

    polyset_spatial_sf <- sf::as_Spatial(polyset, IDs = polyset$ID)
    

    然后重新运行您的代码。

    【讨论】:

    • 谢谢你的回答,但问题是我的polyset已经是sp类型SpatialPolygonsDataFrame。我想也许还有另一种解决方案来解决通常在线浮动的问题。我在 R-sig-geo 上发帖,得到了 Roger Bivand 的回复。他在我的lagsarlm() 上发表评论“如果您的权重是对称的,请使用 Cholesky 分解(“矩阵”),速度更快,输出相同。”然后他在回复我的impacts() 行时补充说:“使用轨迹,而不是权重本身。使用listw 对象,在这种情况下,您需要反转一个 nxn 矩阵一次,如果您运行蒙特卡罗模拟,则需要 1+R 次"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-23
    • 2014-05-24
    • 2012-03-20
    • 2020-12-30
    • 1970-01-01
    • 2020-03-05
    相关资源
    最近更新 更多