Ich habe ein seltsames Problem. Ich habe diesen Code erfolgreich auf meinem Laptop ausgeführt, aber wenn ich versuche, es auf einem anderen Computer zuerst zu starten, bekomme ich diese Warnung Verteilung nicht angegeben, vorausgesetzt, Bernoulli ..., die ich erwarte, aber dann bekomme ich diesen Fehler: Error in object$var.levels[[i]] : subscript out of bounds
Subscript außerhalb der Grenzen in GBM Funktion
library(gbm)
gbm.tmp <- gbm(subxy$presence ~ btyme + stsmi + styma + bathy,
data=subxy,
var.monotone=rep(0, length= 4), n.trees=2000, interaction.depth=3,
n.minobsinnode=10, shrinkage=0.01, bag.fraction=0.5, train.fraction=1,
verbose=F, cv.folds=10)
Kann jemand helfen? Die Datenstrukturen sind genau gleich, der gleiche Code, der gleiche R. Ich verwende hier nicht einmal einen Index.
EDIT: Traceback()
6: predict.gbm(model, newdata = my.data, n.trees = best.iter.cv)
5: predict(model, newdata = my.data, n.trees = best.iter.cv)
4: predict(model, newdata = my.data, n.trees = best.iter.cv)
3: gbmCrossValPredictions(cv.models, cv.folds, cv.group, best.iter.cv,
distribution, data[i.train, ], y)
2: gbmCrossVal(cv.folds, nTrain, n.cores, class.stratify.cv, data,
x, y, offset, distribution, w, var.monotone, n.trees, interaction.depth,
n.minobsinnode, shrinkage, bag.fraction, var.names, response.name,
group)
1: gbm(subxy$presence ~ btyme + stsmi + styma + bathy, data = subxy,var.monotone = rep(0, length = 4), n.trees = 2000, interaction.depth = 3, n.minobsinnode = 10, shrinkage = 0.01, bag.fraction = 0.5, train.fraction = 1, verbose = F, cv.folds = 10)
Könnte es etwas zu tun haben, weil ich die gespeicherte R Arbeitsbereich auf eine andere Maschine bewegt?
EDIT 2: ok, also habe ich das gbm-Paket auf der Maschine aktualisiert, wo der Code funktionierte und jetzt bekomme ich den gleichen Fehler. An diesem Punkt denke ich, dass das ältere gbm-Paket diese Überprüfung vielleicht nicht hatte oder dass die neuere Version ein Problem hat. Ich verstehe gbm nicht gut genug zu sagen.
(1) Es kann nicht die Quelle Ihres Problems sein, aber Ihre Formel sollte nicht $ verwenden; mach 'Präsenz ~ ... '. (2) Eine Sache zu überprüfen ist, dass beide Maschinen R auf die gleiche Weise eingerichtet haben; Überprüfen Sie zum Beispiel 'stringsAsFactors'. – joran
Wo ist dieser 'Subxy'-Datenrahmen? Wenn es sich um Ihre eigenen Daten handelt, können Sie bitte einige Beispieldaten bereitstellen, die das Problem reproduzieren. Ein "traceback()", wo der Fehler auftritt, wäre ebenfalls nützlich. –
Die Standardverteilung für 'gbm' ist" bernoulli ". Wenn Sie also ein Ergebnis mit mehr als zwei Ebenen haben, würden Sie nicht einen Fehler erwarten? –