r中线性模型的栅格预测问题

问题描述 投票:0回答:1

我在使用线性模型预测栅格时遇到问题。

首先,我从我的多边形中的数据创建我的模型。

  # create model
  poly <- st_read("polygon.shp")
  df <- na.omit(poly)
  df <- df[df$gdp > 0 & df$ntl2 > 0 & df$pop2 > 0,]

  x <- log(df$ntl2)
  y <- log(df$gdp*df$pop2)
  c <- df$iso
  d <- data.frame(x,y,c)

  m <- lm(y~x+c,data=d)

然后我想使用raster :: predict来估计输出栅格

  # raster data
  iso <- raster("iso.tif")
  viirs <- raster("viirs.tif")

  x <- log(viirs)
  c <- iso

  ## predict with models
  s <- stack(x,c)
  predicted <- raster::predict(x,model=m)

但我得到以下回应:

Error in model.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels) : 
  object is not a matrix

我不知道问题是什么,以及如何解决它。我目前的注意事项是它与因子/国家代码有关:

我的模型包括国家代码,因为我想包括一些国家固定效果。包括这些可能存在问题。但是,即使从模型和整个数据框中排除国家/地区代码,我仍然会收到相同的错误消息。

此外,我的模型基于来自全世界的区域值,预测数据集仅包括土耳其的范围。也许这就是问题?

以下是数据:https://drive.google.com/open?id=16cy7CJFrxQCTLhx-hXDNHJz8ej3vTEED

r raster lm predict
1个回答
0
投票

如果您这样做,也许它有效:

iso <- raster("iso.tif")
viirs <- raster("viirs.tif")
s <- stack(log(viirs), iso)
names(s) <- c("x", "c")

predicted <- raster::predict(s, model=m)

如果df $ iso和iso.tif中的值不匹配(一个因子,另一个数字?),它将无法工作。请设置一个带代码的小例子......

© www.soinside.com 2019 - 2024. All rights reserved.