当前位置: 首页 > news >正文

时空自回归模型(STAR)及 Stata 具体操作步骤


 

目录

一、引言

二、文献综述

三、理论原理

四、实证模型

五、稳健性检验

六、程序代码及解释

附录

数据预处理

生成时空权重矩阵


一、引言

时空自回归模型(Spatial-Temporal Autoregressive Model,简称 STAR)在分析具有时空特征的数据时具有重要的应用价值。它能够捕捉到变量在时间和空间维度上的相互关系和动态变化。近年来,该模型在经济学、地理学、环境科学等领域得到了广泛的应用。

二、文献综述

在经济学领域,Anselin(1988)率先将空间计量方法引入经济研究,为后续时空自回归模型的发展奠定了基础。此后,LeSage 和 Pace(2009)运用 STAR 模型深入探讨了区域经济增长的协同效应和扩散机制,发现经济发展水平相近的地区在经济增长上存在显著的正向空间溢出效应,并且这种效应在时间上具有一定的持续性。Elhorst(2010)通过构建时空自回归模型,研究了产业结构调整对区域经济增长的影响,结果表明产业结构的优化升级不仅对本地经济增长有促进作用,还通过空间关联对周边地区的经济增长产生影响。

在地理学领域,Getis 和 Ord(1992)利用空间自相关分析方法为研究地理现象的时空动态提供了重要思路。Tobler(1970)提出的地理学第一定律也为 STAR 模型的应用提供了理论支撑。此后,Fotheringham 等(2000)借助 STAR 模型探讨了城市扩张的时空模式,揭示了城市发展在空间上的集聚和扩散特征,以及时间上的阶段性变化。

在环境科学方面,Chowdhury 和 Moran(2013)通过 STAR 模型研究了大气污染物浓度的时空分布,发现污染源的分布和气象条件在空间和时间上共同影响着污染物的扩散和浓度变化。Wang 等(2015)应用 STAR 模型分析了水体污染的时空动态,揭示了河流、湖泊等水体的污染传播路径和时间变化趋势。

综上所述,时空自回归模型在多个学科领域都取得了丰富的研究成果,为深入理解各种时空现象的内在机制和规律提供了重要的方法和手段。

三、理论原理

时空自回归模型(STAR)是一种融合了时间序列自回归和空间相关性的统计模型。它的核心思想是假设变量在时间和空间上都存在一定的依赖关系。

在时间维度上,类似于传统的自回归模型(AR),当前时刻的变量值受到过去时刻变量值的影响。例如,如果我们研究的是某地区的气温变化,今天的气温可能与昨天、前天的气温存在线性关系。

在空间维度上,考虑到地理位置的邻近性或其他空间关系,一个位置的变量值可能受到其相邻位置变量值的影响。以城市房价为例,一个城市的房价可能会受到周边城市房价的影响。

四、实证模型

通过构建这样的实证模型,我们能够深入探究各个因素对犯罪率时空变化的影响机制,为制定有效的治安政策和城市规划提供科学依据。

五、稳健性检验

为了验证模型的稳健性,可以通过改变样本范围、空间权重矩阵的定义或者添加控制变量等方式进行检验。

六、程序代码及解释

// 导入所需的 Stata 命令包
ssc install spatreg// 导入数据
import delimited "your_data.csv", clear// 生成空间权重矩阵
spatwmat using "your_weight_matrix.dta", name(W) standardize// 定义被解释变量和解释变量
gen y = // 具体的生成被解释变量的表达式
gen x1 = // 具体的生成解释变量 1 的表达式
gen x2 = // 具体的生成解释变量 2 的表达式
gen x3 = // 具体的生成解释变量 3 的表达式// 估计 STAR 模型
spatreg y x1 x2 x3 L.y, wmat(W) model(star)// 查看模型的估计结果
estimates table// 进行模型的诊断和检验
// 计算方差膨胀因子(VIF)以检查多重共线性
estat vif// 进行残差的正态性检验
sktest// 绘制残差图
rvfplot// 进行预测
predict y_pred, xb// 比较预测值和实际值
graph twoway (scatter y y_pred)

上述代码中:

  • ssc install spatreg:安装用于处理空间回归的命令包 spatreg 。
  • import delimited:用于导入数据文件,数据可以是 CSV 格式。
  • spatwmat using:从指定的数据文件中读取并生成空间权重矩阵,并进行标准化处理。
  • gen 命令用于生成新的变量。
  • spatreg 命令用于估计时空自回归模型,指定了被解释变量、解释变量、空间权重矩阵和模型类型。
  • estimates table 展示模型的估计结果,包括系数、标准误等。
  • estat vif 计算方差膨胀因子,用于判断解释变量之间是否存在严重的多重共线性。
  • sktest 对残差进行正态性检验。
  • rvfplot 绘制残差图,用于直观检查残差的分布情况。
  • predict 命令用于进行预测,生成预测值。
  • graph twoway 绘制实际值和预测值的散点图,以比较两者的关系。

