【时空面板】分别使用ArcGis、R语言、Python进行时空面板数据的OLS、TWR、GWR、GTWR、MGTWR模型

文摘   2025-01-19 01:45   山东  
什么是时空面板数据?

‌时空面板数据‌是指同时具有时间和空间维度的数据,它结合了时间序列数据和空间数据的特点。时空面板数据不仅记录了观测对象在不同时间的变化情况,还考虑了地理位置的影响。

定义和特性:

时空面板数据是时间序列数据和截面数据(或空间数据)的结合体。它包含了多个观测对象在不同时间和空间上的数据,具有时间和空间的双重维度。这种数据类型在地理信息系统(GIS)和遥感等领域中尤为重要,因为它能够描述地球环境中地物要素的信息变化‌。

应用场景和重要性:

时空面板数据在多个领域有广泛应用,特别是在环境科学、气象学、城市规划、交通流量分析等领域。例如:

‌1.环境科学‌:用于监测和分析气候变化、环境污染等。

‌2.气象学‌:用于预测天气变化和气候变化趋势。

‌3.城市规划‌:用于评估城市发展对环境的影响。

‌4.交通流量分析‌:用于优化交通管理和减少拥堵。

具体例子:

一个具体的例子是城市空气质量监测数据,这些数据不仅记录了不同时间点的空气质量指数,还记录了不同地理位置的空气质量变化情况。通过这种时空面板数据分析,可以更好地理解空气质量的变化规律和影响因素‌。


时空面板数据分析在医疗研究中的应用

‌时空面板数据分析在医疗中的应用主要包括以下几个方面‌:

‌疾病预测和预警‌:通过时空分析,可以针对人群特征、环境变化等因素,对疾病的发展趋势进行预测和预警,提高疾病管理和防治水平‌。

‌1.医疗资源调配‌:通过时空分析,评估医疗资源的供需状况,根据不同地区和人群的医疗需求,进行医疗资源的合理分配‌。

2‌.医疗质量评估‌:通过时空分析,对医疗机构的服务水平、医疗技术水平等进行评估,提高医疗质量和安全水平‌。

3‌.医疗健康管理‌:通过时空分析,对个体、群体的医疗健康状况进行监测和管理,实现个性化医疗健康管理服务‌。

4‌.医学影像处理‌:遥感技术在医学影像处理中也有广泛应用。例如,武汉大学与人民医院合作研发的新冠肺炎CT影像智能诊断系统,通过遥感技术提高了新冠肺炎筛查速度与检测精度‌。

5‌.精准医疗‌:时空组学技术通过采集并分析细胞在空间上的分布及其随时间的变化,揭示疾病的复杂网络和动态特性。这种数据的整合有助于早期识别导致疾病发展的关键因子,从而制订个性化的治疗方案‌。


疾病的发展趋势预测和预警‌

‌疾病的发展趋势预测和预警‌是现代医学研究的重要课题,旨在通过分析历史数据和现有信息,预测疾病的发展趋势,并采取相应的预防和控制措施。以下是几种主要的疾病发展趋势预测和预警方法及其应用场景:

疾病发展趋势预测方法:

‌1.数据整合与标准化‌:通过制定统一标准,整合来自不同渠道的数据,确保分析的准确性和可靠性‌。

‌2.智能预警模型‌:利用AI和机器学习构建高效的预警系统,从大量数据中识别疫情趋势和异常,提供及时预警‌。

‌3.实时数据分析‌:借助高性能计算和分布式处理技术,实现快速响应,保障疫情信息的即时传递和预警‌。

‌4.数据可视化‌:以直观的方式展示分析结果,辅助决策者迅速理解疫情状况,并支持个性化的数据探索‌。

5‌.跨区域协同‌:建立跨国界、跨部门的数据共享机制,增强对跨境传染病的预防和控制能力‌。

疾病预警系统应用场景:

‌1.传染病监测预警‌:通过多点多源数据,制定符合传染病疾病特点的监测指标及监测渠道,利用先进的疾病预警模型,打造全球、全国、地区视角下的立体化传染病多点触发监测预警体系。该体系能够实现全球/国内/地区传染病事件监测、风险总览、风险预警分析、多点触发监测、应急指挥调度等功能‌。

‌2.急性呼吸道传染病监测‌:依托实时医疗大数据监测平台,动态监测传染病流行特征,及时预警重大呼吸道传染病,有助于医疗机构及时调配医疗资源。通过医疗机构间的数据共享,将复杂的医疗数据标准化处理,形成可视化图表,精准抓取区域内的关键数据,并实时形成可视化内容‌。

疾病发展趋势预测的重要性:

