mcpField
C
carto-gwr

carto-gwr

github.com/cartodb数据与数据库654 次安装1 周前更新
代码仓库

关于 carto-gwr

carto-gwr 是用于构建 CARTO Workflows 的技能,可通过地理加权回归分析变量关系如何随地点变化,并指导数据准备、模型配置和结果保存。

主要功能

  1. 01从源数据构建 GWR 工作流
  2. 02按空间网格索引并聚合数据
  3. 03配置核函数和邻域范围
  4. 04生成局部系数与拟合指标
  5. 05保存结果以用于地图展示

适用场景

  1. 01比较不同街区的预测变量影响
  2. 02绘制局部回归系数地图
  3. 03检查模型残差和局部拟合度

MCP 相关

该技能指导用户在连接 MCP 服务时使用 CARTO 工作流工具,例如 create_workflow、validate_workflow 和 run_workflow。它不提供直接的 GWR MCP 工具。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/cartodb/agent-skills --skill carto-gwr

安装后在 Claude Code 中输入/carto-gwr确认已加载。

详细介绍

地理加权回归(GWR)

使用 GWR 构建 CARTO Workflows,以建模因变量与一个或多个自变量之间随空间位置变化的关系。与全局回归(整个研究区域使用一组系数)不同,GWR 会为每个空间单元生成局部系数,从而揭示关系如何随空间变化。例如:“在市中心,卧室数量会使房价增加 5 万美元;而在郊区只会增加 2 万美元。”

前置条件:加载 carto-create-workflow,以了解开发流程、JSON 结构和验证命令——其中涵盖两种访问方式(连接 MCP 服务时,使用 MCP 服务的工作流工具,例如 create_workflow、validate_workflow 和 run_workflow;否则使用 carto workflows CLI;路由信号见 carto-basics/references/access-paths.md)。


说明

GWR 工作流遵循以下流程:

Source Data -> (Filter) -> Spatial Indexing (H3/Quadbin) -> Aggregation (dependent + independent vars per cell) -> GWR -> Save
步骤 1:加载源数据

使用 native.gettablebyname。输入表必须至少包含一个数值型因变量和一个或多个数值型自变量(预测变量)。

成功标准:节点输出包含所需数值列的表。

步骤 2:筛选(如有需要)

使用 native.wheresimplified 或 native.where 缩小数据范围(例如,移除关键列中的空值,或按类别、日期范围筛选)。

成功标准:输出仅包含因变量和所有自变量均有效且非空的行。

步骤 3:空间索引

如果数据尚未建立索引,请将点几何转换为空间索引单元:

  • H3 使用 native.h3frompoint
  • Quadbin 使用 native.quadbinfromgeopoint

如果数据已包含 H3 或 Quadbin 列(预聚合数据集常见),则跳过此步骤。

分辨率指南:

分辨率单元大小用途
H3 res 7边长约 5 km城市级关系
H3 res 8边长约 2 km街区级关系
H3 res 9边长约 500m街道级关系(需要密集数据)

成功标准:每行都有一个空间索引列(例如 h3)。

步骤 4:按单元聚合

使用 native.groupby 按单元生成一行,并聚合因变量和所有自变量的值:

  • 分组依据:空间索引列(h3)
  • 聚合方式:price,avg,bedrooms,avg,bathrooms,avg(根据实际列调整)

因变量应根据具体情况使用 avg 或 sum 聚合。自变量通常取平均值。

成功标准:输出中每个唯一单元恰好一行,包含目标变量和所有预测变量的数值列。

步骤 5:运行 GWR

使用 native.gwr,参数如下:

输入项说明默认值
index_column包含 H3/Quadbin 索引的列h3
label_column要建模的目标变量/因变量(必须为数值型)-
features_columns预测变量/自变量列(字符串数组)-
kernel_function邻居的加权函数gaussian
kring_distanceK 环大小(以跳数表示的邻域半径)3
fit_intercept是否拟合截距项true

核函数选项:gaussian(推荐——距离衰减平滑)、uniform、triangular、quadratic、quartic。

