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

R中提取栅格逐像元线性回归y估计值计算相对变化

实现逐像元相对变化栅格

你可以通过修改原有的逐像元回归函数,利用线性模型预测周期起止点的y值,再代入公式计算目标指标。具体步骤如下:

  1. 先明确时间变量的起止值
time <- 1:nlayers(r1)
start_time <- min(time)  # 周期起始时间(即第1层)
end_time <- max(time)    # 周期结束时间(即最后一层)
  1. 定义计算相对变化的逐像元函数
relative_change <- function(y) {
  # 处理全NA的像元,直接返回NA
  if (all(is.na(y))) {
    return(NA)
  }
  
  # 拟合线性回归模型
  m <- lm(y ~ time)
  
  # 预测起止时间对应的y估计值
  start_pred <- predict(m, newdata = data.frame(time = start_time))
  end_pred <- predict(m, newdata = data.frame(time = end_time))
  
  # 计算两个端点的均值
  mean_pred <- (start_pred + end_pred) / 2
  
  # 避免除以0的情况,防止出现无效值
  if (mean_pred == 0) {
    return(NA)
  }
  
  # 计算相对变化:(end - start)/mean
  (end_pred - start_pred) / mean_pred
}
  1. 批量计算生成结果栅格
r_relative_change <- calc(r1, relative_change)

关键说明

  • 利用predict()函数从拟合好的线性模型中提取指定时间点的y预测值,这是获取start和end估计值的核心操作
  • 加入了均值为0时的判断,避免计算过程中出现Inf或NaN这类无效值
  • 保留了原函数对全NA像元的处理逻辑,确保结果栅格的缺失值与原始数据一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:45:42