cforest, varimp error: при весах, не равных единице, результаты могут быть неверными - PullRequest
0 голосов
/ 03 февраля 2019

Я студент-статистик, использующий R. Я попытался запустить модель случайного леса, используя функцию cforest из пакета party.Я выбрал этот, потому что в моих данных много разных типов переменных (непрерывных, категориальных с разными шкалами измерения).Тонкость в том, что у меня есть взвешенные данные, что означает, что каждое наблюдение взвешено.В моих данных присутствует десятичный вектор с именем weight.

Во-первых, для запуска модели случайного леса я использую опцию весов, присутствующую в функции cforest.Но проблема в том, когда я пытаюсь вычислить значение переменной с помощью varimp.Даже если у меня есть результаты, появляется сообщение об ошибке: «веса, не равные единице, могут привести к ошибочным результатам».

PS: моя переменная результата непрерывна

Можете ли вы помочь мне исправить эту ошибкупожалуйста!!!Вот минимальный код для воспроизведения этой ошибки:

weight <- c(rep(0.3, 5), rep(1.2, 10), rep(2.5, 10), rep(0.9, 5)) # 30 observations 
a <- rbinom(30, 1, 0.5)
b <- rbinom(30, 1, 0.7)
c <- rbinom(30, 1, 0.6)
d <- rbinom(30, 1, 0.5)
e <- rnorm(30, mean =3)
level <- c(rep("low", 10), rep("medium", 5), rep("high", 15))
outcome <- rnorm(30, mean =10, sd =2)

data <- data.frame(weight, a, b, c, d, e, level = as.factor(level), outcome)

library(party)
res <- cforest(outcome ~. , data = data[,-1], weights = data$weight)
varimp(res)

Предупреждающее сообщение: В varimp (res): 'varimp' с весами, не равными единице, может дать неверные результаты

1 Ответ

0 голосов
/ 03 февраля 2019

Здесь минимальный код, воспроизводящий ошибку.В этом примере у меня та же ошибка:

weight <- c(rep(0.3, 5), rep(1.2, 10), rep(2.5, 10), rep(0.9, 5)) # 30 observations 
a <- rbinom(30, 1, 0.5)
b <- rbinom(30, 1, 0.7)
c <- rbinom(30, 1, 0.6)
d <- rbinom(30, 1, 0.5)
e <- rnorm(30, mean =3)
level <- c(rep("low", 10), rep("medium", 5), rep("high", 15))
outcome <- rnorm(30, mean =10, sd =2)

data <- data.frame(weight, a, b, c, d, e, level = as.factor(level), outcome)

library(party)
res <- cforest(outcome ~. , data = data[,-1], weights = data$weight)
varimp(res)
Warning message:
In varimp(res) :
  ‘varimp’ with non-unity weights might give misleading results

Здесь varimp дает 0 гайки, это не проблема.Спасибо за вашу помощь

...