机器学习+城市规划第十五期:时空地理加权回归(STGWR)

机器学习+城市规划第十五期:时空地理加权回归(STGWR)

引言

随着城市化进程的加速,城市规划面临越来越多复杂的挑战。在传统的城市规划中,通常会考虑到地理位置的影响,但往往忽略了时间维度。而在现代城市的规划与管理中,时间维度的作用变得至关重要,尤其是在处理动态变化的环境数据(如交通流量、环境污染等)时,时间和空间的联动性不容忽视。

时空地理加权回归(STGWR)是一种结合了空间加权回归与时间序列分析的强大方法。它通过在空间和时间两个维度上引入加权机制,可以更加精细地描述和分析地理区域内的时空变化规律。通过这种方法,城市规划者能够更好地把握区域性变化规律,制定出更精准的动态规划策略。

1. 时空地理加权回归(STGWR)的原理

1.1 原理简介

时空地理加权回归(STGWR)是在传统地理加权回归(GWR)的基础上发展而来的,它将空间和时间两大因素结合起来。在STGWR模型中,数据不仅根据空间位置进行加权,还根据时间戳进行加权,使得模型能够同时反映出空间异质性时间动态性

  • 空间加权:通过地理位置的空间加权,考虑不同地点的数据对回归结果的影响程度。
  • 时间加权:在考虑时间维度时,模型会对不同时间段的数据加以区分,使得模型能捕捉到时间变化对规划任务的影响。

这种方法结合了时间与空间的变化规律,能够使得模型对不同时间点、不同地理位置的数据做出动态调整和反应。

1.2 STGWR模型的特点

  • 时空双重加权:STGWR不仅仅关注空间上邻近区域的影响,还能够根据时间序列的变化来调整权重。
  • 区域性和时效性:可以解决区域差异和时间差异的双重问题,适用于动态和变化较大的城市数据分析。
  • 灵活性:可以处理大规模的空间和时间数据,适应城市规划中的复杂需求。

1.3 STGWR的优势

  • 精确性:能够同时考虑空间和时间两个维度,提高了预测结果的准确性。
  • 动态性:能够随着时间的变化调整模型的参数,适应城市的快速变化。
  • 个性化:可以根据不同区域和时间段的需求,进行精细化的规划决策。

1.4 STGWR可以解决的城市规划问题

  • 交通规划:通过对交通流量随时间和空间的变化进行建模,帮助优化交通路线和管理方案。
  • 环境监测:分析空气污染、温度、湿度等因素随时间和地点的变化,进行环境质量预测与管理。
  • 城市资源分配:根据时间和空间的变化,合理分配城市公共资源(如水电供应、公共卫生服务等)。
  • 灾害应对:监测和预测灾害(如洪水、地震等)对不同区域在不同时段的影响,提供决策支持。

1.5 适用的场景

  • 城市交通流量预测:分析不同时间段的交通流量变化,优化交通信号和道路规划。
  • 城市环境监控:实时监控空气质量、温度等环境数据的时空变化,及时响应污染问题。
  • 突发事件应急管理:通过监测不同时段、不同区域的资源消耗情况,及时调整应急响应策略。

2. 时空地理加权回归(STGWR)的实现

为了帮助大家更好地理解STGWR的实现,下面我将展示一个简单的代码示例。该代码实现了一个时空地理加权回归模型,并提供了示例数据,使得用户可以直接复现这一模型。

2.1 示例数据结构

假设我们有以下数据结构,用于描述城市中的每个地理位置在不同时段的特征:

纬度经度时间标签因变量自变量1自变量2
30.123120.4562021-01-015005.23.1
30.124120.4572021-01-014504.92.8
30.123120.4562021-01-025205.43.2
30.124120.4572021-01-024705.12.9

在这个示例中,我们包含了以下几列数据:

  • 纬度:数据点的地理纬度。
  • 经度:数据点的地理经度。
  • 时间标签:数据点的时间标签,用于表示数据所处的时间。
  • 因变量:我们要预测的目标变量,例如某个区域的交通流量、空气质量指数等。
  • 自变量:与因变量相关的因素,如温度、湿度、道路数量、建筑物密度等。

2.2 STGWR代码实现

