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

如何用R的spaMM包从空间逻辑回归生成预测值栅格?

spaMM空间逻辑回归预测栅格的错误解决

问题描述

使用R的spaMM包拟合空间逻辑回归模型,基于冠层高度、冠层层数、大树密度3个栅格预测因子,训练成熟林/采伐区数据预测复杂森林结构的存在概率。glm()可正常拟合预测,但无法处理空间自相关;改用fitme()拟合模型成功,但预测时持续出现两类错误:

  • 直接用栅格栈作为newdata时:Error: [[(j)] the type of index j cannot be a factor or character
  • 转为数据框预测时:Error in model.frame.default(...) : 因子存在新水平

错误原因

  1. 变量类型错误:虚拟数据生成时误用paste()将数值转为字符串,导致栅格变量自动转为字符型,后续转数据框时变为因子,与训练数据的数值型变量不匹配,引发因子新水平错误。
  2. spaMM对栅格对象的兼容性:spaMM的predict函数对terra栅格对象的支持有限,直接传入会触发索引类型错误。

修正方案与完整代码

library(terra)
library(spaMM)

# 使用的坐标系
crs_ref <- "EPSG:3310"

# 创建空栅格
empty_r <- rast(res=30, nlyr=3,
                xmin=-251376, xmax=-228036,
                ymin=69372, ymax=138628,
                crs= crs_ref)

### 关键修正:直接填充数值型数据,避免paste()转字符串
values(empty_r$lyr.1) <- sample(30:80, ncell(empty_r), replace=T)
values(empty_r$lyr.2) <- sample(1:3, ncell(empty_r), replace=T)
values(empty_r$lyr.3) <- sample(20:100, ncell(empty_r), replace=T)

# 修改图层名称
names(empty_r) <- c("height","layers","density")

# 创建存在/缺失属性:直接用数值型0/1,避免paste()
empty_r$olderTrees <- sample(0:1, ncell(empty_r), replace=T)

# 采样100个随机点训练模型
Random_points <- terra::spatSample(empty_r, size = 100, as.points=T, values=T, method = "random")
Random_points <- as.data.frame(Random_points, geom='XY')

# 拟合包含空间效应的模型
mod <- fitme(olderTrees ~ height+layers+density 
             + Matern(1 | x + y), data = Random_points, family = "binomial")
summary(mod)

### 预测步骤修正:
# 1. 将栅格转为数据框,并添加x、y坐标
empty_r_df <- as.data.frame(empty_r, geom = "XY")

# 2. 确保变量类型与训练数据一致(此处因直接用数值生成,已自动匹配)
str(empty_r_df)
str(Random_points)

# 3. 预测概率值,指定type="response"
predict_probs <- predict(mod, newdata=empty_r_df, type="response")

# 4. 将预测结果转回栅格
empty_r$complex_forest_prob <- predict_probs

# 查看结果
plot(empty_r$complex_forest_prob)

关键说明

  • 生成数据时禁止用paste()转换数值,确保所有预测变量和响应变量为数值型,避免因子类型不匹配问题。
  • 预测时先将栅格转为带坐标的数据框,确保x、y变量存在且类型与训练数据一致。
  • 使用type="response"直接获取逻辑回归的概率输出,再将结果赋值回栅格得到最终的预测概率图层。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 18:15:00