2017-09-14 14 views
1

Dans le package partykit, il est possible de créer des arborescences personnalisées en spécifiant un prédicteur et un split. Par exemple:R-partykit - nœuds et séparations d'arbres de modèles personnalisés

data("WeatherPlay", package = "partykit") 

#create a split 
sp_o <- partysplit(3L, breaks = 75) 

#create a node 
n1 <- partynode(id = 1L, split = sp_o, kids = lapply(2L:3L, partynode)) 

#and make a "tree" out of it 
t2 <- party(
    n1, 
    data = WeatherPlay, 
    fitted = data.frame(
    "(fitted)" = fitted_node(n1, data = WeatherPlay), 
    "(response)" = WeatherPlay$play, 
    check.names = FALSE 
), 
    terms = terms(play ~ ., data = WeatherPlay), 
) 

t2 <- as.constparty(t2) 
t2 
plot(t2) 

Est-ce possible pour les arbres modèles (retournés par la foule())? Puis-je construire le nœud de l'arbre par nœud, puis adapter la fonction spécifiée aux nœuds terminaux?

Répondre

1

En principe, il est possible de construire un objet "modelparty" (retourné par mob()) à la main. Cependant, il n'y a pas une simple fonction de coercition comme as.constparty() dans l'exemple que vous citez. La raison en est que pour construire les arbres modèles, et pour imprimer et surtout prévoir avec eux, des informations beaucoup plus détaillées sur le modèle sont nécessaires.

Je recommande de construire la structure de l'arbre ("partynode") d'abord, puis remplir la fente $info globale (avec call, formula, Formula, terms, fit, control, dots et nreg). Et puis il devrait être possible d'appeler le refit.modelparty() pour réaménager les modèles dans tous les nœuds terminaux. Et cela peut alors être utilisé pour remplir le $node$info (avec coefficients, objfun, nobs, ...).

Clause de non-responsabilité: Tout ceci n'a absolument pas été testé. Mais au lieu d'imiter "modelparty" vous pouvez, bien sûr, également créer votre propre façon de stocker les modèles dans l'objet "party" et utiliser simplement des blocs de construction plus basiques fournis par partykit.

+0

Merci pour la réponse. Je ne savais pas si je ne manquais pas certains outils déjà mis en œuvre pour cela ... de sorte que je ne réinvente pas la roue :) –

+0

Bien sûr, pas de problème. Nous pourrions étendre 'partykit' dans le futur dans cette direction. Nous travaillons sur quelques idées qui permettraient de brancher différents critères de partage, etc. Mais pour l'instant, la meilleure approche consiste à "rouler le vôtre". –