K 环大小:控制邻域半径。

  • 太小(1-2):系数嘈杂且不稳定。
  • 太大(5+):过度平滑,趋近全局回归。
  • 建议从 3 开始,作为较均衡的默认值。

成功标准:输出包含每个单元的列:index、intercept、每个自变量对应的系数列、r_squared 和 residual。(参见注意事项中的 Provider 大小写说明——Snowflake 会将这些列名显示为大写。)

第 6 步:保存

使用 native.saveastable 持久化结果。空间索引列可直接在 CARTO Builder 中可视化——按系数列为地图设置样式,创建展示空间变化的系数地图。

成功标志:已验证的工作流,可通过 create_workflow(MCP)或 carto workflows create(CLI)上传。


输出列

列含义
index空间索引单元格 ID(H3 或 Quadbin)
intercept局部截距项
<variable_name>每个自变量的局部系数
r_squared局部模型拟合度(0-1)——数值越高,局部解释能力越强
residual观测值与预测值之差

注意事项

  • 提供商大小写规则与 SQL 方言。 本技能中的列名采用小写(BigQuery / Databricks / Postgres / Redshift 惯例)。在 Snowflake 中,未加引号的标识符会显示为大写——在表达式中引用 H3、INDEX、PRICE、R_SQUARED、INTERCEPT 等。有关大小写规则和 SQL 方言对照,请参阅 carto-create-workflow/references/providers/<provider>.md。
  • GWR 组件需要 Analytics Toolbox。离线验证(通过 MCP 使用 validate_workflow,或使用 carto workflows validate)无法解析 AT 位置——运行前请使用仅限 CLI 的 carto workflows verify-remote --connection <conn> 确认。
  • 因变量必须是连续数值变量。分类目标需要采用其他方法(例如分类)。
  • 任意变量(因变量或自变量)中含有 null 值的单元格都会从模型中排除。运行 GWR 前,请先筛选或填补 null 值。
  • 自变量之间的多重共线性会降低结果质量。如果两个预测变量高度相关(例如 bedrooms 和 total_rooms),请删除其中一个或将其合并。纳入多个相似变量前,请检查相关性。
  • 每个单元格的 r_squared 表示局部模型拟合度。许多单元格的数值都很低,说明模型中可能缺少重要预测变量。
  • features_columns 输入是一个列名数组(例如 ["bedrooms", "bathrooms"]),不是逗号分隔的字符串。
  • 输出列名为 index,而不是原始空间索引列名。如果要与原始数据联接,请使用 native.renamecolumn 重命名。
  • 高分辨率下,稀疏数据会导致系数不可靠。选择高分辨率前,请确保有足够多的单元格包含所有变量的数据。

参考模板

资源描述
BQ 教程:Airbnb 房源价格(GWR)BigQuery 分步教程:分析柏林 Airbnb 房价与卧室数、浴室数的关系,使用 H3 分辨率 7、kring 3 和 Gaussian 核
SF 教程:Airbnb 房源价格(GWR)Snowflake 分步教程:针对 Snowflake 调整的相同分析

工作流模板(可在 CARTO Workspace 中使用):“应用地理加权回归(GWR)来建模数据中的局部空间关系”

示例用例:分析洛杉矶的 Airbnb 评分——建模 overall_rating 与 value_review、cleanliness、location 的关系,并使用 Data Observatory 的社会人口统计数据进行丰富。使用 H3 分辨率 7、kring 3 和 Gaussian 核。


常见变体

变体方法
预聚合数据(每个网格单元已对应一行)跳过第 3 至 4 步,直接运行 GWR
使用 Data Observatory 丰富数据在 GWR 之前添加 native.enrichgrid,纳入社会人口统计预测变量
比较系数保存结果,然后使用 Builder 分别按各个系数列设置地图样式
按模型拟合度筛选在 GWR 之后添加 native.where,仅保留 r_squared > 0.5(或其他阈值)的网格单元
结合热点分析先运行 GWR,然后将残差作为输入传递给 Getis-Ord,以查找过度预测或预测不足的聚类

评论

支持 Markdown