空间分析流程

先查看各命令展开的示例,再按需展开其他选项及 R 实现。改写代码前,请阅读适用条件及差异说明。

spbalance

保留共同时间期以平衡空间面板

Stata

spbalance, balance

R 包:base

{ counts <- table(data$time); common <- as.numeric(names(counts)[counts == length(unique(data$id))]); data[data$time %in% common, , drop = FALSE] }

与 Stata 有差异 固定流程;请明确调整示例列名。要求空间单元和时间组合唯一;对应spbalance保留空间单元而剔除不完整时间期的方式,不填补缺失结局。

spdistance

两个指定平面位置之间的距离

Stata

spdistance 1 2

R 包:base

sqrt(sum((as.numeric(data[data$id == 1, c("x", "y")]) - as.numeric(data[data$id == 2, c("x", "y")]))^2))

与 Stata 有差异 固定流程;请明确调整示例列名。仅计算平面欧氏距离;经纬度应使用大地距离并明确单位。

spgenerate

计算空间滞后协变量

Stata

spgenerate nearby = W*value

R 包:base

drop(W %*% data$value)

与 Stata 有差异 固定流程;请明确调整示例列名。W必须与数据采用完全一致的空间单元顺序;该运算不拟合空间自回归模型。

spmatrix

行标准化逆距离空间权重

Stata

spmatrix create idistance W, normalize(row)

R 包:stats

{ D <- as.matrix(stats::dist(data[c("x", "y")])); W <- matrix(0, nrow(D), ncol(D)); off <- row(D) != col(D); W[off] <- 1 / D[off]; W / rowSums(W) }

与 Stata 有差异 固定流程;请明确调整示例列名。要求平面距离、位置互异且矩阵行列ID顺序一致;Stata默认谱标准化,本例明确使用行标准化。

spset

声明平面点几何及坐标参考系统

Stata

spset id, coord(x y)

R 包:sf

sf::st_as_sf(data, coords = c("x", "y"), crs = 3857, remove = FALSE)

与 Stata 有差异 固定流程;请明确调整示例列名。sf对象不设置Stata数据元信息;坐标与CRS必须符合真实数据,不能给经纬度直接指定投影坐标系。