[R] rpart memory problem
jenniferbecq@free.fr
jenniferbecq at free.fr
Mon Mar 21 17:13:50 CET 2005
Hi everyone,
I have a problem using rpart (R 2.0.1 under Unix)
Indeed, I have a large matrix (9271x7), my response variable is numeric and all
my predictor variables are categorical (from 3 to 8 levels).
Here is an example :
> mydata[1:5,]
distance group3 group4 group5 group6 group7 group8
pos_1 0.141836040224967 a c e a g g
pos_501 0.153605961621317 a a a a g g
pos_1001 0.152246705384699 a c e a g g
pos_1501 0.145563737522463 a c e a g g
pos_2001 0.143940027378837 a c e e g g
When using rpart() as follow, the program runs for ages, and after a few hours,
R is abruptly killed :
library(rpart)
fit <- rpart(distance ~ ., data = mydata)
When I change the categorical variables into numeric values (e.g. a = 1, b = 2,
c = 3, etc...), the program runs normally in a few seconds. But this is not
what I want because it separates my variables according to "group7 > 4.5"
(continuous) and not "group7 = a,b,d,f" or "c,e,g" (discrete).
here is the result :
>fit
n= 9271
node), split, n, deviance, yval
* denotes terminal node
1) root 9271 28.43239000 0.1768883
2) group7>=4.5 5830 4.87272700 0.1534626
4) group5< 5.5 5783 3.29538700 0.1520110
8) group5>=4.5 3068 0.68517040 0.1412967 *
9) group5< 4.5 2715 1.86003600 0.1641184 *
5) group5>=5.5 47 0.06597044 0.3320614 *
3) group7< 4.5 3441 14.93984000 0.2165781
6) group5< 1.5 1461 1.00414700 0.1906630 *
7) group5>=1.5 1980 12.23050000 0.2357002
14) group6>=2.5 1659 2.95395700 0.2090232
28) group3>=2.5 1315 1.65184200 0.1957505 *
29) group3< 2.5 344 0.18490260 0.2597607 *
15) group6< 2.5 321 1.99404400 0.3735729 *
When I create a small dataframe such as the example above, e.g. :
distance = rnorm(5,0.15,0.01)
group3 = c("a","a","a","a","a")
group4 = c("c","a","c","c","c")
group5 = c("e","a","e","e","e")
group6 = c("a","a","a","a","e")
smalldata = data.frame(cbind(distance,group3,group4,group5,group6))
The program runs normally in a few seconds.
Why does it work using the large dataset whith only numeric values but not with
categorical predictor variables ?
I have the impression that it considers my response variable also as a
categorical variable and therefore it can't handle 9271 levels, which is quite
normal. Is there a way to solve this problem ?
I thank you all for your time and help,
Jennifer Becq
More information about the R-help
mailing list