Ошибка условного варимирования стороны R

У меня есть набор данных с 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 с переменными индикатора также работает. Любая помощь будет очень признательна.


person user2656043    schedule 06.08.2013    source источник
comment
Вы когда-нибудь решали это?   -  person Andrew    schedule 12.02.2014


Ответы (1)


У меня была та же ошибка, и после некоторых экспериментов с моими данными я обнаружил, что это происходит только в том случае, если были включены логические переменные-предикторы. Преобразование логических переменных в числовые решило проблему для меня. Вы не говорите, что ваши предикторы являются логическими переменными, но, возможно, это направление для поиска.

person user3499067    schedule 30.04.2014