时空自回归模型(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 工作流程如下图: 以下…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...