Я думаю, что это может иметь отношение к тому, как вы построили свой фрейм данных. Когда вы использовали data[["species"]] <- (species)
, у вас был фрейм данных внутри фрейма данных. Если вы str(data)
после шага, который я только что упомянул, вывод будет таким:
> str(data)
'data.frame': 10 obs. of 4 variables:
$ site : int 1 2 3 4 5 6 7 8 9 10
$ elevation: num 500 140 445 340 448 55 320 200 420 180
$ precip : num 28 37 15 45 20 70 18 42 22 8
$ species :'data.frame': 10 obs. of 4 variables: #2nd data frame
..$ site : int 1 2 3 4 5 6 7 8 9 10
..$ species.1: num 1 1 1 1 1 1 1 1 1 1
..$ species2 : num 1 0 1 0 0 1 1 0 0 1
..$ species.3: num 0 1 1 1 0 0 0 0 0 0
Если вместо этого вы создадите фрейм данных как data2 <- as.data.frame(cbind(data,species))
тогда
rfsrc(Multivar(species.1,species2,species.3)~.,data = data2, importance=T)
, кажется, работает, потому что я не получаю сообщение об ошибке, вместо этого я получаю некоторый разумный вывод:
Sample size: 10
Number of trees: 1000
Forest terminal node size: 5
Average no. of terminal nodes: 2
No. of variables tried at each split: 2
Total no. of variables: 4
Total no. of responses: 3
User has requested response: species.1
Resampling used to grow trees: swr
Resample size used to grow trees: 10
Analysis: mRF-R
Family: regr+
Splitting rule: mv.mse *random*
Number of random split points: 10
% variance explained: NaN
Error rate: 0
Я не думаю, что ваш метод построения нужного вам фрейма данных - это обычный способ, но я могу ошибаться. Я думаю rfsrc()
не знал, как читать вложенный фрейм данных. Я сомневаюсь, что большинство функций моделирования обходятся без дополнительного настраиваемого кода.