У меня есть набор данных с 6 переменными-предикторами (все они являются категориальными), переменной ответа и столбцом для весов и ~ 3500 наблюдений. Уровни, которые имеют предикторные переменные, варьируются от 2 до 7.
Я определил переменные-индикаторы для уровней каждой переменной-предиктора, например
retail <- Trade == "RETAIL"
Где Trade
— одна из «основных» переменных, а розничная торговля — значение, которое она может принимать.
Я сталкиваюсь с проблемами при попытке вычислить важность условной переменной, используя:
rf <- cforest(Actual ~ comp + tpft + abi1 + abi2 +
abi3 + abi4 + abi5 + abi6 + abio + builders +
clerical + manufacturing + othertrade + retail +
tradeunk + wholesale + firstrenewal + newbusiness +
renewedtwice + MTyes + MTno + ly9 + ly10 + ly11 + ly12 + ly13,
data=table, weights=Expected, controls=data.controls)
imp <- varimp(rf, conditional=TRUE)
Где каждая из comp
, tpft
и т. д. — это категории, которые могут принимать основные переменные.
Это возвращает ошибку:
Error in names(blocks) <- cond :
'names' attribute [24] must be the same length as the vector [12]
И я понятия не имею, как это исправить! traceback
дает:
> traceback()
2: conditional_perm(ccl, xnames, input, tree, oob)
1: varimp(rf, conditional = TRUE)
Этот метод работает, когда я хочу протестировать только 6 основных переменных, поэтому я вполне уверен, что это проблема с количеством переменных индикатора, не совпадающим с количеством чего-то еще, и с условием = FALSE с переменными индикатора также работает. Любая помощь будет очень признательна.