J'ai simulé des données pour créer un arbre de régression avec 3 noeuds terminaux:Arbre de régression avec des données simulées - paquet rpart
set.seed(1988)
n=1000
X1<-rnorm(n,mean=0,sd=2)
X2<-rnorm(n,mean=0,sd=2)
e<-rnorm(n)
Y=5*I(X1<1)*I(X2<0.2)+4*I(X1<1)*I(X2>=0.2)+3*I(X1>=1)+e
mydat=as.data.frame(cbind(Y,X1,X2))
Donc, je veux d'abord diviser par X1 < 1, et pour X1 < 1 Je veux diviser par X2 < 0,2. Les valeurs de Y dans les feuilles sont le coefficient de l'indicateur.
Si j'exécute la procédure implémentée dans le paquet RPART tout va bien dans le cas ci-dessus.
mytree<-rpart(Y~.,data=mydat)
mytree
Sortie:
node), split, n, deviance, yval
* denotes terminal node
1) root 1000 1627.0670 4.043696
2) X1>=0.9490461 326 373.8485 3.124825 *
3) X1< 0.9490461 674 844.8367 4.488135
6) X2>=0.2488142 327 312.7506 3.970742 *
7) X2< 0.2488142 347 362.0582 4.975708 *
Il fonctionne aussi si je tente avec un coefficient négatif. Mais quand j'essaie de générer des valeurs négatives et des valeurs positives dans les termes finaux (cela signifie dans "l'interaction" de l'arbre, donc où la division est divisée à un second niveau), RPART change l'ordre de la division et valeur dans les feuilles ne sont pas correctes:
Y=-5*I(X1<1)*I(X2<0.2)+4*I(X1<1)*I(X2>=0.2)+3*I(X1>=1)+e
mydat=as.data.frame(cbind(Y,X1,X2))
mytree<-rpart(Y~.,data=mydat)
mytree
sortie:
node), split, n, deviance, yval
* denotes terminal node
1) root 1000 17811.4000 0.6136962
2) X2< 0.1974489 515 8116.5350 -2.3192910
4) X1< 1.002815 343 359.7394 -5.0305350 *
5) X1>=1.002815 172 207.4313 3.0874360 *
3) X2>=0.1974489 485 560.3419 3.7281050 *
Quelqu'un at-il une idée de ce problème?
Merci
Merci, maintenant il fonctionne! –