七、代码运行结果

运行上述代码后,会得到一系列结果:

  1. estimates table 会给出模型中各个变量的系数估计值、标准误、t 值和 p 值等。通过 p 值可以判断变量的显著性。
  2. estat vif 的结果中,如果方差膨胀因子较大(通常大于 10),则提示可能存在多重共线性问题。
  3. sktest 的结果中,如果 p 值大于给定的显著性水平(如 0.05),则不能拒绝残差服从正态分布的原假设。
  4. 残差图可以帮助判断残差是否具有异方差性、自相关性等问题。
  5. 实际值和预测值的散点图可以直观地比较两者的一致性。

 

附录

数据预处理

第一步:进行数据预处理,包括主要解释变量和被解释变量的对数化处理、以及生成年份和组别的虚拟变量;

*Loading the data base
use "Transaction-STExample.dta"*Generating temporal (continuous) variable
quietly generate date = 365*(year - 1990) + 31*(month - 1) + day
sort date   /*Chronologically order data*/*Generating coordinates in km (instead of meters)
*(eliminating scale problem for building weights)
quietly generate xc = XMTM/1000
quietly generate yc = YMTM/1000*Generating dependent variable
quietly generate log_price    = log(saleprice)/*Generating independent variables*/**Generating group of independent dummy variables
tab quality, gen(QIndex)
tab location, gen(Sfixed)*Generating time fixed effects (annual dummy variables) 
quietly generate d91 = (year==1991)
quietly generate d92 = (year==1992)
quietly generate d93 = (year==1993)
quietly generate d94 = (year==1994)
quietly generate d95 = (year==1995)*Applying mathematical transformation on independent variables
quietly generate log_livearea = log(livearea)
quietly generate log_age = log(age)

生成时空权重矩阵

虽然 Stata 的 spmatrix create 或 spmatrix 命令可以直接根据地理坐标创建空间权重矩阵,但是这些模块通常依赖于单一的空间关系范式,即距离的倒数。此外,该命令是基于循环函数的,较为耗费时间和内存。因此,Dubé 和 Legros 利用 Stata 中的 Mata 模块计算。该模块允许研究者在 Stata 中自定义地创建并导出生成的矩阵,从而用于空间自相关指数的计算或空间和时空自回归模型的估计。事实上,在时空建模中能够灵活地生成自己所需要的空间权重矩阵特别有用。

*Build spatio-temporally lagged variablesquietly generate WTprice = .mata /*1.导入用于计算的列向量 Import the main vectors used for calculations*/N  = st_nobs()yn = st_data(.,"log_price")    /*Vector of dependent variables*/XC = st_data(.,"xc")           /*Vector of X coordinates*/YC = st_data(.,"yc")           /*Vector of Y coordinates*/TC = st_data(.,"date")         /*Vector of temporal coordinates*//*2.生成空间和时间距离矩阵 Generate the spatial and temporal matrices*/XX = (XC*J(N,1,1)') - (J(N,1,1)*XC')  /*Distance between X coordinates*/YY = (YC*J(N,1,1)') - (J(N,1,1)*YC')  /*Distance between Y coordinates*/ZZ = (TC*J(N,1,1)') - (J(N,1,1)*TC')  /*Eucledian distance between transactions*/DD = sqrt((XX:*XX) + (YY:*YY))        /*Distance matrix*/SO = exp(-DD)-I(N)         /*Spatial weight matrix (negative exponential transformation)*/TT = exp(-abs(ZZ))         /*Temporal weight matrix (negative exponential transformation)*//*3.对于时空关系加以限制 Impose restrictions on spatial and temporal relations*/DK = ((DD*J(N,1,1)):/N)*J(N,1,1)'      /*Estimate & attribute to each observtion the mean distance of all observations*/T1 = (ZZ:<=65):*(ZZ:>25)   /*Define the temporal "past" window (in this case between 25 and 65 days)*//*4.生成空间和时空权重矩阵 Generating spatial and spatio-temporal weights*/ ST = (DD:<=DK):*SO         /*Truncated spatial weights matrix*/TU = T1:*TT                /*Temporal weights within temporal "past" window*/Wb = ST:*TU                /*Lower triangular spatio-temporal weight matrix*//*5.行标准化 Standardizing spatio-temporal weight matrix*/SL  = (Wb*J(N,1,1))*J(N,1,1)' /*Row sums*/WSb = Wb:/(SL + (SL:==0))     /*Row standardization*//*6.生成时空滞后项 Generating the spatiotemporally dynamic depedent variable*/Wyn = WSb*yn			     /*Creating spatio-temporally lagged dependent variable (exogenous variable)*/st_store(.,("WTprice"),(Wyn))
end*Eliminating observations having no spatio-temporal neighbours
drop if WTprice==0
clear mata

 

 

