0

我正在尝试使用 GAM 和栅格进行空间预测。我有一个深度数据(Depth_R.asc)的栅格文件,以及来自 248 个位置的物种的存在和不存在数据(Depth.csv)。首先我拟合了这 248 个数据,然后使用 raster:predict 函数预测物种在整个研究区域深度数据 (Depth_R.asc) 上的出现概率。但是当我想这样做时,出现以下错误: p[-naind, ] <- predv 中的错误:要替换的项目数不是替换长度的倍数此外:警告消息:1:在 predict.gam(model , blockvals, ...) : 并非所有必需的变量都已在 newdata 中提供!

所有数据均可在以下网址获得:https ://drive.google.com/drive/folders/15uRsWqgG0tcOlfuU9WSF-vTG6gJkuhLd?usp=sharing

我的代码是:

library(raster)
library(mgcv)
    
Data = read.csv("Depth.csv")
model <- gam(PA ~s(Depth), method="REML",family = binomial("logit"), data=Data)

X = raster("Depth_R.asc", level = 1) 
p <- raster::predict(X, model, type="response")

如何解决这个问题呢?

4

1 回答 1

1

如果您在这里查看:在 predict.lm 上收到警告:“'newdata' 有 1 行,但找到的变量有 32 行”

您发现 和 之间的名称不raster匹配data

例如:

class      : RasterLayer 
dimensions : 1276, 686, 875336  (nrow, ncol, ncell)
resolution : 0.005, 0.005  (x, y)
extent     : 88.9975, 92.4275, 17.9975, 24.3775  (xmin, xmax, ymin, ymax)
crs        : NA 
source     : E:/dissertation/dissertation/Depth_R.asc 
names      : Depth_R 

#AND
> names(Data)
[1] "PA"    "Depth"
  1. 如您所见,XisDepth_RDataits的名称Depth

您需要做的就是:

names(X) <- "Depth"

model <- gam(PA ~s(Depth), method="REML",family = binomial("logit"), data=Data)

p <- raster::predict(X, t, type="response")

> p
class      : RasterLayer 
dimensions : 1276, 686, 875336  (nrow, ncol, ncell)
resolution : 0.005, 0.005  (x, y)
extent     : 88.9975, 92.4275, 17.9975, 24.3775  (xmin, xmax, ymin, ymax)
crs        : NA 
source     : memory
names      : layer 
values     : 2.220446e-16, 0.9585746  (min, max)

在此处输入图像描述

于 2020-12-20T19:41:43.553 回答