时空自回归模型(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.rhkb.cn/news/401896.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python养成】:输出两个等腰三角形且平行方向

项目场景&#xff1a; 遇到一个小小的高中小程序题目&#xff0c;有趣就做 了一下&#xff0c;供大家参考。 问题描述 要求使用python编程&#xff0c;实现如下图形。 原因分析&#xff1a; 其实就是 找规律和找空格。先左边后右边。具体解释可以找AI。太简单了没必要亲自讲解…

【C++进阶】map与set的封装实践

文章目录 map和setmapmap的框架迭代器operator()operator--()operator()和operator!()operator*()operator->() insertbegin()end()operator[] ()map的所有代码&#xff1a; set的封装迭代器的封装总结 map和set 通过观察stl的底层我们可以看见&#xff0c;map和set是通过红…

密码学基础---椭圆曲线一文打尽

1.ECC简介及密钥生成 当前公认安全有效的三大类公钥密钥体制分别为基于大数因子分解难题(RSA)、离散对数难题(DSA)和椭圆曲线离散对数&#xff08;ECC&#xff09;难题的密码体制。 最初RSA由于其容易理解被广泛运用&#xff0c;但随着计算机性能的提升&#xff0c;要保证RS…

Golang | Leetcode Golang题解之第336题回文对

题目&#xff1a; 题解&#xff1a; // 哈希表实现 class Solution {public List<List<Integer>> palindromePairs(String[] words) {List<List<Integer>> res new ArrayList<>();int n words.length;Map<String, Integer> indices ne…

AIGC:clip-interrogator

文字生成图片是近年来多模态和大模型研究的热门方向&#xff0c;openai提出的CLIP提供了一个方法建立起了图片和文字的联系&#xff0c;但是只能做到给定一张图片选择给定文本语义最相近的那一个&#xff0c;实际项目开发中我们总是需要从一张图片获取描述&#xff0c;clip-int…

高效录制新选择:2024年Windows录屏软件

录屏能帮助我们捕捉屏幕上的精彩瞬间&#xff0c;作为老师可以用来录制课程&#xff0c;作为会议记录员可以用来录制远程会议。那么有什么软件是适合windows录屏的呢&#xff1f;这次我们一起来探讨一下吧。 1.福昕录屏大师 链接&#xff1a;www.foxitsoftware.cn/REC/ 这款软…

什么是链表/双向链表

看csp j选择的时候看到链表题&#xff0c;那就来写一写吧 什么是链表 首先我们知道数组&#xff1a; 链表和数组有点像&#xff0c;他是这样的&#xff1a; 1----->2------->3------->4 链表中每个数据都有一个指针&#xff0c;指着自己的下一项数据是哪一个 比如…

Android高版本抓包总结

方案1 CharlesVirtualXposedJustTrustMe 推荐使用三星手机此方案 VirtualXposed下载链接&#xff1a;https://github.com/android-hacker/VirtualXposed/releases JustTrustMe下载链接&#xff1a;https://github.com/Fuzion24/JustTrustMe/releases/ 下载完成后使用adb命令…

编辑器和工具扩展

https://www.youtube.com/watch?vovpiYkYFlPM ui提示 检查资源的合法性

使用 Ollama 集成 GraphRag.Net:一步步教你如何实现

在当今的技术世界&#xff0c;人工智能 (AI) 正在以惊人的速度发展。对于开发者来说&#xff0c;使用最新的工具和框架来提升工作效率至关重要。而在 AI 领域&#xff0c;GraphRag.Net 作为一个强大的图算法框架&#xff0c;允许我们以高效的方式进行数据处理。同样&#xff0c…

【Java 并发编程】(二) 从对象内存布局开始聊 synchronized

对象的内存布局 首先抛出一个经典面试题: 一个 Object 对象占多大? 这里我用工具打印了出来, 发现是 “16bytes”, 也就是 16B; 为什么? 请继续往下看; 普通对象(除了数组), 由markword, 类型指针, 实例数据(就是对象里的成员), 对齐填充(整个对象大小要能被8B整数, 方便6…

电销机器人引领电销变革

以前电销都是都是通过盲打&#xff0c;现在有了电话机器人的出现&#xff0c;为电销公司带来新的篇章。 我们都知道外呼中心的人员离职率始终居高不下&#xff0c;人员的培训频繁成本很高&#xff0c;外部电话水平参差不齐&#xff0c;服务态度不够稳定等问题&#xff0c;都是难…

基础 - 前端知识体系详解

一、前端三要素 HTML&#xff08;结构&#xff09;&#xff1a; 超文本标记语言&#xff08;Hyper Text Markup Language&#xff09;&#xff0c;决定网页的结构和内容。CSS&#xff08;表现&#xff09;&#xff1a; 层叠样式表&#xff08;Cascading Style Sheets&#xff0…

【Mac】Downie 打开提示试用的解决办法?

前情 我们在使用 Downie 的时候&#xff0c;可能遇到提示试用的问题&#xff0c;如下图所示。 原因 旧版本的 Downie 没有卸载干净导致的。 解决办法 先使用 AppCleaner 卸载掉电脑上的 Downie 旧版本软件&#xff0c;必须使用 AppCleaner 卸载。重新安装 Downie 即可。

如何保证数据不丢失?(死信队列)

死信队列 1、什么是死信 死信通常是消息在特定的场景下表现&#xff1a; 消息被拒绝访问消费者发生异常&#xff0c;超过重试次数消息的Expiration过期时长或者队列TTL过期时间消息队列到达最大容量 maxLength 2、什么是死信队列 只由死信构成的消息队列是死信队列 死信队…

PhpStorm完全配置指南:打造高效PHP开发环境!

Phpstorm环境配置与应用&#xff0c;具体包括安装PhpStorm、配置PHP运行环境、Apache集成、调试和部署等步骤。下面将详细展开每个步骤的具体操作和注意事项。 PhpStorm的下载与安装 下载地址&#xff1a;访问PhpStorm的官网下载地址&#xff0c;选择合适的版本进行下载。建议选…

springboot、spring@JsonAlias(velue)的作用

‌JsonAlias注解用于为字段或参数指定反序列化时的别名。‌‌ 在Java开发中&#xff0c;‌特别是在使用Jackson库进行JSON序列化和反序列化时&#xff0c;‌JsonAlias注解扮演着重要的角色。‌它允许开发者为字段或参数指定一个或多个别名&#xff0c;‌这样在反序列化过程中&…

希尔排序,详细解析(附图解)

1.希尔排序思路 希尔排序是一种基于插入排序的算法&#xff0c;通过将原始数据分成若干个子序列&#xff0c;然后对子序列进行插入排序&#xff0c;逐渐减小子序列的间隔&#xff0c;最后对整个序列进行一次插入排序。 1.分组直接插入排序&#xff0c;目标接近有序--------…

玩机进阶教程-----回读 备份 导出分区来制作线刷包 回读分区的写入与否 修改xml脚本

很多工作室需要将修改好的系统导出来制作线刷包。前面分享过很多制作线刷包类的教程。那么一个机型中有很多分区。那些分区回读后要写入。那些分区不需要写入。强写有可能会导致不开机 不进系统的故障。首先要明白。就算机型全分区导出后在写回去 都不一定可以开机进系统。那么…

萌啦数据插件使用情况分析,萌啦数据插件下载

在当今数字化时代&#xff0c;数据已成为企业决策与个人分析不可或缺的重要资源。随着数据分析工具的日益丰富&#xff0c;一款高效、易用的数据插件成为了众多用户的心头好。其中&#xff0c;“萌啦数据插件”凭借其独特的优势&#xff0c;在众多竞品中脱颖而出&#xff0c;成…