You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于权重的空间网格抽样:按倾向分配观测值至网格单元

实现观测到空间网格的加权分配方案

核心思路是基于sim_spatial的sim_1值构建分配权重,让success=1的观测以与sim_1正相关的概率被分配到网格单元,success=0的观测可采用均匀分配或弱相关权重(根据需求调整)。以下是具体实现步骤和代码示例:

步骤1:预处理空间网格的权重

首先将sim_spatial中的sim_1转换为可用于抽样的概率权重,避免极端值导致权重失衡:

  • 对sim_1做min-max缩放,将值映射到[0,1]区间
  • 若sim_1存在负值,先偏移至非负区间(如加上最小值的绝对值)
  • 将缩放后的值归一化,确保权重总和为1

步骤2:分组分配观测

将sim_data按success分为两组,分别采用不同抽样策略:

  • success=1组:使用sim_1对应的权重进行加权随机抽样
  • success=0组:可使用均匀权重(无空间偏好)或自定义弱相关权重(如sim_1的倒数)

R语言示例(假设用sf处理空间网格)

library(dplyr)
library(sf)

# 预处理空间网格,生成概率权重
sim_spatial <- sim_spatial %>%
  mutate(
    sim_1_scaled = (sim_1 - min(sim_1)) / (max(sim_1) - min(sim_1)),
    weight = sim_1_scaled / sum(sim_1_scaled)
  )

# 提取网格ID和对应权重
grid_ids <- sim_spatial$grid_id
success1_weights <- sim_spatial$weight
success0_weights <- rep(1/length(grid_ids), length(grid_ids)) # 均匀权重

# 为每个观测分配网格
sim_data <- sim_data %>%
  mutate(
    grid_id = case_when(
      success == 1 ~ sample(grid_ids, n(), replace = TRUE, prob = success1_weights),
      success == 0 ~ sample(grid_ids, n(), replace = TRUE, prob = success0_weights)
    )
  )

# 可选:关联空间网格属性
sim_data_spatial <- sim_data %>%
  left_join(sim_spatial %>% st_drop_geometry(), by = "grid_id")

Python语言示例(用geopandas处理空间网格)

import pandas as pd
import numpy as np
import geopandas as gpd

# 预处理空间网格,生成概率权重
sim_spatial['sim_1_scaled'] = (sim_spatial['sim_1'] - sim_spatial['sim_1'].min()) / (sim_spatial['sim_1'].max() - sim_spatial['sim_1'].min())
sim_spatial['weight'] = sim_spatial['sim_1_scaled'] / sim_spatial['sim_1_scaled'].sum()

# 提取网格ID和对应权重
grid_ids = sim_spatial['grid_id'].values
success1_weights = sim_spatial['weight'].values
success0_weights = np.full(len(grid_ids), 1/len(grid_ids)) # 均匀权重

# 定义分配函数
def assign_grid(row):
    if row['success'] == 1:
        return np.random.choice(grid_ids, p=success1_weights)
    else:
        return np.random.choice(grid_ids, p=success0_weights)

# 执行分配
sim_data['grid_id'] = sim_data.apply(assign_grid, axis=1)

# 可选:关联空间网格属性
sim_data_spatial = sim_data.merge(sim_spatial.drop(columns='geometry'), on='grid_id')

优化与验证

  • 若需要更强的空间自相关性,可对sim_1_scaled做幂变换(如sim_1_scaled ** 2),放大高值单元的权重占比
  • 若网格有容量限制,可采用迭代抽样:每次分配后减少对应网格的剩余容量,重新计算权重
  • 分配完成后,可统计不同sim_1区间内success=1观测的占比,验证空间自相关性是否符合预期

内容的提问来源于stack exchange,提问作者Peter MacPherson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 03:05:30