1‌.人口老龄化‌:全球人口老龄化趋势显著,慢性病发病率不断上升,包括心血管疾病、糖尿病、癌症等。这些疾病不仅给患者带来痛苦,也给社会带来沉重的经济负担‌。

‌2.传染病防控‌:新发突发传染病出现频率增加,防控难度大。全球化加速人员流动频繁,跨国传播风险增加,国际合作防控至关重要‌。

‌3.精神疾病‌:随着社会压力增加和生活节奏加快,精神疾病的发病率呈上升趋势,给个人、家庭和社会带来沉重负担‌。

‌4.肿瘤‌:全球范围内肿瘤发病率持续上升,成为重要的公共卫生问题。肺癌、胃癌、肝癌等常见肿瘤发病率不断增加,给患者及其家庭带来沉重负担‌。

‌5.癌症‌:未来全球癌症病例数与死亡人数将显著增长,主要危险因素包括人口老龄化、环境污染、吸烟与饮酒习惯等。中国作为全球癌症病例数与死亡人数最多的国家,癌症负担尤为严峻‌。


OLS、TWR、GWR、GTWR、MGTWR模型简要介绍

OLS(普通最小二乘法):

含义:是一种基本的线性回归方法,通过最小化因变量的观测值与模型预测值之间的残差平方和,来估计线性回归模型的参数。

特点:假设数据在空间和时间上是独立同分布的,不考虑数据的空间或时间相关性。优点是计算简单、理论成熟;缺点是当数据存在空间自相关或异质性时,估计结果可能不准确、不稳健。

应用:广泛应用于经济、社会等领域的数据分析,用于探究变量之间的线性关系,如分析居民收入与消费的关系。

TWR(时空加权回归):

含义:是在回归分析中同时考虑时间和空间因素对因变量影响的方法,通过对不同时间和空间位置的数据赋予不同权重来进行回归估计。

特点:能捕捉到数据在时空维度上的变化特征,考虑了观测值在时空上的非独立性。但权重函数的选择和参数估计相对复杂。

应用:常用于分析具有时空特性的数据,如研究不同地区不同时间的房价变化、疾病传播的时空规律等。

GWR(地理加权回归):

含义:是一种空间局部回归方法,允许回归系数在空间上存在变化,针对每个空间位置,利用其邻域内的数据来估计回归系数。

特点:能反映空间数据的非平稳性,即变量之间的关系在不同空间位置可能不同。可有效处理空间异质性问题,但计算量较大,且对空间权重矩阵的选择较为敏感。

应用:在城市规划、生态学等领域应用广泛,如研究不同区域的土地利用与经济发展的关系。

GTWR(地理时空加权回归):

含义:是 GWR 在时空维度上的扩展,同时考虑了空间和时间的非平稳性,在不同的时空位置上,回归系数会随空间和时间变化而变化。

特点:综合了空间和时间信息,能更精确地描述数据的时空变化特征。但模型复杂度高,需要大量的时空数据支持,估计和解释难度较大。

应用:适用于分析时空动态变化明显的数据,如分析不同城市不同时期的空气质量影响因素。

MGTWR(多尺度地理时空加权回归):

含义:在 GTWR 基础上,进一步考虑了不同时空尺度下变量关系的变化,可在多个尺度上对时空数据进行分析。

特点:能够自适应地选择最优尺度来刻画时空关系,更全面地捕捉数据在不同尺度下的特征。但计算成本更高,对数据质量和计算资源要求更高。

应用:常用于复杂的时空数据分析场景,如研究全球气候变化在不同区域、不同时间尺度上对生态系统的影响。


ArcGis、R语言、Python操作简介

ArcGIS:

1.加载数据:将时空面板数据加载到 ArcGIS 中,确保数据包含空间坐标及时间等相关字段。

2.TWR 模型:利用 ArcGIS 的 Geostatistical Analyst 工具,在考虑时间因素基础上,基于空间位置进行加权回归分析。

3.GWR 模型:可通过 ArcGIS 的扩展模块如 GeoDa 等,运行 GWR 工具,设置空间权重矩阵等参数,对空间数据进行局部回归分析。

4.GTWR 模型:需结合 ArcGIS 的空间分析和时间序列分析功能,综合考虑空间和时间维度进行加权回归设置和计算。

5.MGTWR 模型:利用 ArcGIS 的多尺度分析功能,配合相关扩展工具,在不同空间和时间尺度上进行模型运算。

R 语言:

1.加载数据与包:使用read.csv等函数读取时空面板数据,加载sp、gstat、GWmodel等相关包。

2.TWR 模型:通过gstat包中的函数,构建考虑时间和空间因素的变差函数,进行时空加权回归估计。

3.GWR 模型:利用GWmodel包中的gwr函数,输入空间坐标和变量数据,设置带宽等参数进行 GWR 模型拟合。

