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

如何在R语言中计算个体出行轨迹的回转半径(Radius of Gyration)

R环境下个体回转半径计算方案

目前没有专门适配「逐行存储到访记录、重复行代表多次到访」格式的开箱即用回转半径计算函数,按照给出的加权回转半径公式,仅需少量自定义代码即可完成计算,支持按个体ID批量处理,结果完全匹配定义要求。

计算逻辑匹配

完全对应回转半径的公式定义,实现步骤如下:

  • 对单个个体,首先聚合得到所有唯一到访位置的到访频次n_i,计算总到访次数N = Σn_i
  • 以到访频次为权重,计算所有到访位置的加权平均经纬度,即为轨迹质心r_cm
  • 计算每个到访位置到质心的空间距离,按频次加权求距离平方的均值,开平方后即为该个体的回转半径

注:经纬度为球面坐标,跨城市/大尺度研究建议用球面距离计算,小范围(如单个城市)研究用平面欧氏距离即可,误差可忽略

可直接复用的代码

首先安装并加载需要的依赖包:

# 首次运行先安装依赖
# install.packages(c("dplyr", "geosphere"))
library(dplyr)
library(geosphere)

自定义计算函数,支持切换球面/平面距离计算:

#' 计算单个个体的回转半径
#' @param df 数据框,必须包含lat(纬度)、lon(经度)两列,每行为1次到访记录
#' @param use_spherical_dist 逻辑值,是否用球面Haversine距离计算,默认TRUE,返回结果单位为米;设为FALSE时用平面欧氏距离,返回单位为经纬度度
calc_radius_of_gyration <- function(df, use_spherical_dist = TRUE) {
  # 聚合统计每个唯一位置的到访次数
  loc_stats <- df %>%
    count(lat, lon, name = "n_i")
  total_visits <- sum(loc_stats$n_i)
  
  # 计算加权质心坐标
  cm_lat <- weighted.mean(loc_stats$lat, w = loc_stats$n_i)
  cm_lon <- weighted.mean(loc_stats$lon, w = loc_stats$n_i)
  
  # 计算各位置到质心的距离
  if (use_spherical_dist) {
    # geosphere包要求坐标顺序为 经度,纬度
    loc_matrix <- as.matrix(loc_stats[, c("lon", "lat")])
    cm_matrix <- matrix(c(cm_lon, cm_lat), nrow = nrow(loc_stats), ncol = 2, byrow = TRUE)
    loc_stats$dist <- distHaversine(loc_matrix, cm_matrix)
  } else {
    loc_stats$dist <- sqrt((loc_stats$lat - cm_lat)^2 + (loc_stats$lon - cm_lon)^2)
  }
  
  # 代入公式计算回转半径
  rog <- sqrt(sum(loc_stats$n_i * loc_stats$dist^2) / total_visits)
  return(rog)
}

用提供的样例数据测试:

# 构造样例数据
sample_data <- data.frame(
  ID = c(100, 100, 100),
  lat = c(42.8142, 42.8142, 42.4843),
  lon = c(-70.8913, -70.8913, -71.2041)
)

# 计算样例个体的回转半径
calc_radius_of_gyration(sample_data)

批量计算全数据集所有个体的结果

如果数据集包含多个研究个体,直接按ID分组调用函数即可得到所有个体的回转半径:

# 假设全量到访数据集命名为trip_df,包含ID、lat、lon三列
rog_result <- trip_df %>%
  group_by(ID) %>%
  group_modify(~data.frame(
    radius_of_gyration = calc_radius_of_gyration(.x)
  )) %>%
  ungroup()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 22:12:23