Há uma equivalência de "anova" (para lm) para um rpart objeto?
-
25-09-2019 - |
Pergunta
Quando utilizar o R rpart
função, pode ajustar facilmente um modelo com ele.por exemplo:
# 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)
A minha pergunta é - Como posso medir a "importância" de cada um dos meus três variáveis explicativas (Idade, Número de Iniciar) para o modelo?
Se se tratava de um modelo de regressão, eu poderia ter olhado p-valores do "anova" F-teste (entre lm
modelos com e sem a variável).Mas o que é a equivalência de usar "anova" na lm
para um rpart
objeto?
(Espero que eu consegui fazer a minha pergunta clara)
Obrigado.
Solução
Claro anova seria impossível, como anova envolve o cálculo da variação total na variável de resposta e de particionamento no informativo componentes (ASS ESS).Eu não consigo ver como pode-se calcular a soma dos quadrados de uma variável categórica, como a Cifose.
Eu acho que o que você realmente falando é a Seleção de Atributo (ou avaliação).Gostaria de usar o information gain
medir, por exemplo.Eu acho que isso é o que é usado para selecionar o atributo de teste em cada nó da árvore e o atributo com o maior de informações ganho (ou maior redução de entropia) é escolhido como o teste de atributo para o nó atual.Este atributo minimiza a informação necessária para classificar as amostras resultantes partições.
Não tenho conhecimento se existe um método de classificação de atributos de acordo com suas informações ganho em R, mas eu sei que não há no WEKA e é chamado de InfoGainAttributeEval Ele avalia que o valor de um atributo medindo as informações ganho com relação à classe.E se você usar Ranker
como o Search Method
, os atributos são classificados de acordo com suas avaliações individuais.
EDITAR
Eu finalmente encontrei uma maneira de fazer isto no R utilizando a Biblioteca CORElearn
estInfGain <- attrEval(Kyphosis ~ ., kyphosis, estimator="InfGain")
print(estInfGain)