R version 2.8.0 (2008-10-20) Copyright (C) 2008 The R Foundation for Statistical Computing ISBN 3-900051-07-0 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. Natural language support but running in an English locale 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(104.37 + ,1 + ,1 + ,167.16 + ,101.56 + ,100.93 + ,104.89 + ,2 + ,2 + ,179.84 + ,102.13 + ,101.18 + ,105.15 + ,3 + ,3 + ,174.44 + ,102.39 + ,101.11 + ,105.72 + ,4 + ,4 + ,180.35 + ,102.42 + ,102.42 + ,106.38 + ,5 + ,5 + ,193.17 + ,103.87 + ,102.37 + ,106.40 + ,6 + ,6 + ,195.16 + ,104.44 + ,101.95 + ,106.47 + ,7 + ,7 + ,202.43 + ,104.97 + ,102.20 + ,106.59 + ,8 + ,8 + ,189.91 + ,105.17 + ,103.35 + ,106.76 + ,9 + ,9 + ,195.98 + ,105.35 + ,103.65 + ,107.35 + ,10 + ,10 + ,212.09 + ,104.65 + ,102.06 + ,107.81 + ,11 + ,11 + ,205.81 + ,106.62 + ,102.66 + ,108.03 + ,12 + ,12 + ,204.31 + ,107.05 + ,102.32 + ,109.08 + ,1 + ,13 + ,196.07 + ,112.30 + ,102.21 + ,109.86 + ,2 + ,14 + ,199.98 + ,114.70 + ,102.33 + ,110.29 + ,3 + ,15 + ,199.1 + ,115.40 + ,104.41 + ,110.34 + ,4 + ,16 + ,198.31 + ,115.64 + ,104.33 + ,110.59 + ,5 + ,17 + ,195.72 + ,115.66 + ,105.27 + ,110.64 + ,6 + ,18 + ,223.04 + ,114.50 + ,105.34 + ,110.83 + ,7 + ,19 + ,238.41 + ,115.14 + ,104.88 + ,111.51 + ,8 + ,20 + ,259.73 + ,115.41 + ,105.49 + ,113.32 + ,9 + ,21 + ,326.54 + ,119.32 + ,105.90 + ,115.89 + ,10 + ,22 + ,335.15 + ,124.77 + ,105.39 + ,116.51 + ,11 + ,23 + ,321.81 + ,130.96 + ,104.40 + ,117.44 + ,12 + ,24 + ,368.62 + ,141.02 + ,106.19 + ,118.25 + ,1 + ,25 + ,369.59 + ,150.60 + ,106.54 + ,118.65 + ,2 + ,26 + ,425 + ,151.10 + ,108.26 + ,118.52 + ,3 + ,27 + ,439.72 + ,157.19 + ,106.95 + ,119.07 + ,4 + ,28 + ,362.23 + ,157.28 + ,108.32 + ,119.12 + ,5 + ,29 + ,328.76 + ,156.54 + ,108.35 + ,119.28 + ,6 + ,30 + ,348.55 + ,159.62 + ,109.29 + ,119.30 + ,7 + ,31 + ,328.18 + ,163.77 + ,109.46 + ,119.44 + ,8 + ,32 + ,329.34 + ,165.08 + ,109.50 + ,119.57 + ,9 + ,33 + ,295.55 + ,164.75 + ,109.84 + ,119.93 + ,10 + ,34 + ,237.38 + ,163.93 + ,108.73 + ,120.03 + ,11 + ,35 + ,226.85 + ,157.51 + ,109.38 + ,119.66 + ,12 + ,36 + ,220.14 + ,153.36 + ,109.97 + ,119.46 + ,1 + ,37 + ,239.36 + ,156.83 + ,111.10 + ,119.48 + ,2 + ,38 + ,224.69 + ,154.98 + ,110.53 + ,119.56 + ,3 + ,39 + ,230.98 + ,155.02 + ,110.23 + ,119.43 + ,4 + ,40 + ,233.47 + ,153.34 + ,109.41 + ,119.57 + ,5 + ,41 + ,256.7 + ,153.19 + ,108.94 + ,119.59 + ,6 + ,42 + ,253.41 + ,152.80 + ,109.81 + ,119.50 + ,7 + ,43 + ,224.95 + ,152.97 + ,109.20 + ,119.54 + ,8 + ,44 + ,210.37 + ,152.96 + ,109.45 + ,119.56 + ,9 + ,45 + ,191.09 + ,152.35 + ,110.61 + ,119.61 + ,10 + ,46 + ,198.85 + ,151.88 + ,109.44 + ,119.64 + ,11 + ,47 + ,211.04 + ,150.27 + ,109.77 + ,119.60 + ,12 + ,48 + ,206.25 + ,148.80 + ,108.04 + ,119.71 + ,1 + ,49 + ,201.19 + ,149.28 + ,109.65 + ,119.72 + ,2 + ,50 + ,194.37 + ,148.64 + ,111.69 + ,119.66 + ,3 + ,51 + ,191.08 + ,150.36 + ,111.65 + ,119.76 + ,4 + ,52 + ,192.87 + ,149.69 + ,112.04 + ,119.80 + ,5 + ,53 + ,181.61 + ,152.94 + ,111.42 + ,119.88 + ,6 + ,54 + ,157.67 + ,155.18 + ,112.25 + ,119.78 + ,7 + ,55 + ,196.14 + ,156.32 + ,111.46 + ,120.08 + ,8 + ,56 + ,246.35 + ,156.25 + ,111.62 + ,120.22 + ,9 + ,57 + ,271.9 + ,155.52 + ,111.77) + ,dim=c(6 + ,57) + ,dimnames=list(c('Brood' + ,'Maand' + ,'Trend' + ,'Tarwe' + ,'Meel' + ,'Water') + ,1:57)) > y <- array(NA,dim=c(6,57),dimnames=list(c('Brood','Maand','Trend','Tarwe','Meel','Water'),1:57)) > 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 = '' > par2 = 'none' > par1 = '1' > 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 Attaching package: 'zoo' The following object(s) are masked from package:base : as.Date.numeric 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] "Brood" > x[,par1] [1] 104.37 104.89 105.15 105.72 106.38 106.40 106.47 106.59 106.76 107.35 [11] 107.81 108.03 109.08 109.86 110.29 110.34 110.59 110.64 110.83 111.51 [21] 113.32 115.89 116.51 117.44 118.25 118.65 118.52 119.07 119.12 119.28 [31] 119.30 119.44 119.57 119.93 120.03 119.66 119.46 119.48 119.56 119.43 [41] 119.57 119.59 119.50 119.54 119.56 119.61 119.64 119.60 119.71 119.72 [51] 119.66 119.76 119.80 119.88 119.78 120.08 120.22 > 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]) 104.37 104.89 105.15 105.72 106.38 106.4 106.47 106.59 106.76 107.35 107.81 1 1 1 1 1 1 1 1 1 1 1 108.03 109.08 109.86 110.29 110.34 110.59 110.64 110.83 111.51 113.32 115.89 1 1 1 1 1 1 1 1 1 1 1 116.51 117.44 118.25 118.52 118.65 119.07 119.12 119.28 119.3 119.43 119.44 1 1 1 1 1 1 1 1 1 1 1 119.46 119.48 119.5 119.54 119.56 119.57 119.59 119.6 119.61 119.64 119.66 1 1 1 1 2 2 1 1 1 1 2 119.71 119.72 119.76 119.78 119.8 119.88 119.93 120.03 120.08 120.22 1 1 1 1 1 1 1 1 1 1 > colnames(x) [1] "Brood" "Maand" "Trend" "Tarwe" "Meel" "Water" > colnames(x)[par1] [1] "Brood" > x[,par1] [1] 104.37 104.89 105.15 105.72 106.38 106.40 106.47 106.59 106.76 107.35 [11] 107.81 108.03 109.08 109.86 110.29 110.34 110.59 110.64 110.83 111.51 [21] 113.32 115.89 116.51 117.44 118.25 118.65 118.52 119.07 119.12 119.28 [31] 119.30 119.44 119.57 119.93 120.03 119.66 119.46 119.48 119.56 119.43 [41] 119.57 119.59 119.50 119.54 119.56 119.61 119.64 119.60 119.71 119.72 [51] 119.66 119.76 119.80 119.88 119.78 120.08 120.22 > if (par2 == 'none') { + m <- ctree(as.formula(paste(colnames(x)[par1],' ~ .',sep='')),data = x) + } > > #Note: the /var/www/html/freestat/rcomp/createtable file can be downloaded at http://www.wessa.net/cretab > load(file="/var/www/html/freestat/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/www/html/freestat/rcomp/tmp/1krdv1293210371.tab") + } + } > m Conditional inference tree with 6 terminal nodes Response: Brood Inputs: Maand, Trend, Tarwe, Meel, Water Number of observations: 57 1) Meel <= 119.32; criterion = 1, statistic = 53.077 2) Trend <= 12; criterion = 1, statistic = 19.334 3)* weights = 12 2) Trend > 12 4)* weights = 9 1) Meel > 119.32 5) Water <= 108.26; criterion = 1, statistic = 24.72 6)* weights = 7 5) Water > 108.26 7) Trend <= 47; criterion = 0.999, statistic = 13.827 8) Tarwe <= 253.41; criterion = 0.985, statistic = 8.767 9)* weights = 13 8) Tarwe > 253.41 10)* weights = 7 7) Trend > 47 11)* weights = 9 > postscript(file="/var/www/html/freestat/rcomp/tmp/2krdv1293210371.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/www/html/freestat/rcomp/tmp/3krdv1293210371.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 104.37 106.3267 -1.956666667 2 104.89 106.3267 -1.436666667 3 105.15 106.3267 -1.176666667 4 105.72 106.3267 -0.606666667 5 106.38 106.3267 0.053333333 6 106.40 106.3267 0.073333333 7 106.47 106.3267 0.143333333 8 106.59 106.3267 0.263333333 9 106.76 106.3267 0.433333333 10 107.35 106.3267 1.023333333 11 107.81 106.3267 1.483333333 12 108.03 106.3267 1.703333333 13 109.08 110.7178 -1.637777778 14 109.86 110.7178 -0.857777778 15 110.29 110.7178 -0.427777778 16 110.34 110.7178 -0.377777778 17 110.59 110.7178 -0.127777778 18 110.64 110.7178 -0.077777778 19 110.83 110.7178 0.112222222 20 111.51 110.7178 0.792222222 21 113.32 110.7178 2.602222222 22 115.89 117.8371 -1.947142857 23 116.51 117.8371 -1.327142857 24 117.44 117.8371 -0.397142857 25 118.25 117.8371 0.412857143 26 118.65 117.8371 0.812857143 27 118.52 117.8371 0.682857143 28 119.07 119.3357 -0.265714286 29 119.12 119.3357 -0.215714286 30 119.28 119.3357 -0.055714286 31 119.30 119.3357 -0.035714286 32 119.44 119.3357 0.104285714 33 119.57 119.3357 0.234285714 34 119.93 119.6146 0.315384615 35 120.03 119.6146 0.415384615 36 119.66 119.6146 0.045384615 37 119.46 119.6146 -0.154615385 38 119.48 119.6146 -0.134615385 39 119.56 119.6146 -0.054615385 40 119.43 119.6146 -0.184615385 41 119.57 119.3357 0.234285714 42 119.59 119.6146 -0.024615385 43 119.50 119.6146 -0.114615385 44 119.54 119.6146 -0.074615385 45 119.56 119.6146 -0.054615385 46 119.61 119.6146 -0.004615385 47 119.64 119.6146 0.025384615 48 119.60 117.8371 1.762857143 49 119.71 119.8456 -0.135555556 50 119.72 119.8456 -0.125555556 51 119.66 119.8456 -0.185555556 52 119.76 119.8456 -0.085555556 53 119.80 119.8456 -0.045555556 54 119.88 119.8456 0.034444444 55 119.78 119.8456 -0.065555556 56 120.08 119.8456 0.234444444 57 120.22 119.8456 0.374444444 > if (par2 != 'none') { + print(cbind(as.factor(x[,par1]),predict(m))) + myt <- table(as.factor(x[,par1]),predict(m)) + print(myt) + } > postscript(file="/var/www/html/freestat/rcomp/tmp/4didy1293210371.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/www/html/freestat/rcomp/tmp/5rasp1293210371.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/www/html/freestat/rcomp/tmp/6jjaa1293210371.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/www/html/freestat/rcomp/tmp/7n2qy1293210371.tab") + } > > try(system("convert tmp/2krdv1293210371.ps tmp/2krdv1293210371.png",intern=TRUE)) character(0) > try(system("convert tmp/3krdv1293210371.ps tmp/3krdv1293210371.png",intern=TRUE)) character(0) > try(system("convert tmp/4didy1293210371.ps tmp/4didy1293210371.png",intern=TRUE)) character(0) > > > proc.time() user system elapsed 3.988 0.744 4.144