spatialreg | 基于特征向量的空间滤波方法(2)


专注系列化高质量的R语言教程

推文索引 | 联系小编 | 付费合集


阅读本篇推文前,请先阅读如下推文:

spatialreg | 基于特征向量的空间滤波方法

上面这篇推文介绍了空间滤波方法的原理以及应用于线性模型的案例。本篇推文介绍应用于广义线性模型的案例。主要参考文献1[1]

本篇目录如下:

  • 0 示例数据

  • 1 ME函数

  • 2 案例

0 示例数据

首先加载示例矢量文件、计算空间邻接和权重矩阵:

## 加载示例文件
library(sf)
NY8 <- st_read(system.file("shapes/NY8_utm18.shp",
                           package = "spData"))
NY8$Cases <- as.integer(NY8$Cases)
## 计算空间权重矩阵 
library(spdep)
nb <- poly2nb(NY8) 
w = nb2listw(nb)

1 ME函数

ME()函数来自spatialreg工具包,主要用于实现广义线性模型的空间滤波方法。该函数的语法结构如下:

ME(formula, data = list(), family = gaussian, 
   weights, offset, na.action = na.fail,
   listw = NULL, alpha = 0.05, 
   nsim = 99, verbose = NULL,
   stdev = FALSE, zero.policy = NULL)

参数含义如下:

  • family:广义线性模型的指数族形式;

  • offset:偏移项;见推文泊松回归;

  • listw:空间邻接矩阵;

  • alpha:筛选特征向量的显著性临界值;对于广义线性模型来说一般需要设置较大的值,否则筛选的特征向量可能会太少。

2 案例

以泊松回归为例。

普通泊松回归:

model.glm <- glm(Cases ~ PEXPOSURE + PCTAGE65P + PCTOWNHOME,
                 data = NY8, offset = log(POP8),
                 family = "poisson")

加入滤波变量的泊松回归(方法类似线性模型,只是使用函数不同):

library(spatialreg)
## 筛选特征向量
sarcol <- ME(Cases ~ PEXPOSURE + PCTAGE65P + PCTOWNHOME,
             data = NY8, offset = log(POP8),
             family = "poisson",
             listw = w, alpha = 0.45)

## 加入滤波变量fitted(sarcol)
model.me <- glm(Cases ~ PEXPOSURE + PCTAGE65P + PCTOWNHOME + fitted(sarcol),
                data = NY8, offset = log(POP8),
                family = "poisson")

比较结果:

summary(model.glm)
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -8.22863    0.18900 -43.537  < 2e-16 ***
## PEXPOSURE    0.15866    0.03213   4.938 7.88e-07 ***
## PCTAGE65P    4.19281    0.61243   6.846 7.58e-12 ***
## PCTOWNHOME  -0.40200    0.19649  -2.046   0.0408 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

summary(model.me)
## Coefficients:
##                     Estimate Std. Error z value Pr(>|z|)    
## (Intercept)         -8.20495    0.18954 -43.289  < 2e-16 ***
## PEXPOSURE            0.15881    0.03216   4.938 7.87e-07 ***
## PCTAGE65P            4.19282    0.61167   6.855 7.15e-12 ***
## PCTOWNHOME          -0.44372    0.19871  -2.233   0.0256 *  
## fitted(sarcol)vec68 -1.19084    0.81056  -1.469   0.1418    
## fitted(sarcol)vec86  0.02438    0.73205   0.033   0.9734    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

前面的推文介绍到,加入滤波变量的线性模型与普通线性模型相比,截距和自变量系数基本保持不变。而从上面的结果可以看到,加入滤波变量的泊松模型与普通泊松模型相比,截距和自变量系数都有比较微弱的变化。

需要注意的是,本例加入的滤波变量的系数并不显著,下面的卡方检验也表明加入滤波变量的泊松模型并不显著优于普通泊松模型:

anova(model.glm, model.me, 
      test = "Chisq")
## Analysis of Deviance Table
## 
## Model 1: Cases ~ PEXPOSURE + PCTAGE65P + PCTOWNHOME
## Model 2: Cases ~ PEXPOSURE + PCTAGE65P + PCTOWNHOME + fitted(sarcol)
##   Resid. Df Resid. Dev Df Deviance Pr(>Chi)
## 1       277     398.35                     
## 2       275     396.20  2    2.146    0.342

参考资料

[1]

Moran Eigenvectors: https://mirrors.tuna.tsinghua.edu.cn/CRAN/web/packages/spatialreg/vignettes/SpatialFiltering.html

你可能感兴趣的:(r语言,机器学习,开发语言,人工智能)