4.GTWR 模型:结合spacetime包处理时空数据,在GWmodel基础上扩展,加入时间维度的处理进行 GTWR 模型构建。

5.MGTWR 模型:可通过编写自定义函数,结合GWmodel等包,在不同尺度参数下循环计算,实现 MGTWR 模型估计。

Python:

1.数据读取与库导入:使用pandas库的read_csv函数读取数据,导入geopandas、libpysal、mgwr等库。

2.TWR 模型:借助libpysal库的相关函数,定义时空权重矩阵,使用statsmodels库进行加权回归分析来实现 TWR 模型。

3.GWR 模型:利用gwr模块中的GWR类,输入空间坐标和变量数据,设置带宽等参数拟合 GWR 模型。

4.GTWR 模型:结合geopandas和pandas处理时空数据,使用gtwr库中的GTWR类构建 GTWR 模型,考虑时空交互作用。

5.MGTWR 模型:通过mgwr库中的MGWR类,设置多尺度参数,对时空面板数据进行 MGTWR 模型估计。




首先我们演示ArcGis进行OLS、TWR、GWR、GTWR、MGTWR模型运算。我们仍以“医学统计数据分析工作室”常用地图演示的“王者峡谷数据集为例”。







我们先打开属性表,查看具体的多边形数量以及是否有我们需要的经纬度坐标值,若无,可以通过属性表添加字段、计算几何分别添加X数据及Y数据。







然后导出地图文件的属性表,用Excel打开另存,用于时空面板数据整理作为模板。我们可以看到有54个多边形组成,然后我们将需要分析的数据分别整理到Excel表中,形成一个有时间、空间、自变量、因变量的多维度时空面板数据库。

例如下面的12个月的、54个区域的,包括三种疾病发病数发病率为因变量,气候、社会经济、空气质量多维度自变量的数据库。








我们首先使用ArcGis进行相关分析。在ArcMap自带的工具箱-空间统计工具、空间关系建模中、可以进行普通最小二乘法、地理加权回归的操作。








运行可得到如下结果:方程中变量、效应值、系数、残差、AICc/R2/调整后/R2,等输出要素类‌:这是GWR分析的结果,包含了每个要素的局部回归系数和其他统计信息。这些信息可以用于进一步的分析和可视化。

系数栅格表面‌:如果选择了生成系数栅格表面,GWR工具会为模型截距和每个解释变量创建栅格表面。这些栅格表面展示了局部模型参数的空间分布,帮助理解参数在不同地理位置的变化情况‌。

整体模型结果的消息窗口报告‌:这个报告包含了GWR分析的统计汇总报表,包括带宽或邻居的选择、模型拟合度等重要信息‌。

预测输出要素类‌:基于GWR模型生成的预测结果,可以用于进一步的分析或决策支持‌。












