空间分析流程
先查看各命令展开的示例,再按需展开其他选项及 R 实现。改写代码前,请阅读适用条件及差异说明。
spbalance
保留共同时间期以平衡空间面板
Stata
spbalance, balanceR 包: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 2R 包: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*valueR 包: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必须符合真实数据,不能给经纬度直接指定投影坐标系。