x <- array(list(13 ,13 ,14 ,13 ,3 ,12 ,12 ,8 ,13 ,5 ,15 ,10 ,12 ,16 ,6 ,12 ,9 ,7 ,12 ,6 ,10 ,10 ,10 ,11 ,5 ,12 ,12 ,7 ,12 ,3 ,15 ,13 ,16 ,18 ,8 ,9 ,12 ,11 ,11 ,4 ,12 ,12 ,14 ,14 ,4 ,11 ,6 ,6 ,9 ,4 ,11 ,5 ,16 ,14 ,6 ,11 ,12 ,11 ,12 ,6 ,15 ,11 ,16 ,11 ,5 ,7 ,14 ,12 ,12 ,4 ,11 ,14 ,7 ,13 ,6 ,11 ,12 ,13 ,11 ,4 ,10 ,12 ,11 ,12 ,6 ,14 ,11 ,15 ,16 ,6 ,10 ,11 ,7 ,9 ,4 ,6 ,7 ,9 ,11 ,4 ,11 ,9 ,7 ,13 ,2 ,15 ,11 ,14 ,15 ,7 ,11 ,11 ,15 ,10 ,5 ,12 ,12 ,7 ,11 ,4 ,14 ,12 ,15 ,13 ,6 ,15 ,11 ,17 ,16 ,6 ,9 ,11 ,15 ,15 ,7 ,13 ,8 ,14 ,14 ,5 ,13 ,9 ,14 ,14 ,6 ,16 ,12 ,8 ,14 ,4 ,13 ,10 ,8 ,8 ,4 ,12 ,10 ,14 ,13 ,7 ,14 ,12 ,14 ,15 ,7 ,11 ,8 ,8 ,13 ,4 ,9 ,12 ,11 ,11 ,4 ,16 ,11 ,16 ,15 ,6 ,12 ,12 ,10 ,15 ,6 ,10 ,7 ,8 ,9 ,5 ,13 ,11 ,14 ,13 ,6 ,16 ,11 ,16 ,16 ,7 ,14 ,12 ,13 ,13 ,6 ,15 ,9 ,5 ,11 ,3 ,5 ,15 ,8 ,12 ,3 ,8 ,11 ,10 ,12 ,4 ,11 ,11 ,8 ,12 ,6 ,16 ,11 ,13 ,14 ,7 ,17 ,11 ,15 ,14 ,5 ,9 ,15 ,6 ,8 ,4 ,9 ,11 ,12 ,13 ,5 ,13 ,12 ,16 ,16 ,6 ,10 ,12 ,5 ,13 ,6 ,6 ,9 ,15 ,11 ,6 ,12 ,12 ,12 ,14 ,5 ,8 ,12 ,8 ,13 ,4 ,14 ,13 ,13 ,13 ,5 ,12 ,11 ,14 ,13 ,5 ,11 ,9 ,12 ,12 ,4 ,16 ,9 ,16 ,16 ,6 ,8 ,11 ,10 ,15 ,2 ,15 ,11 ,15 ,15 ,8 ,7 ,12 ,8 ,12 ,3 ,16 ,12 ,16 ,14 ,6 ,14 ,9 ,19 ,12 ,6 ,16 ,11 ,14 ,15 ,6 ,9 ,9 ,6 ,12 ,5 ,14 ,12 ,13 ,13 ,5 ,11 ,12 ,15 ,12 ,6 ,13 ,12 ,7 ,12 ,5 ,15 ,12 ,13 ,13 ,6 ,5 ,14 ,4 ,5 ,2 ,15 ,11 ,14 ,13 ,5 ,13 ,12 ,13 ,13 ,5 ,11 ,11 ,11 ,14 ,5 ,11 ,6 ,14 ,17 ,6 ,12 ,10 ,12 ,13 ,6 ,12 ,12 ,15 ,13 ,6 ,12 ,13 ,14 ,12 ,5 ,12 ,8 ,13 ,13 ,5 ,14 ,12 ,8 ,14 ,4 ,6 ,12 ,6 ,11 ,2 ,7 ,12 ,7 ,12 ,4 ,14 ,6 ,13 ,12 ,6 ,14 ,11 ,13 ,16 ,6 ,10 ,10 ,11 ,12 ,5 ,13 ,12 ,5 ,12 ,3 ,12 ,13 ,12 ,12 ,6 ,9 ,11 ,8 ,10 ,4 ,12 ,7 ,11 ,15 ,5 ,16 ,11 ,14 ,15 ,8 ,10 ,11 ,9 ,12 ,4 ,14 ,11 ,10 ,16 ,6 ,10 ,11 ,13 ,15 ,6 ,16 ,12 ,16 ,16 ,7 ,15 ,10 ,16 ,13 ,6 ,12 ,11 ,11 ,12 ,5 ,10 ,12 ,8 ,11 ,4 ,8 ,7 ,4 ,13 ,6 ,8 ,13 ,7 ,10 ,3 ,11 ,8 ,14 ,15 ,5 ,13 ,12 ,11 ,13 ,6 ,16 ,11 ,17 ,16 ,7 ,16 ,12 ,15 ,15 ,7 ,14 ,14 ,17 ,18 ,6 ,11 ,10 ,5 ,13 ,3 ,4 ,10 ,4 ,10 ,2 ,14 ,13 ,10 ,16 ,8 ,9 ,10 ,11 ,13 ,3 ,14 ,11 ,15 ,15 ,8 ,8 ,10 ,10 ,14 ,3 ,8 ,7 ,9 ,15 ,4 ,11 ,10 ,12 ,14 ,5 ,12 ,8 ,15 ,13 ,7 ,11 ,12 ,7 ,13 ,6 ,14 ,12 ,13 ,15 ,6 ,15 ,12 ,12 ,16 ,7 ,16 ,11 ,14 ,14 ,6 ,16 ,12 ,14 ,14 ,6 ,11 ,12 ,8 ,16 ,6 ,14 ,12 ,15 ,14 ,6 ,14 ,11 ,12 ,12 ,4 ,12 ,12 ,12 ,13 ,4 ,14 ,11 ,16 ,12 ,5 ,8 ,11 ,9 ,12 ,4 ,13 ,13 ,15 ,14 ,6 ,16 ,12 ,15 ,14 ,6 ,12 ,12 ,6 ,14 ,5 ,16 ,12 ,14 ,16 ,8 ,12 ,12 ,15 ,13 ,6 ,11 ,8 ,10 ,14 ,5 ,4 ,8 ,6 ,4 ,4 ,16 ,12 ,14 ,16 ,8 ,15 ,11 ,12 ,13 ,6 ,10 ,12 ,8 ,16 ,4 ,13 ,13 ,11 ,15 ,6 ,15 ,12 ,13 ,14 ,6 ,12 ,12 ,9 ,13 ,4 ,14 ,11 ,15 ,14 ,6 ,7 ,12 ,13 ,12 ,3 ,19 ,12 ,15 ,15 ,6 ,12 ,10 ,14 ,14 ,5 ,12 ,11 ,16 ,13 ,4 ,13 ,12 ,14 ,14 ,6 ,15 ,12 ,14 ,16 ,4 ,8 ,10 ,10 ,6 ,4 ,12 ,12 ,10 ,13 ,4 ,10 ,13 ,4 ,13 ,6 ,8 ,12 ,8 ,14 ,5 ,10 ,15 ,15 ,15 ,6 ,15 ,11 ,16 ,14 ,6 ,16 ,12 ,12 ,15 ,8 ,13 ,11 ,12 ,13 ,7 ,16 ,12 ,15 ,16 ,7 ,9 ,11 ,9 ,12 ,4 ,14 ,10 ,12 ,15 ,6 ,14 ,11 ,14 ,12 ,6 ,12 ,11 ,11 ,14 ,2) ,dim=c(5 ,156) ,dimnames=list(c('Popularity' ,'FindingFriends' ,'KnowingPeople' ,'Liked' ,'Celebrity') ,1:156)) y <- array(NA,dim=c(5,156),dimnames=list(c('Popularity','FindingFriends','KnowingPeople','Liked','Celebrity'),1:156)) for (i in 1:dim(x)[1]) { for (j in 1:dim(x)[2]) { y[i,j] <- as.numeric(x[i,j]) } } par4 = 'yes' par3 = '2' par2 = 'quantiles' par1 = '4' #'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) library(Hmisc) par1 <- as.numeric(par1) par3 <- as.numeric(par3) x <- data.frame(t(y)) is.data.frame(x) x <- x[!is.na(x[,par1]),] k <- length(x[1,]) n <- length(x[,1]) colnames(x)[par1] x[,par1] 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]) colnames(x) colnames(x)[par1] x[,par1] if (par2 == 'none') { m <- ctree(as.formula(paste(colnames(x)[par1],' ~ .',sep='')),data = x) } #Note: the /var/www/rcomp/createtable file can be downloaded at http://www.wessa.net/cretab load(file="/var/www/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/rcomp/tmp/1cl9x1293540879.tab") } } m postscript(file="/var/www/rcomp/tmp/2cl9x1293540879.ps",horizontal=F,onefile=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556) plot(m) dev.off() postscript(file="/var/www/rcomp/tmp/3cl9x1293540879.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() 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) } 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/rcomp/tmp/45cr01293540879.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() 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/rcomp/tmp/5j4o91293540879.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/rcomp/tmp/6ud5c1293540879.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/rcomp/tmp/7fe4i1293540879.tab") } try(system("convert tmp/2cl9x1293540879.ps tmp/2cl9x1293540879.png",intern=TRUE)) try(system("convert tmp/3cl9x1293540879.ps tmp/3cl9x1293540879.png",intern=TRUE)) try(system("convert tmp/45cr01293540879.ps tmp/45cr01293540879.png",intern=TRUE))