R version 2.13.0 (2011-04-13) Copyright (C) 2011 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platform: i486-pc-linux-gnu (32-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > x <- array(list(1966 + ,1 + ,41 + ,1966 + ,2 + ,39 + ,1966 + ,3 + ,50 + ,1966 + ,4 + ,40 + ,1966 + ,5 + ,43 + ,1966 + ,6 + ,38 + ,1966 + ,7 + ,44 + ,1966 + ,8 + ,35 + ,1966 + ,9 + ,39 + ,1966 + ,10 + ,35 + ,1966 + ,11 + ,29 + ,1966 + ,12 + ,49 + ,1967 + ,1 + ,50 + ,1967 + ,2 + ,59 + ,1967 + ,3 + ,63 + ,1967 + ,4 + ,32 + ,1967 + ,5 + ,39 + ,1967 + ,6 + ,47 + ,1967 + ,7 + ,53 + ,1967 + ,8 + ,60 + ,1967 + ,9 + ,57 + ,1967 + ,10 + ,52 + ,1967 + ,11 + ,70 + ,1967 + ,12 + ,90 + ,1968 + ,1 + ,74 + ,1968 + ,2 + ,62 + ,1968 + ,3 + ,55 + ,1968 + ,4 + ,84 + ,1968 + ,5 + ,94 + ,1968 + ,6 + ,70 + ,1968 + ,7 + ,108 + ,1968 + ,8 + ,139 + ,1968 + ,9 + ,120 + ,1968 + ,10 + ,97 + ,1968 + ,11 + ,126 + ,1968 + ,12 + ,149 + ,1969 + ,1 + ,158 + ,1969 + ,2 + ,124 + ,1969 + ,3 + ,140 + ,1969 + ,4 + ,109 + ,1969 + ,5 + ,114 + ,1969 + ,6 + ,77 + ,1969 + ,7 + ,120 + ,1969 + ,8 + ,133 + ,1969 + ,9 + ,110 + ,1969 + ,10 + ,92 + ,1969 + ,11 + ,97 + ,1969 + ,12 + ,78 + ,1970 + ,1 + ,99 + ,1970 + ,2 + ,107 + ,1970 + ,3 + ,112 + ,1970 + ,4 + ,90 + ,1970 + ,5 + ,98 + ,1970 + ,6 + ,125 + ,1970 + ,7 + ,155 + ,1970 + ,8 + ,190 + ,1970 + ,9 + ,236 + ,1970 + ,10 + ,189 + ,1970 + ,11 + ,174 + ,1970 + ,12 + ,178 + ,1971 + ,1 + ,136 + ,1971 + ,2 + ,161 + ,1971 + ,3 + ,171 + ,1971 + ,4 + ,149 + ,1971 + ,5 + ,184 + ,1971 + ,6 + ,155 + ,1971 + ,7 + ,276 + ,1971 + ,8 + ,224 + ,1971 + ,9 + ,213 + ,1971 + ,10 + ,279 + ,1971 + ,11 + ,268 + ,1971 + ,12 + ,287 + ,1972 + ,1 + ,238 + ,1972 + ,2 + ,213 + ,1972 + ,3 + ,257 + ,1972 + ,4 + ,293 + ,1972 + ,5 + ,212 + ,1972 + ,6 + ,246 + ,1972 + ,7 + ,353 + ,1972 + ,8 + ,339 + ,1972 + ,9 + ,308 + ,1972 + ,10 + ,247 + ,1972 + ,11 + ,257 + ,1972 + ,12 + ,322 + ,1973 + ,1 + ,298 + ,1973 + ,2 + ,273 + ,1973 + ,3 + ,312 + ,1973 + ,4 + ,249 + ,1973 + ,5 + ,286 + ,1973 + ,6 + ,279 + ,1973 + ,7 + ,309 + ,1973 + ,8 + ,401 + ,1973 + ,9 + ,309 + ,1973 + ,10 + ,328 + ,1973 + ,11 + ,353 + ,1973 + ,12 + ,354 + ,1974 + ,1 + ,327 + ,1974 + ,2 + ,324 + ,1974 + ,3 + ,285 + ,1974 + ,4 + ,243 + ,1974 + ,5 + ,241 + ,1974 + ,6 + ,287 + ,1974 + ,7 + ,355 + ,1974 + ,8 + ,460 + ,1974 + ,9 + ,364 + ,1974 + ,10 + ,487 + ,1974 + ,11 + ,452 + ,1974 + ,12 + ,391 + ,1975 + ,1 + ,500 + ,1975 + ,2 + ,451 + ,1975 + ,3 + ,375 + ,1975 + ,4 + ,372 + ,1975 + ,5 + ,302 + ,1975 + ,6 + ,316 + ,1975 + ,7 + ,398 + ,1975 + ,8 + ,394 + ,1975 + ,9 + ,431 + ,1975 + ,10 + ,431) + ,dim=c(3 + ,118) + ,dimnames=list(c('Jaar' + ,'maand' + ,'robberies') + ,1:118)) > y <- array(NA,dim=c(3,118),dimnames=list(c('Jaar','maand','robberies'),1:118)) > for (i in 1:dim(x)[1]) + { + for (j in 1:dim(x)[2]) + { + y[i,j] <- as.numeric(x[i,j]) + } + } > par4 = 'no' > par3 = '3' > par2 = 'none' > par1 = '1' > #'GNU S' R Code compiled by R2WASP v. 1.0.44 () > #Author: Dr. Ian E. Holliday > #To cite this work: Ian E. Holliday, 2009, YOUR SOFTWARE TITLE (vNUMBER) in Free Statistics Software (v$_version), Office for Research Development and Education, URL http://www.wessa.net/rwasp_YOURPAGE.wasp/ > #Source of accompanying publication: > #Technical description: > library(party) Loading required package: survival Loading required package: splines Loading required package: grid Loading required package: modeltools Loading required package: stats4 Loading required package: coin Loading required package: mvtnorm Loading required package: zoo Loading required package: sandwich Loading required package: strucchange Loading required package: vcd Loading required package: MASS Loading required package: colorspace > library(Hmisc) Attaching package: 'Hmisc' The following object(s) are masked from 'package:survival': untangle.specials The following object(s) are masked from 'package:base': format.pval, round.POSIXt, trunc.POSIXt, units > par1 <- as.numeric(par1) > par3 <- as.numeric(par3) > x <- data.frame(t(y)) > is.data.frame(x) [1] TRUE > x <- x[!is.na(x[,par1]),] > k <- length(x[1,]) > n <- length(x[,1]) > colnames(x)[par1] [1] "Jaar" > x[,par1] [1] 1966 1966 1966 1966 1966 1966 1966 1966 1966 1966 1966 1966 1967 1967 1967 [16] 1967 1967 1967 1967 1967 1967 1967 1967 1967 1968 1968 1968 1968 1968 1968 [31] 1968 1968 1968 1968 1968 1968 1969 1969 1969 1969 1969 1969 1969 1969 1969 [46] 1969 1969 1969 1970 1970 1970 1970 1970 1970 1970 1970 1970 1970 1970 1970 [61] 1971 1971 1971 1971 1971 1971 1971 1971 1971 1971 1971 1971 1972 1972 1972 [76] 1972 1972 1972 1972 1972 1972 1972 1972 1972 1973 1973 1973 1973 1973 1973 [91] 1973 1973 1973 1973 1973 1973 1974 1974 1974 1974 1974 1974 1974 1974 1974 [106] 1974 1974 1974 1975 1975 1975 1975 1975 1975 1975 1975 1975 1975 > if (par2 == 'kmeans') { + cl <- kmeans(x[,par1], par3) + print(cl) + clm <- matrix(cbind(cl$centers,1:par3),ncol=2) + clm <- clm[sort.list(clm[,1]),] + for (i in 1:par3) { + cl$cluster[cl$cluster==clm[i,2]] <- paste('C',i,sep='') + } + cl$cluster <- as.factor(cl$cluster) + print(cl$cluster) + x[,par1] <- cl$cluster + } > if (par2 == 'quantiles') { + x[,par1] <- cut2(x[,par1],g=par3) + } > if (par2 == 'hclust') { + hc <- hclust(dist(x[,par1])^2, 'cen') + print(hc) + memb <- cutree(hc, k = par3) + dum <- c(mean(x[memb==1,par1])) + for (i in 2:par3) { + dum <- c(dum, mean(x[memb==i,par1])) + } + hcm <- matrix(cbind(dum,1:par3),ncol=2) + hcm <- hcm[sort.list(hcm[,1]),] + for (i in 1:par3) { + memb[memb==hcm[i,2]] <- paste('C',i,sep='') + } + memb <- as.factor(memb) + print(memb) + x[,par1] <- memb + } > if (par2=='equal') { + ed <- cut(as.numeric(x[,par1]),par3,labels=paste('C',1:par3,sep='')) + x[,par1] <- as.factor(ed) + } > table(x[,par1]) 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 12 12 12 12 12 12 12 12 12 10 > colnames(x) [1] "Jaar" "maand" "robberies" > colnames(x)[par1] [1] "Jaar" > x[,par1] [1] 1966 1966 1966 1966 1966 1966 1966 1966 1966 1966 1966 1966 1967 1967 1967 [16] 1967 1967 1967 1967 1967 1967 1967 1967 1967 1968 1968 1968 1968 1968 1968 [31] 1968 1968 1968 1968 1968 1968 1969 1969 1969 1969 1969 1969 1969 1969 1969 [46] 1969 1969 1969 1970 1970 1970 1970 1970 1970 1970 1970 1970 1970 1970 1970 [61] 1971 1971 1971 1971 1971 1971 1971 1971 1971 1971 1971 1971 1972 1972 1972 [76] 1972 1972 1972 1972 1972 1972 1972 1972 1972 1973 1973 1973 1973 1973 1973 [91] 1973 1973 1973 1973 1973 1973 1974 1974 1974 1974 1974 1974 1974 1974 1974 [106] 1974 1974 1974 1975 1975 1975 1975 1975 1975 1975 1975 1975 1975 > if (par2 == 'none') { + m <- ctree(as.formula(paste(colnames(x)[par1],' ~ .',sep='')),data = x) + } > > #Note: the /var/wessaorg/rcomp/createtable file can be downloaded at http://www.wessa.net/cretab > load(file="/var/wessaorg/rcomp/createtable") > > if (par2 != 'none') { + m <- ctree(as.formula(paste('as.factor(',colnames(x)[par1],') ~ .',sep='')),data = x) + if (par4=='yes') { + a<-table.start() + a<-table.row.start(a) + a<-table.element(a,'10-Fold Cross Validation',3+2*par3,TRUE) + a<-table.row.end(a) + a<-table.row.start(a) + a<-table.element(a,'',1,TRUE) + a<-table.element(a,'Prediction (training)',par3+1,TRUE) + a<-table.element(a,'Prediction (testing)',par3+1,TRUE) + a<-table.row.end(a) + a<-table.row.start(a) + a<-table.element(a,'Actual',1,TRUE) + for (jjj in 1:par3) a<-table.element(a,paste('C',jjj,sep=''),1,TRUE) + a<-table.element(a,'CV',1,TRUE) + for (jjj in 1:par3) a<-table.element(a,paste('C',jjj,sep=''),1,TRUE) + a<-table.element(a,'CV',1,TRUE) + a<-table.row.end(a) + for (i in 1:10) { + ind <- sample(2, nrow(x), replace=T, prob=c(0.9,0.1)) + m.ct <- ctree(as.formula(paste('as.factor(',colnames(x)[par1],') ~ .',sep='')),data =x[ind==1,]) + if (i==1) { + m.ct.i.pred <- predict(m.ct, newdata=x[ind==1,]) + m.ct.i.actu <- x[ind==1,par1] + m.ct.x.pred <- predict(m.ct, newdata=x[ind==2,]) + m.ct.x.actu <- x[ind==2,par1] + } else { + m.ct.i.pred <- c(m.ct.i.pred,predict(m.ct, newdata=x[ind==1,])) + m.ct.i.actu <- c(m.ct.i.actu,x[ind==1,par1]) + m.ct.x.pred <- c(m.ct.x.pred,predict(m.ct, newdata=x[ind==2,])) + m.ct.x.actu <- c(m.ct.x.actu,x[ind==2,par1]) + } + } + print(m.ct.i.tab <- table(m.ct.i.actu,m.ct.i.pred)) + numer <- 0 + for (i in 1:par3) { + print(m.ct.i.tab[i,i] / sum(m.ct.i.tab[i,])) + numer <- numer + m.ct.i.tab[i,i] + } + print(m.ct.i.cp <- numer / sum(m.ct.i.tab)) + print(m.ct.x.tab <- table(m.ct.x.actu,m.ct.x.pred)) + numer <- 0 + for (i in 1:par3) { + print(m.ct.x.tab[i,i] / sum(m.ct.x.tab[i,])) + numer <- numer + m.ct.x.tab[i,i] + } + print(m.ct.x.cp <- numer / sum(m.ct.x.tab)) + for (i in 1:par3) { + a<-table.row.start(a) + a<-table.element(a,paste('C',i,sep=''),1,TRUE) + for (jjj in 1:par3) a<-table.element(a,m.ct.i.tab[i,jjj]) + a<-table.element(a,round(m.ct.i.tab[i,i]/sum(m.ct.i.tab[i,]),4)) + for (jjj in 1:par3) a<-table.element(a,m.ct.x.tab[i,jjj]) + a<-table.element(a,round(m.ct.x.tab[i,i]/sum(m.ct.x.tab[i,]),4)) + a<-table.row.end(a) + } + a<-table.row.start(a) + a<-table.element(a,'Overall',1,TRUE) + for (jjj in 1:par3) a<-table.element(a,'-') + a<-table.element(a,round(m.ct.i.cp,4)) + for (jjj in 1:par3) a<-table.element(a,'-') + a<-table.element(a,round(m.ct.x.cp,4)) + a<-table.row.end(a) + a<-table.end(a) + table.save(a,file="/var/wessaorg/rcomp/tmp/1ikg41323865584.tab") + } + } > m Conditional inference tree with 9 terminal nodes Response: Jaar Inputs: maand, robberies Number of observations: 118 1) robberies <= 190; criterion = 1, statistic = 100.673 2) robberies <= 74; criterion = 1, statistic = 46.274 3) robberies <= 50; criterion = 1, statistic = 14.285 4)* weights = 16 3) robberies > 50 5)* weights = 11 2) robberies > 74 6) robberies <= 149; criterion = 0.997, statistic = 10.021 7) maand <= 6; criterion = 0.998, statistic = 10.922 8)* weights = 15 7) maand > 6 9)* weights = 13 6) robberies > 149 10)* weights = 10 1) robberies > 190 11) robberies <= 354; criterion = 1, statistic = 22.671 12) maand <= 6; criterion = 0.985, statistic = 7.19 13) robberies <= 279; criterion = 0.977, statistic = 6.385 14)* weights = 10 13) robberies > 279 15)* weights = 10 12) maand > 6 16)* weights = 18 11) robberies > 354 17)* weights = 15 > postscript(file="/var/wessaorg/rcomp/tmp/2dp6u1323865584.ps",horizontal=F,onefile=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556) > plot(m) > dev.off() null device 1 > postscript(file="/var/wessaorg/rcomp/tmp/3av9m1323865584.ps",horizontal=F,onefile=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556) > plot(x[,par1] ~ as.factor(where(m)),main='Response by Terminal Node',xlab='Terminal Node',ylab='Response') > dev.off() null device 1 > if (par2 == 'none') { + forec <- predict(m) + result <- as.data.frame(cbind(x[,par1],forec,x[,par1]-forec)) + colnames(result) <- c('Actuals','Forecasts','Residuals') + print(result) + } Actuals Forecasts Residuals 1 1966 1966.250 -0.2500000 2 1966 1966.250 -0.2500000 3 1966 1966.250 -0.2500000 4 1966 1966.250 -0.2500000 5 1966 1966.250 -0.2500000 6 1966 1966.250 -0.2500000 7 1966 1966.250 -0.2500000 8 1966 1966.250 -0.2500000 9 1966 1966.250 -0.2500000 10 1966 1966.250 -0.2500000 11 1966 1966.250 -0.2500000 12 1966 1966.250 -0.2500000 13 1967 1966.250 0.7500000 14 1967 1967.364 -0.3636364 15 1967 1967.364 -0.3636364 16 1967 1966.250 0.7500000 17 1967 1966.250 0.7500000 18 1967 1966.250 0.7500000 19 1967 1967.364 -0.3636364 20 1967 1967.364 -0.3636364 21 1967 1967.364 -0.3636364 22 1967 1967.364 -0.3636364 23 1967 1967.364 -0.3636364 24 1967 1968.385 -1.3846154 25 1968 1967.364 0.6363636 26 1968 1967.364 0.6363636 27 1968 1967.364 0.6363636 28 1968 1969.533 -1.5333333 29 1968 1969.533 -1.5333333 30 1968 1967.364 0.6363636 31 1968 1968.385 -0.3846154 32 1968 1968.385 -0.3846154 33 1968 1968.385 -0.3846154 34 1968 1968.385 -0.3846154 35 1968 1968.385 -0.3846154 36 1968 1968.385 -0.3846154 37 1969 1970.300 -1.3000000 38 1969 1969.533 -0.5333333 39 1969 1969.533 -0.5333333 40 1969 1969.533 -0.5333333 41 1969 1969.533 -0.5333333 42 1969 1969.533 -0.5333333 43 1969 1968.385 0.6153846 44 1969 1968.385 0.6153846 45 1969 1968.385 0.6153846 46 1969 1968.385 0.6153846 47 1969 1968.385 0.6153846 48 1969 1968.385 0.6153846 49 1970 1969.533 0.4666667 50 1970 1969.533 0.4666667 51 1970 1969.533 0.4666667 52 1970 1969.533 0.4666667 53 1970 1969.533 0.4666667 54 1970 1969.533 0.4666667 55 1970 1970.300 -0.3000000 56 1970 1970.300 -0.3000000 57 1970 1971.833 -1.8333333 58 1970 1970.300 -0.3000000 59 1970 1970.300 -0.3000000 60 1970 1970.300 -0.3000000 61 1971 1969.533 1.4666667 62 1971 1970.300 0.7000000 63 1971 1970.300 0.7000000 64 1971 1969.533 1.4666667 65 1971 1970.300 0.7000000 66 1971 1970.300 0.7000000 67 1971 1971.833 -0.8333333 68 1971 1971.833 -0.8333333 69 1971 1971.833 -0.8333333 70 1971 1971.833 -0.8333333 71 1971 1971.833 -0.8333333 72 1971 1971.833 -0.8333333 73 1972 1972.700 -0.7000000 74 1972 1972.700 -0.7000000 75 1972 1972.700 -0.7000000 76 1972 1973.700 -1.7000000 77 1972 1972.700 -0.7000000 78 1972 1972.700 -0.7000000 79 1972 1971.833 0.1666667 80 1972 1971.833 0.1666667 81 1972 1971.833 0.1666667 82 1972 1971.833 0.1666667 83 1972 1971.833 0.1666667 84 1972 1971.833 0.1666667 85 1973 1973.700 -0.7000000 86 1973 1972.700 0.3000000 87 1973 1973.700 -0.7000000 88 1973 1972.700 0.3000000 89 1973 1973.700 -0.7000000 90 1973 1972.700 0.3000000 91 1973 1971.833 1.1666667 92 1973 1974.467 -1.4666667 93 1973 1971.833 1.1666667 94 1973 1971.833 1.1666667 95 1973 1971.833 1.1666667 96 1973 1971.833 1.1666667 97 1974 1973.700 0.3000000 98 1974 1973.700 0.3000000 99 1974 1973.700 0.3000000 100 1974 1972.700 1.3000000 101 1974 1972.700 1.3000000 102 1974 1973.700 0.3000000 103 1974 1974.467 -0.4666667 104 1974 1974.467 -0.4666667 105 1974 1974.467 -0.4666667 106 1974 1974.467 -0.4666667 107 1974 1974.467 -0.4666667 108 1974 1974.467 -0.4666667 109 1975 1974.467 0.5333333 110 1975 1974.467 0.5333333 111 1975 1974.467 0.5333333 112 1975 1974.467 0.5333333 113 1975 1973.700 1.3000000 114 1975 1973.700 1.3000000 115 1975 1974.467 0.5333333 116 1975 1974.467 0.5333333 117 1975 1974.467 0.5333333 118 1975 1974.467 0.5333333 > if (par2 != 'none') { + print(cbind(as.factor(x[,par1]),predict(m))) + myt <- table(as.factor(x[,par1]),predict(m)) + print(myt) + } > postscript(file="/var/wessaorg/rcomp/tmp/4ooa31323865584.ps",horizontal=F,onefile=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556) > if(par2=='none') { + op <- par(mfrow=c(2,2)) + plot(density(result$Actuals),main='Kernel Density Plot of Actuals') + plot(density(result$Residuals),main='Kernel Density Plot of Residuals') + plot(result$Forecasts,result$Actuals,main='Actuals versus Predictions',xlab='Predictions',ylab='Actuals') + plot(density(result$Forecasts),main='Kernel Density Plot of Predictions') + par(op) + } > if(par2!='none') { + plot(myt,main='Confusion Matrix',xlab='Actual',ylab='Predicted') + } > dev.off() null device 1 > if (par2 == 'none') { + detcoef <- cor(result$Forecasts,result$Actuals) + a<-table.start() + a<-table.row.start(a) + a<-table.element(a,'Goodness of Fit',2,TRUE) + a<-table.row.end(a) + a<-table.row.start(a) + a<-table.element(a,'Correlation',1,TRUE) + a<-table.element(a,round(detcoef,4)) + a<-table.row.end(a) + a<-table.row.start(a) + a<-table.element(a,'R-squared',1,TRUE) + a<-table.element(a,round(detcoef*detcoef,4)) + a<-table.row.end(a) + a<-table.row.start(a) + a<-table.element(a,'RMSE',1,TRUE) + a<-table.element(a,round(sqrt(mean((result$Residuals)^2)),4)) + a<-table.row.end(a) + a<-table.end(a) + table.save(a,file="/var/wessaorg/rcomp/tmp/5gj1g1323865584.tab") + a<-table.start() + a<-table.row.start(a) + a<-table.element(a,'Actuals, Predictions, and Residuals',4,TRUE) + a<-table.row.end(a) + a<-table.row.start(a) + a<-table.element(a,'#',header=TRUE) + a<-table.element(a,'Actuals',header=TRUE) + a<-table.element(a,'Forecasts',header=TRUE) + a<-table.element(a,'Residuals',header=TRUE) + a<-table.row.end(a) + for (i in 1:length(result$Actuals)) { + a<-table.row.start(a) + a<-table.element(a,i,header=TRUE) + a<-table.element(a,result$Actuals[i]) + a<-table.element(a,result$Forecasts[i]) + a<-table.element(a,result$Residuals[i]) + a<-table.row.end(a) + } + a<-table.end(a) + table.save(a,file="/var/wessaorg/rcomp/tmp/63qsy1323865584.tab") + } > if (par2 != 'none') { + a<-table.start() + a<-table.row.start(a) + a<-table.element(a,'Confusion Matrix (predicted in columns / actuals in rows)',par3+1,TRUE) + a<-table.row.end(a) + a<-table.row.start(a) + a<-table.element(a,'',1,TRUE) + for (i in 1:par3) { + a<-table.element(a,paste('C',i,sep=''),1,TRUE) + } + a<-table.row.end(a) + for (i in 1:par3) { + a<-table.row.start(a) + a<-table.element(a,paste('C',i,sep=''),1,TRUE) + for (j in 1:par3) { + a<-table.element(a,myt[i,j]) + } + a<-table.row.end(a) + } + a<-table.end(a) + table.save(a,file="/var/wessaorg/rcomp/tmp/7ofap1323865584.tab") + } > > try(system("convert tmp/2dp6u1323865584.ps tmp/2dp6u1323865584.png",intern=TRUE)) character(0) > try(system("convert tmp/3av9m1323865584.ps tmp/3av9m1323865584.png",intern=TRUE)) character(0) > try(system("convert tmp/4ooa31323865584.ps tmp/4ooa31323865584.png",intern=TRUE)) character(0) > > > proc.time() user system elapsed 3.130 0.288 3.466