*Building spatial block-diagonal weights matrixmata /*1. 导入用于计算的列向量 Import the main vectors used for calculations*/N  = st_nobs()yn = st_data(.,"log_price")    /*Vector of dependent variables*/XC = st_data(.,"xc")           /*Vector of X coordinates*/YC = st_data(.,"yc")           /*Vector of Y coordinates*/TC = st_data(.,"date")         /*Vector of temporal coordinates*//* 2. 生成空间和时间距离矩阵 Generate the spatial and temporal matrices*/XX = (XC*J(N,1,1)') - (J(N,1,1)*XC')  /*Distance between X coordinates*/YY = (YC*J(N,1,1)') - (J(N,1,1)*YC')  /*Distance abetween Y coordinates*/ZZ = (TC*J(N,1,1)') - (J(N,1,1)*TC')  /*Eucledian distance between transactions*/DD = sqrt((XX:*XX) + (YY:*YY))        /*Distance matrix*/SO = exp(-DD)-I(N)         /*Spatial weight matrix (negative exponential transformation)*/TT = exp(-abs(ZZ))         /*Temporal weight matrix (negative exponential transformation)*//* 3. 对于时空关系加以限制 Impose restrictions on spatial and temporal relations*/DK = ((DD*J(N,1,1)):/N)*J(N,1,1)'      /*Estimate & attribute to each observtion the mean distance of all observations*/TO = (ZZ:<=25):*(ZZ:>=-15) /*Define the "present" temporal window or contemporaneous period*//*4. 构建当期的空间权重矩阵 Creating contemporaneous spatial weight matrix*/TO = TO:*TTSb = SO:*TO/*5. 行标准化 Row-standardizing the contemporaneous weight matrix*/SL  = (Sb*J(N,1,1))*J(N,1,1)' /*Row sums*/SSb = Sb:/SL                  /*Row standardization*//*6. 导出 Exporting the contemporaneous weight matrix*/st_matrix("Sb",Sb)
end

代码解析

 

Stata空间计量:STAR-时空自回归模型 (qq.com)icon-default.png?t=N7T8https://mp.weixin.qq.com/s?__biz=MzU5MjYxNTgwMg==&mid=2247497881&idx=1&sn=c3470d407cebe4a33988caece77fd49f&chksm=fe1fb88cc968319abe2ab5e743413d2aab6cb950d6c154db63fc1a83ee0a79cba35e2d7b4012#rd

http://www.lryc.cn/news/425466.html

相关文章:

  • SpringCloud集成XXL-JOB定时任务
  • 《财经网》揭秘格行销量第一的秘籍!年销百万台,获千万级网红推荐!
  • Java 中 Integer 类的比较行为
  • C# 通过反射(Reflection)调用不同名泛型方法
  • Spring Boot整合Drools入门:实现订单积分规则
  • 【C语言】文件操作函数详解
  • Java 垃圾回收,看一遍就懂
  • 手把手教你CNVD漏洞挖掘 + 资产收集
  • 华为云低代码AstroZero技巧教学1:表格的超链接赋能
  • https握手过程详解
  • Lesson 63 Thank you, doctor
  • 使用python和matlab实现BP神经网络算法的分析比较
  • 智慧卫生间环境传感器有哪些?智慧卫生间的特点@卓振思众
  • 智能分班结果自动发布系统
  • vue 后台管理 指定项目别名
  • 【Python机器学习】FP-growth算法——构建FP树
  • JAVA itextpdf 段落自动分页指定固定行距打印
  • 基于SpringBoot+Vue的周边游平台个人管理模块的设计与实现
  • 开源数据库同步工具monstache
  • Ubuntu连接GitHub
  • 微信支付流程
  • LVS理论知识
  • uniapp接口请求this.$request
  • vulnhub靶机 W34KN3SS(渗透测试详解)
  • 2024年8月16日嵌入式学习
  • vue+ckEditor5 复制粘贴wold文字+图片并保存格式
  • redis列表若干记录
  • 固态硬盘用mbr还是GPT?固态硬盘分区类型用mbr还是GPT分析
  • http/sse/websocket 三大协议演化历史以及 sse协议下 node.js express 服务实现打字机案例 负载均衡下的广播实现机制
  • 智能时代新宠:2024年录音转文字软件