Есть ли эквивалентность «Анова» (для LM) к объекту RPART?

StackOverflow https://stackoverflow.com/questions/2397349

Вопрос

При использовании R rpart Функция, я могу легко установить модель с ней. Например:

# Classification Tree with rpart
library(rpart)

# grow tree 
fit <- rpart(Kyphosis ~ Age + Number + Start,
     method="class", data=kyphosis)

printcp(fit) # display the results 
plotcp(fit) 
summary(fit) # detailed summary of splits

# plot tree 
plot(fit, uniform=TRUE, 
     main="Classification Tree for Kyphosis")
text(fit, use.n=TRUE, all=TRUE, cex=.8)

Мой вопрос - как я могу измерить «важность» каждого из моих трех объяснительных переменных (возраст, номер, начало) к модели?

Если бы это была модель регрессии, я мог бы посмотреть P-значения из «ANOVA» F-TEXT (между lm модели с и без переменной). Но какова эквивалентность использования «Анова» на lm чтобы rpart объект?

(Надеюсь, мне удалось сделать мой вопрос ясно)

Спасибо.

Это было полезно?

Решение

Конечно, Анова была бы невозможна, поскольку Анова включает в себя расчет общего изменения переменной отклика и разбив ее в информативные компоненты (SSA, SSE). Я не вижу, как можно рассчитать сумму квадратов для категориальной переменной, такой как кифоз.

Я думаю, что то, о чем вы говорите, является выбор атрибута (или оценка). Я бы использовал information gain измерить например. Я думаю, что это то, что используется для выбора атрибута теста на каждом узле в дереве, и атрибут с наивысшим усилением информации (или наибольшее восстановление энтропии) выбрано в качестве тестового атрибута для текущего узла. Этот атрибут минимизирует информацию, необходимую для классификации образцов в результирующих разделах.

Я не знаю, есть ли метод ранжирования атрибутов в соответствии с их информацией, но я знаю, что есть в Weka. и назван Infogakinattributeeval. Это оценивает ценность атрибута, измеряя усиление информации относительно класса. И если вы используете Ranker как то Search Method, атрибуты оцениваются по их индивидуальным оценкам.

РЕДАКТИРОВАТЬЯ наконец нашел способ сделать это в r использует библиотеку CORElearn

estInfGain <- attrEval(Kyphosis ~ ., kyphosis, estimator="InfGain")
print(estInfGain)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top