Есть ли эквивалентность «Анова» (для LM) к объекту RPART?
-
25-09-2019 - |
Вопрос
При использовании 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)