使用R语言进行美国失业率时空分析(包括绘图)

今天写一篇利用R语言,针对面板数据的简单分析与绘图。让我们直接开始把。

一、数据准备

这次的示例数据非常简单,只有一个shp格式的美国区县矢量数据,我们在QGIS中打开数据查看一下它的属性表。事实上我们需要的数据都在属性表的字段中。

二、开始分析

1、引入必要的包,将本地的数据导入,查看数据是否正确。进行简单可视化。

R 复制代码
library(sf)
library(tmap)

shp <- st_read("G:/Maping/demo/data/data/USA_data/ncovr/NAT.shp")

head(shp)

数据当中"UE60", "UE70", "UE80", "UE90"字段分别表示1960,1970,1980,1990年的美国各区县的失业率。下面我们别将各年份的数据可视化出来。

R 复制代码
ue60 = tm_shape(shp) +
  tm_polygons("UE60", palette = "Reds", title = "1960 Unemployment Rate") +
  tm_compass(position = c(0.8, 0.86)) +
  tm_scale_bar(position = c(0.77,0.06), breaks = c(0,500,1000)) +
  tm_layout(legend.title.size = 0.8)
ue60

#如果想保存到本地,运行下面这句话就行了
tmap_save(ue60, "G:/Maping/ue60.png", dpi = 300)

同理,我们只要修改字段,就可以绘制不同年份的美国失业率地图了。我们也可以运用之前文章中提到的绘制组图的方法将他们一起绘制。绘制组图教程。如下:

2、计算新的字段变化率幅度,并且可视化出来。

这个其实很简单,就是使用UE90-UE60就好了。代码如下:

R 复制代码
#添加变化率字段
shp$Change_6090 <- shp$UE90 - shp$UE60
change = tm_shape(shp) +
  tm_polygons("Change_6090", palette = "-RdYlBu", title = "Legend") +
  tm_layout(
    main.title = "Change in Unemployment Rate (1960-1990)",  # 添加标题
    main.title.position = "center",                        # 标题居中
    main.title.size = 1.5,
    legend.position = c(0.86,0.01)
  )
change          
tmap_save(change, "G:/Maping/change60_90.png", dpi = 300)

3、进行全局空间自相关分析,计算Moran's I指数

我们还可以进一步的做分析,通过计算四个年份的失业率的均值,对失业率的数据进行空间自相关分析。代码如下:

R 复制代码
library(spdep)

shp$UEmean <- rowMeans(st_drop_geometry(shp)[, c("UE60", "UE70", "UE80", "UE90")], na.rm = TRUE)
nb <- poly2nb(shp) # 创建邻接关系
lw <- nb2listw(nb, style = "W") # 权重矩阵
moran <- moran.test(shp$UEmean, lw)
print(moran)

我把结果贴出来:

4、热点分析,进行可视化

这里我们可以识别高失业率或低失业率的热点区域,代码如下:

R 复制代码
# 热点分析
hotspot <- localG(shp$UEmean, lw)

# 将热点分析结果添加到数据
shp$hotspot <- hotspot

# 绘制热点分析结果
hot = tm_shape(shp) +
  tm_polygons("hotspot", palette = "-RdYlBu", title = " ") +
  tm_compass(position = c(0.8, 0.86)) +
  tm_scale_bar(position = c(0.77,0.06), breaks = c(0,500,1000)) +
  tm_layout(
    main.title = "Hotspot Analysis)",  # 添加标题
    main.title.position = "center",                        # 标题居中
    main.title.size = 1.5,
    legend.text.size = 0.8
  )
tmap_save(hot, "G:/Maping/hotmean.png", dpi = 300)

以上就是全部内容了谢谢你的支持,我是加拿大一枝黄花。

相关推荐
weixin_4407305014 小时前
迭代器Iterator(列表生成器、可迭代的如何生成迭代器)
开发语言·python
朝朝辞暮i15 小时前
C++ 第 31C 课:Subscriber 到底是什么
开发语言·c++·算法
weixin_4407305015 小时前
内置函数、json文本、pickle二进制
开发语言·python·json
殷色玫瑰15 小时前
C++ string类详解:常用接口、字符串操作与模拟实现
java·linux·c语言·开发语言·数据结构·c++
李游Leo15 小时前
HarmonyOS 7 + Spatial Recon Kit-C++:3DGS 高斯参数的非有限值隔离与可渲染性门禁【鸿蒙心迹】
开发语言·c++·3d·harmonyos
时间的拾荒人16 小时前
Qt 文件操作详解:从基础类到读写实战
开发语言·qt·面试
Wang's Blog16 小时前
Java 项目实战: 外卖平台优化-YApi接口管理平台与文档导入导出
java·开发语言·yapi
jimy116 小时前
基类没有虚析构函数,基类指针删除派生类对象,行为是未定义的
开发语言·c++
迅猛龙办公室16 小时前
python获取星期字符串
开发语言·python
泡海椒17 小时前
JQuick-Excel dateFormat 转换实战:日期值与 FORMAT 显示格式的边界
开发语言·python·excel