GWmodel | 地理加权模型(Ⅱ-2):如何查看地理加权回归的显著性

《地理加权模型》系列自推出来,深受各位读者喜爱。前几天有读者问:使用gwr()等函数运行模型后,怎么去查看它里面的信息呢?比如如何看变量系数的显著性。本篇就来介绍如何在R语言中去查看GWR模型的输出结果。

对于一般模型如线型模型来说,使用summary()函数就能得到大部分想要的结果,如回归系数、标准误、值、R2等。

但是,GWR模型每个变量在每个样本点都有一个估计系数,以及对应的标准误、值,即使全部输出出来也非常不直观,因此一般使用地图的方式来展示GWR的结果。

模型输出结果的数据结构是list,它包含的内容可以在对应函数帮助文档的value部分查看。

spgwr工具包gwr()函数:

11ad9cc7a463458bcc59c47a4d89eca8.png

GWmodel工具包gwr.basic()函数:

c85e9c92be7578d3a7652da465d2d04b.png

从上面可以看出,无论是spgwr工具包,还是GWmodel工具包,其模型的主要信息都存在于元素SDFdata部分。


下面使用model.1表示spgwr工具包的输出结果,model.2表示GWmodel的输出结果。具体模型见文末。


model.2为例,找到它的SDF模块:

3fad5d5103f2ad80b9d1f52bb67309c7.png
model.2$SDF@data

上行代码就可以将模型结果以数据框(data.frame)的形式输出出来,包含的线性如下:

colnames(model.2$SDF@data)
##  [1] "Intercept"     "PctBlack"      "PctBach"       "PctEld"       
##  [5] "y"             "yhat"          "residual"      "CV_Score"     
##  [9] "Stud_residual" "Intercept_SE"  "PctBlack_SE"   "PctBach_SE"   
## [13] "PctEld_SE"     "Intercept_TV"  "PctBlack_TV"   "PctBach_TV"   
## [17] "PctEld_TV"     "Local_R2"

可视化局部R2的结果:

dta.sf <- st_as_sf(dta)
dta.sf$R2 <- model.2$SDF@data$Local_R2
plot(dta.sf["R2"])
d6811cb2b3252f076230506f87c2303b.png

t统计量可以表示显著性,当t的绝对值大于1.96时表示在95%的置信区间下显著。

dta.sf$t <- model.2$SDF@data$PctEld_TV
plot(dta.sf["t"])
5d61ae4afaedbf99a725fa3bdf465ab3.png

model.1的内容在默认情况下不包含t统计量或其他表示显著性的指标,如果需要可以在调用gwr()函数时设置参数se.fit = TRUE,表示输出估计系数的标准误,而系数与标准误之比即为t统计量。

但是在本例中,运行model.1会出现以下警告信息,并且结果中标准误的信息全部是NA,因此还是推荐使用GWmodel工具包。

standard errors set to NA, normalised RSS not available

各位读者还可以使用summary()函数和print()函数分别查看GWR模型的结果,由于输出内容较长,这里不再展示。

summary(model.1)
summary(model.1)

print(model.1)
print(model.2)

以下为模型信息。

示例数据和模型表达式:

library(GWmodel)
library(spgwr)
library(sf)
library(sp)
library(tidyverse)
data(Georgia)
data(GeorgiaCounties)
Gedu.df$AreaKey <- factor(Gedu.df$AreaKey)
dta <- Gedu.counties %>%
  st_as_sf() %>%
  left_join(Gedu.df, by = c("AREAKEY" = "AreaKey")) %>%
  as("Spatial")
formula <- PctPov ~ PctBlack + PctBach + PctEld

运行模型:

model.1 <- gwr(formula, data = dta,
               adapt = 22/159,
               gweight = gwr.Gauss,
               se.fit = T)

model.2 <- gwr.basic(formula, data = dta,
                     bw = 22,
                     adaptive = T,
                     kernel = "gaussian")
  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值