import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from scipy.spatial.distance import cdist
import matplotlib.pyplot as plt# 示例数据
data = {'latitude': [30.123, 30.124, 30.123, 30.124],'longitude': [120.456, 120.457, 120.456, 120.457],'time': ['2021-01-01', '2021-01-01', '2021-01-02', '2021-01-02'],'dependent_var': [500, 450, 520, 470],'independent_var_1': [5.2, 4.9, 5.4, 5.1],'independent_var_2': [3.1, 2.8, 3.2, 2.9],
}df = pd.DataFrame(data)# 标准化数据
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
df[['independent_var_1', 'independent_var_2']] = scaler.fit_transform(df[['independent_var_1', 'independent_var_2']])# Haversine距离函数
def haversine(lat1, lon1, lat2, lon2):R = 6371  # 地球半径(公里)phi1, phi2 = np.radians(lat1), np.radians(lat2)delta_phi = np.radians(lat2 - lat1)delta_lambda = np.radians(lon2 - lon1)a = np.sin(delta_phi / 2) ** 2 + np.cos(phi1) * np.cos(phi2) * np.sin(delta_lambda / 2) ** 2c = 2 * np.arctan2(np.sqrt(a), np.sqrt(1 - a))return R * c# 计算地理坐标之间的距离矩阵
def compute_distance_matrix(coords):return cdist(coords, coords, metric='euclidean')# 时空加权回归
def stgwr(df, bandwidth):coords = df[['latitude', 'longitude']].to_numpy()time = pd.to_datetime(df['time']).astype(int)  # 将时间转化为整数表示# 计算空间距离dist_matrix = compute_distance_matrix(coords)# 计算时间加权time_diff = np.abs(time.values[:, None] - time.values) / (10000000000)  # 将时间差转换为秒# 计算权重矩阵(空间与时间加权)spatial_weights = np.exp(-dist_matrix ** 2 / (2 * bandwidth ** 2))temporal_weights = np.exp(-time_diff ** 2 / (2 * bandwidth ** 2))weights = spatial_weights * temporal_weights# 自变量和因变量X = df[['independent_var_1', 'independent_var_2']].valuesy = df['dependent_var'].values# 进行回归分析model = LinearRegression()model.fit(X, y, sample_weight=weights.flatten())return model, model.predict(X)# 设置带宽(可以调整)
bandwidth = 1.0# 执行时空地理加权回归
model, predictions = stgwr(df, bandwidth)# 输出回归结果
print("回归系数:", model.coef_)
print("预测值:", predictions)

2.3 数据示例与解释

该代码首先定义了一个简单的城市数据集,其中包含了四个数据点,每个数据点包含了经纬度时间标签因变量和若干自变量。我们通过标准化处理自变量数据后,使用Haversine距离来计算空间距离,并计算每个数据点在时间和空间上的权重。

总结

时空地理加权回归(STGWR)是一种非常适合于城市规划领域的模型,它可以帮助我们有效地分析和预测城市中的动态变化。通过考虑时间和空间的双重维度,STGWR不仅能够捕捉空间异质性,还能够反映出时间变化对城市规划的影响。在实际应用中,STGWR可广泛应用于交通流量预测、环境监测、资源调度等多个场景。

希望通过本期的讲解,大家能够深入理解STGWR的原理及应用,并能够将其运用到实际的城市规划任务中。

原创声明:本教程由课题组内部教学使用,利用CSDN平台记录,不进行任何商业盈利。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/83290.shtml

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

相关文章

用虚拟机安装macos系统之后进入Boot Manager页面

安装教程:在VMware中安装macos系统教程 在VMware中安装macos系统时启动后进入Boot Manager界面,通常是由于虚拟机的固件类型设置于镜像不兼容所致。 解决办法:虚拟机默认使用UEFI启动模式,但是部分macos镜像需要切换到BIOS模式才…

基于API的Redis缓存实现

1.使用Redis API 进行业务数据缓存管理 编写一个进行业务处理的类ApiCommentService,使用Autowired注解注入Redis API中常用的RedisTemplate(类似于Java基础API中的JdbcTemplate); 然后在数据查询、修改和删除三个方法中,根据业…

前沿论文汇总(机器学习/深度学习/大模型/搜广推/自然语言处理)

文章目录 1 前言2 大模型/自然语言处理2.1 FreeAL:在大模型时代实现无需人工的主动学习2.2 COLD:中文攻击性语言检测基准2.3 将词汇的对比信息融入词嵌入以实现反义词-同义词区分2.4 LogRAG:基于检索增强生成的半监督日志异常检测2.5 RankRAG…

PP-OCRv5 ubuntu20.04 OCR识别服务

目录 说明 使用 效果 下载 说明 PP-OCRv5 ubuntu20.04 OCR识别服务 使用 1、下载后解压 2、进入目录、运行程序 效果 1、浏览器访问 2、接口调用 下载 方式1 源码下载 方式2 通过网盘分享的文件:lw.PP_OCRService.tar.gz 链接: https://pan.baidu.com…

VScode打开后一直显示正在重新激活终端 问题的解决方法

一、问题 本人打开“.py”文件后,同时会出现以下两个问题。 1、VScode一直循环在”正在重新激活终端“ 2、日志显示intellicode报错: Sorry, something went wrong activating IntelliCode support for Python. Please check the “Python” and “VS I…

