R dismo包中的编码问题



我正在尝试使用dismo包创建一个BRT模型。当我按照cran教程简化我的模型,然后尝试重新指定它时,我会得到一个错误:"数据错误[,gbm.x,drop=FALSE]:尺寸数量不正确"。

我不知道问题出在哪里,如有任何帮助,我们将不胜感激。

> BRTsynoptic <- gbm.step(data=synoptic, gbm.x = 2:14,      gbm.y = 1,
family = "bernoulli", tree.complexity = 10,
learning.rate = .001, bag.fraction = 0.75)
summary(BRTsynoptic)
#simplify the model
synoptic.simp <- gbm.simplify(BRTsynoptic, n.drops = 5)
#assign new model with simplification
synopticss.simp <- gbm.step(BRTsynoptic,
gbm.x=synoptic.simp$pred.list[[4]], gbm.y=1,
tree.complexity=10,learning.rate=0.001)

如果您查看概要.simp$final.drops,它是一个数据帧。参见下面的可复制示例:

library(dismo)
data(Anguilla_train)
Anguilla_train = Anguilla_train[1:200,]
mdl <- gbm.step(data=Anguilla_train, gbm.x = 3:14, 
gbm.y = 2, family = "bernoulli",
tree.complexity = 10, learning.rate = 0.001, bag.fraction = 0.75)
train.simp <- gbm.simplify(mdl, n.drops = 5)
train.simp$final.drops
preds order
1       DSDam     1
2  USRainDays     2
3     USSlope     3
4  SegLowFlow     4
5    SegTSeas     5
6     SegSumT    NA
7      DSDist    NA
8  DSMaxSlope    NA
9      USAvgT    NA
10   USNative    NA
11     Method    NA
12     LocSed    NA

要重新运行您的模型,您需要在第二列中提取pred,即NA:

var_names = with(train.simp$final.drops,preds[which(is.na(order))])
idx = match(var_names,colnames(Anguilla_train))
mdl.simp <- gbm.step(Anguilla_train,
gbm.x=idx, gbm.y=2,
tree.complexity=10,learning.rate=0.001)

最新更新