ArcGis做GTWR(地理时空加权回归)模型的话,则需要借助一个外部插件,是香港中文大学(The Chinese University of Hong Kong的黄波教授研发的GTWR_AddIn插件,安装简单,功能齐全,欢迎使用该插件,黄波教授老师的research gate 上会定期更新最新的版本,并且不收取任何使用费用。如过期了一般1个月内就会更新。

下载地址:

http://www.grm.cuhk.edu.hk/~huangbo/GTWR/GTWR_AddIn.rar

安装的话,直接双击addin,即可在ArcMap中使用。








打开ArcMAP,右键单击工具栏上的空白处。确保选中了名为“地理和时间加权回归”的项目。

输入数据,选择自变量、因变量、时间、经纬度等数据。

然后分别可以进行以下各种模型的拟合

Ordinary Least Squares (OLS)

GWR(空间加权回归)

TWR(时间加权回归)

GTWR(时空地理加权回归)
得到回归分析所需结果。









那么我们在R语言中,则需要借助GWmodel包进行GWR、GTWR等模型的操作。

#环境整理

rm(list=ls()) #移除所有变量数据

install.packages("") #安装包

library() #加载包


#1.数据及包准备

#读取Excel数据

#install.packages("readxl")

library(readxl) #加载包

gwtrdata <- read_excel("C:/Users/hyy/Desktop/

     峡谷地图时空面板数据库.xlsx")

str(gwtrdata)

查看数据结构








我们可以先进行相关型矩阵及相关系数热图的绘制。

#相关性分析及热图绘制

library(ggplot2)

library(tidyverse)

gwtrdata$月发病率<- as.numeric(gwtrdata$月发病率)

gdata <- gwtrdata[5:27]

# 计算相关性矩阵

correlation_matrix <- cor(gdata,method = "pearson", use = "complete.obs")

correlation_matrix

library(writexl) #加载包

write_xlsx(as.data.frame(correlation_matrix), "C:/Users/hyy/Desktop/res.xlsx")

可以导出相关系数矩阵。








#绘制相关性热图

#install.packages("pheatmap")

library(pheatmap)

pheatmap::pheatmap(cor(gdata,,method = "pearson", use = "complete.obs"),

                   main = "Corr of Variables",

                   display_numbers = T,#display_number是否展示数字

                   number_color = "black",angle_col = 45)







#进行时空回归的数据准备

#install.packages("GWmodel")

library(GWmodel)

#install.packages("udunits2")

library(udunits2)

#构建dataframe

gwtrdata$X <- as.numeric(gwtrdata$X)

gwtrdata$Y <- as.numeric(gwtrdata$Y)

map =SpatialPointsDataFrame(data = gwtrdata, coords = cbind(x = gwtrdata$X, y = gwtrdata$Y))








#GWR模型

#计算带宽

bw1 = 

bw.gwr(case1~pop+income+temperature+

   precipitation+income+secondaryindustry+

    tertiaryindustry, 

             data=map, 

             approach = "cv", 

             kernel ="gaussian")

bw1








#地理加权回归计算

res<-gwr.basic(case1~pop+income+temperature +

precipitation+income+secondaryindustry+

tertiaryindustry, 

               data =map,

               bw = bw1,

               kernel ="gaussian")

res

#导出GWR模型输出的系数数据至Excel

write_xlsx(as.data.frame(res$SDF), 

"C:/Users/hyy/Desktop/gwr.xlsx")










#GTWR模型

#计算带宽

obs.tv <- as.numeric(gwtrdata$time)

bw2 = 

bw.gtwr(case1~pop+income+temperature                    +precipitation+income

     +secondaryindustry+tertiaryindustry, 

             data=map, 

             obs.tv =obs.tv ,

             approach = "cv", 

             kernel ="gaussian")

bw2








#时间地理加权回归计算

res2<-gtwr(case1~pop+income+temperature   

                +precipitation+income+secondaryindustry

+tertiaryindustry, 

               data =map,

               st.bw=bw2,

               obs.tv=obs.tv ,

               kernel ="gaussian")

res2

#导出GTWR数据

write_xlsx(as.data.frame(res2$SDF),

     "C:/Users/hyy/Desktop/gtwr.xlsx")










那么我们在Python中,则需要借助pandas库进行Excel数据的读取及操作,借助geopandas库处理时空面板数据,借助matplotlib.pyplot库进行相关可视化,借助mgtwr.model库进行GTWR、MGTWR模型的分析以及GTWRResults等结果的展示。

pandas pd
geopandas gpd
matplotlib.pyplot plt
numpy np
mgtwr.model GTWR, MGTWR,GTWRResults




#数据准备

gtwrdata = pd.read_excel(r'C:\Users\hyy\Desktop\峡谷地图时空面板数据库.xlsx')

# 查看前几行数据

print(gtwrdata.head())

#对经纬度、时间、自变量、因变量进行数据准备

coords = gtwrdata[['X', 'Y']]

t = gtwrdata[['time']]

X = gtwrdata[['pop','income','temperature',

'precipitation','income',

'secondaryindustry','tertiaryindustry']]

y = gtwrdata[['case1']]








#GTWR

from mgtwr.sel import SearchGTWRParameter

from mgtwr.model import GTWR

sel = SearchGTWRParameter(coords, t, X, y, kernel='gaussian', fixed=True)

bw, tau = sel.search(tau_max=20, verbose=True, time_cost=True)

gtwr = GTWR(coords, t, X, y, bw, tau, kernel='gaussian', fixed=True).fit()

print(gtwr.R2)

#并进行系数的可视化








#MGTWR

from mgtwr.sel import SearchMGTWRParameter

from mgtwr.model import MGTWR

sel_multi = SearchMGTWRParameter(coords, t, X, y, kernel='gaussian', fixed=True)

bws = sel_multi.search(multi_bw_min=[0.1], verbose=True, tol_multi=1.0e-4, time_cost=True)

mgtwr = MGTWR(coords, t, X, y, sel_multi, kernel='gaussian', fixed=True).fit()

print(mgtwr.R2)

#并进行系数的可视化








医学统计数据分析分享交流SPSS、R语言、Python、ArcGis、Geoda、GraphPad、数据分析图表制作等心得。承接数据分析,论文修回,医学统计,空间分析,问卷分析业务。若有投稿和数据分析代做需求,可以直接联系我,谢谢!



医学统计数据分析
分享交流SPSS、R语言、Python、ArcGis、Geoda、GraphPad、数据分析图表制作等心得。承接数据分析,论文修回,医学统计,空间分析,问卷分析业务。若有投稿和数据分析代做需求,可以直接联系我,谢谢!
 最新文章