C'è un'equivalenza di “ANOVA” (LM) per un oggetto rpart?
-
25-09-2019 - |
Domanda
Quando si utilizza la funzione di rpart
R, posso facilmente adattare un modello con esso. per esempio:
# 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)
La mia domanda è - Come posso misurare "l'importanza" di ciascuno dei miei tre variabili esplicative (età, numero, di avvio) per il modello?
Se questo fosse un modello di regressione, avrei potuto guardato p-value dal "ANOVA" F-test (tra i modelli lm
con e senza la variabile). Ma ciò che è l'equivalenza di utilizzare "ANOVA" su lm
ad un oggetto rpart
?
(spero sono riuscito a fare la mia domanda chiara)
Grazie.
Soluzione
Naturalmente anova sarebbe impossibile, come anova comporta calcolando la variazione totale nella variabile di risposta e il partizionamento in componenti informativi (SSA, SSE). Non riesco a vedere come si possa calcolare la somma dei quadrati per una variabile categoriale come cifosi.
Credo che quello che in realtà parlando è Selezione Attributo (o valutazione). Vorrei utilizzare la misura information gain
per esempio. Credo che questo è quello che viene utilizzato per selezionare l'attributo di prova a ciascun nodo dell'albero e l'attributo con il più alto guadagno informazione (o maggiore riduzione entropia) viene scelta come attributo test per il nodo corrente. Questo attributo riduce al minimo le informazioni necessarie per classificare i campioni nelle partizioni risultanti.
Non sono a conoscenza se v'è un metodo di attributi classifica in base al loro guadagno informazioni in R, ma so che c'è in WEKA e prende il nome InfoGainAttributeEval Si valuta il valore di un attributo misurando il guadagno di informazioni rispetto alla classe. E se si utilizza Ranker
come il Search Method
, gli attributi sono classificate per le loro valutazioni individuali.
Modifica
Ho finalmente trovato un modo per fare questo in R utilizzando CORElearn
Biblioteca
estInfGain <- attrEval(Kyphosis ~ ., kyphosis, estimator="InfGain")
print(estInfGain)