Tôi gặp sự cố lạ. Tôi đã chạy thành công mã này trên máy tính xách tay của mình, nhưng khi tôi thử chạy nó trên một máy khác trước tiên, tôi nhận được cảnh báo này Phân phối không được chỉ định, giả định bernoulli ... mà tôi mong đợi nhưng sau đó tôi gặp lỗi này: Error in object$var.levels[[i]] : subscript out of bounds
chỉ số ngoài ranh giới trong hàm gbm
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)
Ai cũng có thể trợ giúp? Các cấu trúc dữ liệu giống hệt nhau, cùng một mã, cùng R. Tôi thậm chí không sử dụng một chỉ số ở đây.
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)
Nó có thể có cái gì để làm vì tôi di chuyển R workspace lưu vào máy khác?
EDIT 2: ok vì vậy tôi đã cập nhật gói gbm trên máy nơi mã đang hoạt động và bây giờ tôi gặp lỗi tương tự. Vì vậy, vào thời điểm này tôi nghĩ rằng gói gbm cũ hơn có lẽ không có kiểm tra này tại chỗ hoặc phiên bản mới hơn có một số vấn đề. Tôi không hiểu gbm đủ để nói.
(1) Nó có thể không phải là nguồn gốc của vấn đề của bạn, nhưng công thức của bạn không nên sử dụng '$'; chỉ làm 'hiện diện ~ ...'. (2) Một điều cần kiểm tra là cả hai máy đều có R được thiết lập theo cùng một cách; ví dụ kiểm tra 'stringsAsFactors'. – joran
Khung dữ liệu 'subxy' này ở đâu? Nếu đó là dữ liệu của riêng bạn, sau đó vui lòng bạn có thể cung cấp một số dữ liệu mẫu tái tạo sự cố. Một 'traceback()' của nơi xảy ra lỗi cũng sẽ hữu ích. –
Phân phối mặc định cho 'gbm' là" bernoulli ", vì vậy nếu bạn có kết quả lớn hơn hai cấp, bạn sẽ không gặp phải lỗi? –