uniapp 实现腾讯云音视频通话功能

uniapp 深度集成腾讯云音视频通话功能实战指南 一、技术架构解析 腾讯云音视频解决方案采用IM信令控制层TRTC媒体传输层的双架构设计,实现核心能力解耦: #mermaid-svg-DKBpT4CVDkqU1IBw {font-family:"trebuchet ms",verdana,arial,sans-ser…

linux常见问题之截取文件指定行数

linux常见问题之截取文件指定行数 一、命令概述 在处理大文本文件时,我们打开该文件会非常不方便,比如服务器上的日志文件,于是我们常常需要提取特定的行进行分析。Linux 系统中提供了多个强大的命令行工具,可以帮助我们高效地完…

微前端 - Native Federation使用完整示例

这是一个极简化的 Angular 使用angular-architects/native-federation 插件的微前端示例,只包含一个主应用和一个远程应用。 完整示例展示 项目结构 federation-simple/ ├── host-app/ # 主应用 └── remote-app/ # 远程应用 创建远程应用 (remote…

无服务器架构的企业级应用深度解析:Serverless技术选型与成本模型

📋 目录 引言:无服务器架构的兴起无服务器架构核心概念主流Serverless平台技术对比企业级应用场景分析成本模型深度分析私有化部署与云端服务对比决策框架构建最佳实践与建议未来发展趋势结论引言:无服务器架构的兴起 在云计算快速发展的今天,无服务器架构(Serverless)…

内网有猫和无线路由器,如何做端口映射从而实现外网访问

内网猫和无线路由器端口映射配置指南 端口映射(Port Forwarding)是将外网请求引导到内网特定设备和端口的技术,常用于远程访问、搭建服务器等场景。以下是配置方法: 基本原理 猫(调制解调器)&#xff1a…

Spring boot应用监控集成

Spring Boot应用监控集成记录 背景 XScholar文献下载应用基于Spring Boot构建,需要接入Prometheus监控系统。应用已部署并运行在服务器上,需要暴露metrics端点供Prometheus采集。 初始状态 应用信息 框架: Spring Boot 2.x部署端口: 10089服务器: L…

安宝特案例丨又一落地,Vuzix AR眼镜助力亚马逊英国仓库智能化升级!

Vuzix M400智能眼镜近日落地亚马逊(英国)仓库,通过解放双手、免提操作优化物流效率。 安宝特&VuzixAR智能眼镜解决方案为亚马逊仓库提供实时决策支持、无缝对接员工-主管-企业管理系统,并加速了新员工培训流程,优…

ui框架-文件列表展示

ui框架-文件列表展示 介绍 UI框架的文件列表展示组件,可以展示文件夹,支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项,适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…

使用QMediaPlayer开发音乐播放器

编译完成的程序下载:【免费】使用QMediaPlayer开发音乐播放器资源-CSDN文库 完整源码:使用QMediaPlayer开发音乐播放器源码资源-CSDN文库 需求分析: 1.本地音乐播放器 核心播放功能 支持常见音频格式本地播放MP3、WAV、FLAC 等 2.播放控制:播放 / 暂停 / 停止 / 上一曲…

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…

【Redis】缓存雪崩、缓存击穿、缓存穿透

目录 1、缓存雪崩【1】定义【2】原因【3】解决方案[1]差异化过期时间[2]多级缓存[3]熔断降级[4]缓存永不过期异步更新 2、缓存击穿【1】定义【2】原因【3】解决方案[1]互斥锁[2]逻辑过期[3]热点数据加载 3、缓存穿透【1】定义【2】原因【3】解决方案[1]缓存空对象[2]布隆过滤器…

【论文阅读笔记】万花筒:用于异构多智能体强化学习的可学习掩码

摘要 在多智能体强化学习(MARL)中,通常采用参数共享来提高样本效率。然而,全参数共享的流行方法通常会导致智能体之间的策略同质,这可能会限制从策略多样性中获得的性能优势。为了解决这一关键限制,我们提出…

vue2 , el-select 多选树结构,可重名

人家antd都支持,elementplus 也支持,vue2的没有,很烦。 网上其实可以搜到各种的,不过大部分不支持重名,在删除的时候可能会删错,比如树结构1F的1楼啊,2F的1楼啊这种同时勾选的情况。。 可以全…

golang循环变量捕获问题​​

在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下: 问题背景 看这个代码片段: fo…

【一文看懂Spring循环依赖】Spring循环依赖:从陷阱破局到架构涅槃

🌪️ Spring Boot循环依赖:从陷阱破局到架构涅槃 循环依赖如同莫比乌斯环上的蚂蚁,看似前进却永远困在闭环中。本文将带你拆解Spring中这一经典难题,从临时救火到根治重构,构建无懈可击的依赖体系。 🔥 一、…