时空自回归模型(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绘制实际值和预测值的散点图,以比较两者的关系。
七、代码运行结果
运行上述代码后,会得到一系列结果:
estimates table会给出模型中各个变量的系数估计值、标准误、t 值和 p 值等。通过 p 值可以判断变量的显著性。estat vif的结果中,如果方差膨胀因子较大(通常大于 10),则提示可能存在多重共线性问题。sktest的结果中,如果 p 值大于给定的显著性水平(如 0.05),则不能拒绝残差服从正态分布的原假设。- 残差图可以帮助判断残差是否具有异方差性、自相关性等问题。
- 实际值和预测值的散点图可以直观地比较两者的一致性。
附录
数据预处理
第一步:进行数据预处理,包括主要解释变量和被解释变量的对数化处理、以及生成年份和组别的虚拟变量;
*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)
https://mp.weixin.qq.com/s?__biz=MzU5MjYxNTgwMg==&mid=2247497881&idx=1&sn=c3470d407cebe4a33988caece77fd49f&chksm=fe1fb88cc968319abe2ab5e743413d2aab6cb950d6c154db63fc1a83ee0a79cba35e2d7b4012#rd
相关文章:
时空自回归模型(STAR)及 Stata 具体操作步骤
目录 一、引言 二、文献综述 三、理论原理 四、实证模型 五、稳健性检验 六、程序代码及解释 附录 数据预处理 生成时空权重矩阵 一、引言 时空自回归模型(Spatial-Temporal Autoregressive Model,简称 STAR)在分析具有时空特征的数…...
SpringCloud集成XXL-JOB定时任务
项目场景: XXL-JOB是一个分布式任务调度平台,它能够帮助开发者轻松地实现任务的定时执行、任务调度和任务管理 接入步骤 下载XXL-JOB压缩包 链接: xxl-job XXL-JOB做为子模块 将压缩包解压,项目二级新建目录xxl-job,放入目录…...
《财经网》揭秘格行销量第一的秘籍!年销百万台,获千万级网红推荐!
随身WiFi已成为当下网红爆款神器,却为何频频陷入用户信任的危机?低价诱惑背后的限速陷阱、流量虚标,市场看似繁华,实则暗藏玄机。然而,就在这片混沌与质疑交织的迷雾中,一个品牌悄然崛起,以惊人…...
Java 中 Integer 类的比较行为
在 Java 中,Integer 类的比较行为有其特定的规则,这些规则涉及到缓存和对象比较。让我们分析一下你提供的代码: java public class test2_4 { public static void main(String[] args){Integer a 100;Integer b 100;Integer c 1000;Int…...
C# 通过反射(Reflection)调用不同名泛型方法
在C#中,通过反射调用泛型方法时,如果方法的名称或参数类型有所不同,那么你需要根据具体的情况来构造合适的MethodInfo对象。由于你提到的是调用“不同名”的泛型方法,这意味着你需要首先确定具体要调用的方法名,然后再…...
Spring Boot整合Drools入门:实现订单积分规则
文章目录 项目结构Maven配置配置Drools订单实体类订单积分规则测试规则总结 在开发过程中,我们经常遇到需要根据业务规则来进行决策的场景。比如,电商平台可能需要根据订单金额为用户添加相应的积分。为了灵活地处理这些业务规则,我们可以借助…...
【C语言】文件操作函数详解
目录 C语言文件操作函数详解表格汇总1. fopen2. fclose3. fread4. fwrite5. fseek6. ftell7. rewind8. fprintf9. fscanf10. feof11. ferror12. clearerr13. 总结14. 附录:函数参考表15. 结束语相关文章: C语言文件操作函数详解 C语言提供了一组标准库函…...
Java 垃圾回收,看一遍就懂
了解 Java 垃圾收集的工作原理并优化应用程序中的内存使用情况。详细了解 Java 中内存管理的复杂性。 垃圾收集是一个关键过程,可以帮助任何Java 开发公司。编程语言中的这一强大功能可以巧妙地管理内存分配和释放,防止内存泄漏并优化资源利用率。它就像…...
手把手教你CNVD漏洞挖掘 + 资产收集
0x1 前言 挖掘CNVD漏洞有时候其实比一般的edusrc还好挖,但是一般要挖证书的话,还是需要花时间的,其中信息收集,公司资产确定等操作需要花费一定时间的。下面就记录下我之前跟一个师傅学习的一个垂直越权成功的CNVD漏洞通杀&#…...
华为云低代码AstroZero技巧教学1:表格的超链接赋能
在低代码AstroZero的标准页面设计和构建上,我们总是在思考如何让用户体验能够更加流畅。 为此,我们特推出低代码AstroZero技巧教学系列合集,让各位开发者能够更加方便快捷地掌握低代码AstroZero的操作技巧。 本次技巧内容: 在As…...
https握手过程详解
https握手过程详解 上一篇《HTTPS通讯全过程》中https握手过程实际上还有更多的细节,为什么会这样设计呢?是因为一开始将握手过程时,吧步骤说的太详细会导致更难理解惹。所以我就先在上一篇把部分细节忽略,把原来几步的过程先简化…...
Lesson 63 Thank you, doctor
Lesson 63 Thank you, doctor 词汇 better a. 更好的 搭配:feel better get better 感觉好些了 成语:Better late than never. 晚做总比不做好。 Half a loaf is better than no bread. 有比没有好。…...
使用python和matlab实现BP神经网络算法的分析比较
分析和比较使用Python和MATLAB实现BP神经网络算法实现的复杂度、代码可读性、库支持、性能以及应用的灵活性等。 1. BP神经网络的基本原理 BP神经网络(Back Propagation Neural Network)是一种多层前馈神经网络,通过反向传播算法来训练网络。其基本思想是利用梯度下降法,…...
智慧卫生间环境传感器有哪些?智慧卫生间的特点@卓振思众
随着科技的进步和人们对生活品质的要求不断提高,智慧卫生间作为现代化设施的代表,越来越受到关注。智慧卫生间不仅仅是在外观设计上做文章,更在于其背后强大的智能系统,特别是环境传感器的应用,让厕所的管理和使用变得…...
智能分班结果自动发布系统
新学期,校园里又将迎来一批充满活力的新生。对于老师们来说,除了准备教学计划和课程内容,还有一项看似简单却颇为繁琐的任务——发布分班。传统的分班信息发布方式,通常是老师们一个个私信给学生家长,家长们收到信息后…...
vue 后台管理 指定项目别名
越多越好 文章目录 一、指定项目路径别名二、全局loading进度条实现三、动态页面标题的实现四、全局刷新 和 全屏 一、指定项目路径别名 在 vite.config.js 里配置 import path from "path"export default defineConfig({resolve:{alias:{"~":path.resol…...
【Python机器学习】FP-growth算法——构建FP树
在第二次扫描数据集时会构建一棵FP树。为构建一棵树,需要一个容器来保存树。 创建FP树的数据结构 FP树要比书中其他树更加复杂,因此需要创建一个类来保存树的每一个节点: class treeNode:def __init__(self,nameValue,numOccur,parentNode…...
JAVA itextpdf 段落自动分页指定固定行距打印
JAVA itextpdf 段落自动分页指定固定行距打印 前言:公司有个需求,打印的合同模板左上角要加上logo的图标。但是itext pdf 自动分页会按照默认的顶部高分页打印内容的,导致从第二页开始logo图标就会把合同的内容给覆盖掉了。然后尝试了挺多方法…...
基于SpringBoot+Vue的周边游平台个人管理模块的设计与实现
TOC springboot220基于SpringBootVue的周边游平台个人管理模块的设计与实现 第一章 绪论 1.1 选题背景 目前整个社会发展的速度,严重依赖于互联网,如果没有了互联网的存在,市场可能会一蹶不振,严重影响经济的发展水平…...
开源数据库同步工具monstache
Monstache是一个用Go语言编写的同步工具,主要用于将MongoDB中的数据同步到Elasticsearch中。它支持全量同步和增量同步,并提供了丰富的配置参数以及使用Go、JavaScript编写插件来自定义处理数据的逻辑的能力。Monstache 工作流程如下图: 以下…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙
Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...
解析“道作为序位生成器”的核心原理
解析“道作为序位生成器”的核心原理 以下完整展开道函数的零点调控机制,重点解析"道作为序位生成器"的核心原理与实现框架: 一、道函数的零点调控机制 1. 道作为序位生成器 道在认知坐标系$(x_{\text{物}}, y_{\text{意}}, z_{\text{文}}…...
java+webstock
maven依赖 <dependency><groupId>org.java-websocket</groupId><artifactId>Java-WebSocket</artifactId><version>1.3.5</version></dependency><dependency><groupId>org.apache.tomcat.websocket</groupId&…...
