首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:在R中使用glm模型(lulcc软件包)预测土地利用变化时,“预测”包含NA。

错误:在R中使用glm模型(lulcc软件包)预测土地利用变化时,“预测”包含NA。
EN

Stack Overflow用户
提问于 2021-02-15 05:45:00
回答 1查看 1.3K关注 0票数 0

利用R中的lulcc软件包建立了土地利用变化预测模型,并用glm进行了预测。当我执行glm.pred (最后一行)时,出现了一个错误:“预测”包含NA消息。我尝试过使用na.omit函数,但是仍然存在错误,我不知道NA值在哪里。对我的问题有什么建议或解决办法吗?

这是代码

代码语言:javascript
复制
setwd("D:\\Penelitian_Tesis\\lulccLMG package")

memory.size() ### Checking your memory size
memory.limit() ## Checking the set limit
memory.limit(size=500000) ### expanding your memory

lu_lmg_2007 = raster("lu_lmg2007.tif")
lu_lmg_2013 = raster("lu_lmg_2013.tif")
lu_lmg_2019 = raster("lu_lmg_2019.tif")
ef_001 = raster("ef_001.tif")
ef_002 = raster("ef_002.tif")
ef_003 = raster("ef_003.tif")

# create raster stack
Lmg <- stack(lu_lmg_2007,lu_lmg_2013,lu_lmg_2019)
save(Lmg,file="Lmg.Rda")
na.omit("Lmg")

Expvar <- stack(ef_001,ef_002,ef_003)
save(Expvar,file="Expvar.Rda")
na.omit("Expvar")

##############

library(rgdal)

library(raster)

load(file="Lmg.Rda")
load(file="Expvar.Rda")

library(lulcc)

## observed maps
obs <- ObsLulcRasterStack(x=Lmg,
                          pattern="lu",
                          categories=c(0,1,2,3,4,5,6,7),
                          labels=c("HU","LAD","LN","LA","TE","SW","SB","TA"),
                          t=c(0,6,12))
obs
na.omit(obs)
plot(obs)

crossTabulate(obs, times=c(0,12))

## explanatory variables
ef <- ExpVarRasterList(x=Expvar, pattern="ef")
ef
na.omit(ef)

part <- partition(x=obs[[1]], size=0.1, spatial=TRUE)
na.omit("part")
train.data <- getPredictiveModelInputData(obs=obs, ef=ef, cells=part[["train"]],t=0)
na.omit(train.data)

forms <- list(HU ~ ef_001+ef_002+ef_003,
              LAD ~ ef_002+ef_003,
              LN ~ ef_002+ef_003,
              LA ~ ef_002+ef_003,
              TE ~ ef_002+ef_003,
              SW ~ ef_002+ef_003,
              SB ~ ef_001+ef_002+ef_003,
              TA ~ ef_001+ef_002+ef_003)

glm.models <- glmModels(formula=forms, family=binomial(link="logit"), data=train.data, obs=obs)
na.omit(glm.models)

## test ability of models to predict allocation of forest, built and other
## land uses in testing partition
test.data <- getPredictiveModelInputData(obs=obs, ef=ef, cells=part[["test"]])
na.omit(test.data)

glm.pred <- PredictionList(models=glm.models, newdata=test.data)
EN

回答 1

Stack Overflow用户

发布于 2021-08-07 04:29:52

我也遇到了同样的问题。问题是您的train.datatest.data可能包含NA。

解决方案是将na.omit(train.data)更改为train.data.no.na <- na.omit(train.data),并使用新创建的变量来输入模型。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66203252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档