Bootstrap

基于python的时空地理加权回归(GTWR)模型

一、时空地理加权回归(GTWR)模型

时空地理加权回归(GTWR)模型是由美国科罗拉多州立大学的Andy Liaw、Stanley A. Fiel和Michael E. Bock于2008年提出的一种高级空间统计分析方法。它是在传统地理加权回归(GWR)模型的基础上发展起来的,通过结合时间和空间两个维度,提供了一种更为灵活和精确的时空数据分析手段。

  1. 背景和发展
    传统的地理加权回归(GWR)模型主要关注地理空间上的数据变化,通过引入地理位置的权重,来刻画不同地理位置下变量之间的关系。然而,随着时间维度在数据分析中的重要性逐渐凸显,仅依赖空间维度的GWR模型显然不足以应对复杂的时空数据。因此,Andy Liaw、Stanley A. Fiel和Michael E. Bock三位学者提出了GTWR模型,将时间和空间两个维度结合起来,使得模型能够同时考虑地理位置和时间的影响。

  2. 基本原理
    GTWR模型的核心思想是将时间和空间作为权重函数的输入,通过动态调整权重,来反映时空数据中不同位置和不同时刻的变化。具体而言,GTWR模型在进行回归分析时,不仅考虑观测点的地理距离,还考虑观测点的时间距离。这样,模型在估计参数时能够更加准确地反映出时空数据的局部特征。

  3. 模型优势
    更高的精确度:GTWR模型通过结合时间和空间两个维度,能够更精确地捕捉数据中的时空异质性,提供更为准确的回归结果。
    动态权重调整:与传统GWR模型不同,GTWR模型能够动态调整权重函数,使得模型在不同时空下的表现更为灵活和贴合实际。
    广泛的应用场景:GTWR模型适用于各类时空数据分析,如环境科学、城市规划、流行病学等领域,能够帮助研究人员更好地理解和预测时空数据的变化。

  4. 应用实例

例如,在环境科学中,GTWR模型可以用于分析空气污染数据,评估不同时空下污染物浓度与气象条件、交通流量等变量之间的关系。通过GTWR模型,研究人员能够识别出污染源的时空分布特征,为制定污染控制策略提供科学依据。

二、多尺度时空地理加权回归(MGTWR)模型

MGTWR模型在GWR和GTWR的基础上进一步引入多尺度概念,允许模型参数在不同的空间和时间尺度上变化。这样可以更精确地捕捉和分析空间和时间异质性对现象的影响。MGTWR模型通过构建独立的空间和时间权重函数,使得不同解释变量在不同的空间和时间尺度上产生不同的影响。
特点:
尺度差异化:MGTWR模型允许不同解释变量具有不同的空间和时间尺度效应,在不同的地理邻域大小或时间段内对因变量产生不同程度的影响。
局部参数估计:MGTWR模型在每个观测点处进行局部回归参数的估计,不仅考虑了地理位置的变化,还包含了时间维度以及各变量所对应的特定空间和时间尺度。
多尺度权重函数:对于每个解释变量,MGTWR模型构建了独立的空间和时间权重函数,从而提供更精确、更具针对性的分析结果。
实例应用:
在社会经济研究中,MGTWR模型可用于分析房价数据,评估不同时空下经济因素、地理位置、交通便利性等变量对房价的影响。通过MGTWR模型,研究人员能够揭示出不同因素在不同时空尺度上的影响力,为制定政策提供科学依据。

联系和区别
GTWR模型结合时间和空间两个维度,通过引入时间和空间权重函数,动态调整模型参数,以反映不同时空点的数据变化。该模型能够在每个观测点处根据其时间和地理位置来估计回归参数。通过考虑时间和空间两个维度的权重,GTWR能够更准确地捕捉数据中的时空异质性,适应不同时空范围内数据的变化。能够捕捉数据中的时空变化和异质性。适用于时间和空间变化较为显著的研究场景。
MGTWR模型引入多尺度概念,允许不同解释变量在不同的空间和时间尺度上变化。这意味着MGTWR不仅考虑了时空异质性,还允许每个解释变量在不同尺度下对因变量产生不同的影响。对于每个解释变量,MGTWR构建了独立的空间和时间权重函数,从而提供更精确、更具针对性的分析结果。
允许不同解释变量在不同的空间和时间尺度上产生不同的效应。更精确地捕捉和分析空间和时间异质性对现象的影响。适用于具有多尺度特性的复杂数据分析。

三、选择使用GTWR还是MGTWR

使用GTWR模型:

当研究数据的空间和时间变化较为显著,且不需要考虑多尺度效应时,GTWR模型是一个合适的选择。
例如,在研究空气污染的时空变化时,GTWR模型能够捕捉不同时间和地点的污染物浓度变化。

使用MGTWR模型:

当研究数据中存在多尺度效应,即不同解释变量在不同的空间和时间尺度上产生不同的影响时,MGTWR模型更为适用。
例如,在研究社会经济现象(如房价、失业率等)时,不同变量(如收入水平、教育程度、地理位置)可能在不同的时间和空间尺度上对结果产生不同的影响,这时MGTWR模型能够提供更精确的分析。

代码

!pip install mgtwr
import pandas as pd
import geopandas as gpd
import matplotlib.pyplot as plt
import numpy as np
from mgtwr.model import GTWR, MGTWR,GTWRResults
from mgtwr.sel import SearchGTWRParameter
from mgtwr.model import GTWR
#GTWR
data = pd.read_csv(r'/home/mw/input/1232464/example.csv')
coords = data[['longitude', 'latitude']]
t = data[['t']]
X = data[['x1', 'x2']]#自变量
y = data[['y']]#因变量
##SearchGTWRParameter:用于搜索 GTWR 模型的最佳参数。
##coords, t, X, y:分别是空间位置、时间变量、自变量和因变量。
##kernel='gaussian':使用高斯核函数。
##fixed=True:使用固定带宽。
##tau_max=20:搜索的最大时间延迟。
##verbose=True:显示搜索过程的详细信息。
##time_cost=True:显示搜索所需时间。
##GTWR:创建 GTWR 模型实例。
##fit():拟合模型。
##gtwr.R2:输出模型的判定系数 R2R2,表示模型的解释力。
##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)
#SearchMGTWRParameter:用于搜索 MGTWR 模型的多尺度最佳参数。
#multi_bw_min=[0.1]:最小带宽。
#tol_multi=1.0e-4:多尺度带宽搜索的容差。
#其他参数与 GTWR 的搜索参数相同。


;