x <- c(20 ,25 ,15 ,15 ,25 ,25 ,25 ,21 ,30 ,25 ,20 ,40 ,13 ,30 ,25 ,20 ,25 ,20 ,25 ,20 ,20 ,15 ,15 ,12 ,20 ,5 ,20 ,15 ,25 ,22 ,20 ,22 ,25 ,20 ,20 ,35 ,30 ,25 ,20 ,20 ,20 ,25 ,25 ,15 ,20 ,35 ,25 ,25 ,30 ,23 ,10 ,22 ,25 ,25 ,22 ,30 ,20 ,25 ,25 ,22 ,25 ,25 ,25 ,22 ,25 ,12 ,18 ,20 ,20 ,22 ,30 ,25 ,22 ,20 ,50 ,30 ,25 ,20 ,30 ,22 ,25 ,30 ,22 ,25 ,22 ,22 ,25 ,25 ,25 ,20 ,22 ,15 ,20 ,30 ,20 ,25 ,30 ,35 ,22 ,12 ,30 ,15 ,10 ,30 ,9 ,25 ,20 ,20 ,35 ,25 ,35 ,30 ,12 ,25 ,15 ,25 ,25 ,20 ,20 ,6 ,15 ,40 ,20 ,40 ,25 ,25 ,20 ,15 ,15 ,22 ,24 ,22 ,20 ,25 ,25 ,25 ,35 ,40 ,20 ,22 ,22 ,20 ,25 ,25 ,18 ,25 ,20 ,25 ,30 ,20 ,22 ,35 ,22 ,25 ,25 ,25 ,25 ,22 ,23 ,35 ,15 ,25 ,18 ,22 ,25 ,25 ,28 ,30 ,20 ,25 ,25 ,30 ,22 ,30 ,10 ,10 ,25 ,20 ,22 ,25 ,25 ,15 ,22 ,25 ,25 ,28 ,22 ,30 ,25 ,20 ,25 ,25 ,20 ,30 ,20 ,30 ,50 ,19 ,20 ,28 ,20 ,25 ,35 ,25 ,25 ,15 ,16 ,20 ,20 ,25 ,30 ,20 ,25 ,25 ,25 ,20 ,20 ,25 ,25 ,30 ,22 ,20 ,25 ,25 ,18 ,18 ,20 ,25 ,25 ,30 ,25 ,20 ,25 ,20 ,20 ,20 ,22 ,18 ,22 ,20 ,15 ,25 ,25 ,20 ,25 ,15 ,22 ,25 ,25 ,15 ,12 ,25 ,30 ,22 ,15 ,22 ,25 ,12 ,18 ,30 ,25 ,25 ,40 ,24 ,25 ,15 ,25 ,20 ,25 ,25 ,25 ,20 ,30 ,20 ,25 ,30 ,22 ,25 ,25 ,25 ,50 ,19 ,50 ,25 ,35 ,20 ,20 ,20 ,20 ,20 ,25 ,25 ,25 ,20 ,20 ,20 ,20 ,25 ,18 ,25 ,22 ,22 ,30 ,30 ,8 ,20 ,25 ,30 ,50 ,22 ,20 ,10 ,25 ,25 ,25 ,25 ,18 ,25 ,20 ,25 ,30 ,18 ,20 ,25 ,22 ,22 ,20 ,20 ,25 ,20 ,20 ,20 ,20 ,25 ,20 ,10 ,20 ,25 ,30 ,25 ,50 ,30 ,30 ,50 ,15 ,25 ,25 ,22 ,20 ,22 ,30 ,25 ,18 ,22 ,22 ,30 ,40 ,25 ,20 ,10 ,20 ,9 ,15 ,20 ,15 ,20 ,30 ,12 ,15 ,12 ,20 ,15 ,12 ,25 ,20 ,25 ,25 ,25 ,30 ,20 ,25 ,15 ,15 ,22 ,10 ,15 ,10 ,20 ,25 ,20 ,20 ,38 ,20 ,20 ,20 ,40 ,25 ,25 ,30 ,25 ,10 ,20 ,25 ,12 ,15 ,25 ,20 ,22 ,22 ,20 ,25 ,25 ,25 ,15 ,40 ,20 ,20 ,16 ,25 ,15 ,20 ,25 ,20 ,30 ,50 ,20 ,25 ,20 ,30 ,30 ,25 ,25 ,12 ,25 ,25 ,25 ,20 ,20 ,20 ,15 ,20 ,25 ,15 ,25 ,50 ,30 ,20 ,20 ,25 ,12 ,15 ,20 ,20 ,35 ,22 ,15 ,18 ,30 ,22 ,12 ,12 ,20 ,20 ,15 ,25 ,15 ,20 ,20 ,25 ,18 ,30 ,20 ,25 ,25 ,25 ,20 ,20 ,25 ,20 ,22 ,15 ,15 ,22 ,20 ,10 ,25 ,20 ,20 ,15 ,12 ,20 ,5 ,20 ,15 ,15 ,25 ,25 ,25 ,15 ,25 ,22 ,25 ,20 ,18 ,22 ,25 ,35 ,25 ,25 ,25 ,35 ,30 ,22 ,30 ,50 ,15 ,25 ,24 ,20 ,25 ,25 ,25 ,12 ,15 ,22 ,25 ,25 ,25 ,25 ,15 ,20 ,20 ,15 ,35 ,30 ,20 ,22 ,65 ,20 ,25 ,22 ,20 ,25 ,25 ,20 ,25 ,15 ,20 ,12 ,15 ,10 ,25 ,15 ,30 ,35 ,25 ,25 ,25 ,25 ,25 ,40 ,40 ,25 ,25 ,20 ,25 ,25 ,22 ,25 ,30 ,25 ,25 ,30 ,25 ,25 ,30 ,25 ,25 ,20 ,22 ,22 ,20 ,25 ,22 ,25 ,22 ,40 ,25 ,25 ,25 ,22 ,20 ,35 ,20 ,35 ,25 ,22 ,25 ,25 ,25 ,25 ,25 ,40 ,25 ,30 ,25 ,20 ,25 ,25 ,30 ,22 ,22 ,20 ,15 ,15 ,25 ,25 ,20 ,20 ,15 ,25 ,15 ,20 ,22 ,25 ,15 ,15 ,18 ,5 ,15 ,25 ,18 ,40 ,25 ,25 ,20 ,30 ,20 ,25 ,25 ,25 ,22 ,22 ,25 ,25 ,30 ,25 ,25 ,25 ,25 ,20 ,20 ,25 ,25 ,25 ,25 ,20 ,30 ,25 ,22 ,30 ,20 ,20 ,30 ,25 ,25 ,30 ,20 ,25 ,25 ,24 ,25 ,30 ,18 ,15 ,22 ,22 ,25 ,22 ,22 ,25 ,15 ,20 ,22 ,18 ,35 ,20 ,20 ,20 ,25 ,25 ,30 ,15 ,25 ,22 ,26 ,25 ,20 ,25 ,25 ,25 ,22 ,25 ,25 ,20 ,22 ,30 ,15 ,30 ,25 ,20 ,25 ,25 ,35 ,22 ,20 ,25 ,20 ,20 ,18 ,20 ,22 ,25 ,10 ,20 ,25 ,20 ,20 ,30 ,25 ,20 ,15 ,20 ,25 ,10 ,20 ,25 ,22 ,22 ,25 ,25 ,15 ,25 ,20 ,10 ,25 ,16 ,25 ,35 ,25 ,15 ,25 ,25 ,30 ,25 ,10 ,22 ,20 ,25 ,20 ,20 ,25 ,22 ,18 ,30 ,19 ,25 ,20 ,25 ,20 ,25 ,20 ,22 ,12 ,30 ,12 ,22 ,25 ,25 ,25 ,25 ,30 ,30 ,10 ,22 ,22 ,25 ,20 ,22 ,20 ,25 ,20 ,15 ,25 ,20 ,25 ,20 ,30 ,15 ,40 ,25 ,20 ,22 ,22 ,30 ,20 ,40 ,20 ,25 ,20 ,25 ,20 ,50 ,50 ,25 ,25 ,40 ,30 ,22 ,30 ,20 ,25 ,25 ,30 ,25 ,25 ,20 ,18 ,18 ,28 ,25 ,22 ,15 ,40 ,40 ,12 ,12 ,18 ,12 ,25 ,26 ,18 ,25 ,22 ,15 ,25 ,15 ,15 ,15 ,25 ,15 ,12 ,22 ,20 ,20 ,25 ,20 ,12 ,9 ,15 ,12 ,15 ,25 ,20 ,20 ,15 ,15 ,30 ,21 ,25 ,22 ,22 ,50 ,15 ,25 ,15 ,25 ,22 ,18 ,50 ,20 ,50 ,20 ,20 ,30 ,25 ,20 ,22 ,25 ,50 ,40 ,25 ,25 ,25 ,25 ,30 ,40 ,25 ,30 ,20) ylimmax = '' ylimmin = '' main = 'Robustness of Central Tendency' #'GNU S' R Code compiled by R2WASP v. 1.0.44 () #Author: Prof. Dr. P. Wessa #To cite this work: AUTHOR(S), (YEAR), 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: Office for Research, Development, and Education #Technical description: Write here your technical program description (don't use hard returns!) geomean <- function(x) { return(exp(mean(log(x)))) } harmean <- function(x) { return(1/mean(1/x)) } quamean <- function(x) { return(sqrt(mean(x*x))) } winmean <- function(x) { x <-sort(x[!is.na(x)]) n<-length(x) denom <- 3 nodenom <- n/denom if (nodenom>40) denom <- n/40 sqrtn = sqrt(n) roundnodenom = floor(nodenom) win <- array(NA,dim=c(roundnodenom,2)) for (j in 1:roundnodenom) { win[j,1] <- (j*x[j+1]+sum(x[(j+1):(n-j)])+j*x[n-j])/n win[j,2] <- sd(c(rep(x[j+1],j),x[(j+1):(n-j)],rep(x[n-j],j)))/sqrtn } return(win) } trimean <- function(x) { x <-sort(x[!is.na(x)]) n<-length(x) denom <- 3 nodenom <- n/denom if (nodenom>40) denom <- n/40 sqrtn = sqrt(n) roundnodenom = floor(nodenom) tri <- array(NA,dim=c(roundnodenom,2)) for (j in 1:roundnodenom) { tri[j,1] <- mean(x,trim=j/n) tri[j,2] <- sd(x[(j+1):(n-j)]) / sqrt(n-j*2) } return(tri) } midrange <- function(x) { return((max(x)+min(x))/2) } q1 <- function(data,n,p,i,f) { np <- n*p; i <<- floor(np) f <<- np - i qvalue <- (1-f)*data[i] + f*data[i+1] } q2 <- function(data,n,p,i,f) { np <- (n+1)*p i <<- floor(np) f <<- np - i qvalue <- (1-f)*data[i] + f*data[i+1] } q3 <- function(data,n,p,i,f) { np <- n*p i <<- floor(np) f <<- np - i if (f==0) { qvalue <- data[i] } else { qvalue <- data[i+1] } } q4 <- function(data,n,p,i,f) { np <- n*p i <<- floor(np) f <<- np - i if (f==0) { qvalue <- (data[i]+data[i+1])/2 } else { qvalue <- data[i+1] } } q5 <- function(data,n,p,i,f) { np <- (n-1)*p i <<- floor(np) f <<- np - i if (f==0) { qvalue <- data[i+1] } else { qvalue <- data[i+1] + f*(data[i+2]-data[i+1]) } } q6 <- function(data,n,p,i,f) { np <- n*p+0.5 i <<- floor(np) f <<- np - i qvalue <- data[i] } q7 <- function(data,n,p,i,f) { np <- (n+1)*p i <<- floor(np) f <<- np - i if (f==0) { qvalue <- data[i] } else { qvalue <- f*data[i] + (1-f)*data[i+1] } } q8 <- function(data,n,p,i,f) { np <- (n+1)*p i <<- floor(np) f <<- np - i if (f==0) { qvalue <- data[i] } else { if (f == 0.5) { qvalue <- (data[i]+data[i+1])/2 } else { if (f < 0.5) { qvalue <- data[i] } else { qvalue <- data[i+1] } } } } midmean <- function(x,def) { x <-sort(x[!is.na(x)]) n<-length(x) if (def==1) { qvalue1 <- q1(x,n,0.25,i,f) qvalue3 <- q1(x,n,0.75,i,f) } if (def==2) { qvalue1 <- q2(x,n,0.25,i,f) qvalue3 <- q2(x,n,0.75,i,f) } if (def==3) { qvalue1 <- q3(x,n,0.25,i,f) qvalue3 <- q3(x,n,0.75,i,f) } if (def==4) { qvalue1 <- q4(x,n,0.25,i,f) qvalue3 <- q4(x,n,0.75,i,f) } if (def==5) { qvalue1 <- q5(x,n,0.25,i,f) qvalue3 <- q5(x,n,0.75,i,f) } if (def==6) { qvalue1 <- q6(x,n,0.25,i,f) qvalue3 <- q6(x,n,0.75,i,f) } if (def==7) { qvalue1 <- q7(x,n,0.25,i,f) qvalue3 <- q7(x,n,0.75,i,f) } if (def==8) { qvalue1 <- q8(x,n,0.25,i,f) qvalue3 <- q8(x,n,0.75,i,f) } midm <- 0 myn <- 0 roundno4 <- round(n/4) round3no4 <- round(3*n/4) for (i in 1:n) { if ((x[i]>=qvalue1) & (x[i]<=qvalue3)){ midm = midm + x[i] myn = myn + 1 } } midm = midm / myn return(midm) } (arm <- mean(x)) sqrtn <- sqrt(length(x)) (armse <- sd(x) / sqrtn) (armose <- arm / armse) (geo <- geomean(x)) (har <- harmean(x)) (qua <- quamean(x)) (win <- winmean(x)) (tri <- trimean(x)) (midr <- midrange(x)) midm <- array(NA,dim=8) for (j in 1:8) midm[j] <- midmean(x,j) midm postscript(file="/var/www/html/rcomp/tmp/11cjh1268393787.ps",horizontal=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556) lb <- win[,1] - 2*win[,2] ub <- win[,1] + 2*win[,2] if ((ylimmin == '') | (ylimmax == '')) plot(win[,1],type='b',main=main, xlab='j', pch=19, ylab='Winsorized Mean(j/n)', ylim=c(min(lb),max(ub))) else plot(win[,1],type='l',main=main, xlab='j', pch=19, ylab='Winsorized Mean(j/n)', ylim=c(ylimmin,ylimmax)) lines(ub,lty=3) lines(lb,lty=3) grid() dev.off() postscript(file="/var/www/html/rcomp/tmp/2my6y1268393787.ps",horizontal=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556) lb <- tri[,1] - 2*tri[,2] ub <- tri[,1] + 2*tri[,2] if ((ylimmin == '') | (ylimmax == '')) plot(tri[,1],type='b',main=main, xlab='j', pch=19, ylab='Trimmed Mean(j/n)', ylim=c(min(lb),max(ub))) else plot(tri[,1],type='l',main=main, xlab='j', pch=19, ylab='Trimmed Mean(j/n)', ylim=c(ylimmin,ylimmax)) lines(ub,lty=3) lines(lb,lty=3) grid() dev.off() #Note: the /var/www/html/rcomp/createtable file can be downloaded at http://www.wessa.net/cretab load(file="/var/www/html/rcomp/createtable") a<-table.start() a<-table.row.start(a) a<-table.element(a,'Central Tendency - Ungrouped Data',4,TRUE) a<-table.row.end(a) a<-table.row.start(a) a<-table.element(a,'Measure',header=TRUE) a<-table.element(a,'Value',header=TRUE) a<-table.element(a,'S.E.',header=TRUE) a<-table.element(a,'Value/S.E.',header=TRUE) a<-table.row.end(a) a<-table.row.start(a) a<-table.element(a,hyperlink('http://www.xycoon.com/arithmetic_mean.htm', 'Arithmetic Mean', 'click to view the definition of the Arithmetic Mean'),header=TRUE) a<-table.element(a,arm) a<-table.element(a,hyperlink('http://www.xycoon.com/arithmetic_mean_standard_error.htm', armse, 'click to view the definition of the Standard Error of the Arithmetic Mean')) a<-table.element(a,armose) a<-table.row.end(a) a<-table.row.start(a) a<-table.element(a,hyperlink('http://www.xycoon.com/geometric_mean.htm', 'Geometric Mean', 'click to view the definition of the Geometric Mean'),header=TRUE) a<-table.element(a,geo) a<-table.element(a,'') a<-table.element(a,'') a<-table.row.end(a) a<-table.row.start(a) a<-table.element(a,hyperlink('http://www.xycoon.com/harmonic_mean.htm', 'Harmonic Mean', 'click to view the definition of the Harmonic Mean'),header=TRUE) a<-table.element(a,har) a<-table.element(a,'') a<-table.element(a,'') a<-table.row.end(a) a<-table.row.start(a) a<-table.element(a,hyperlink('http://www.xycoon.com/quadratic_mean.htm', 'Quadratic Mean', 'click to view the definition of the Quadratic Mean'),header=TRUE) a<-table.element(a,qua) a<-table.element(a,'') a<-table.element(a,'') a<-table.row.end(a) for (j in 1:length(win[,1])) { a<-table.row.start(a) mylabel <- paste('Winsorized Mean (',j) mylabel <- paste(mylabel,'/') mylabel <- paste(mylabel,length(win[,1])) mylabel <- paste(mylabel,')') a<-table.element(a,hyperlink('http://www.xycoon.com/winsorized_mean.htm', mylabel, 'click to view the definition of the Winsorized Mean'),header=TRUE) a<-table.element(a,win[j,1]) a<-table.element(a,win[j,2]) a<-table.element(a,win[j,1]/win[j,2]) a<-table.row.end(a) } for (j in 1:length(tri[,1])) { a<-table.row.start(a) mylabel <- paste('Trimmed Mean (',j) mylabel <- paste(mylabel,'/') mylabel <- paste(mylabel,length(tri[,1])) mylabel <- paste(mylabel,')') a<-table.element(a,hyperlink('http://www.xycoon.com/arithmetic_mean.htm', mylabel, 'click to view the definition of the Trimmed Mean'),header=TRUE) a<-table.element(a,tri[j,1]) a<-table.element(a,tri[j,2]) a<-table.element(a,tri[j,1]/tri[j,2]) a<-table.row.end(a) } a<-table.row.start(a) a<-table.element(a,hyperlink('http://www.xycoon.com/median_1.htm', 'Median', 'click to view the definition of the Median'),header=TRUE) a<-table.element(a,median(x)) a<-table.element(a,'') a<-table.element(a,'') a<-table.row.end(a) a<-table.row.start(a) a<-table.element(a,hyperlink('http://www.xycoon.com/midrange.htm', 'Midrange', 'click to view the definition of the Midrange'),header=TRUE) a<-table.element(a,midr) a<-table.element(a,'') a<-table.element(a,'') a<-table.row.end(a) a<-table.row.start(a) mymid <- hyperlink('http://www.xycoon.com/midmean.htm', 'Midmean', 'click to view the definition of the Midmean') mylabel <- paste(mymid,hyperlink('http://www.xycoon.com/method_1.htm','Weighted Average at Xnp',''),sep=' - ') a<-table.element(a,mylabel,header=TRUE) a<-table.element(a,midm[1]) a<-table.element(a,'') a<-table.element(a,'') a<-table.row.end(a) a<-table.row.start(a) mymid <- hyperlink('http://www.xycoon.com/midmean.htm', 'Midmean', 'click to view the definition of the Midmean') mylabel <- paste(mymid,hyperlink('http://www.xycoon.com/method_2.htm','Weighted Average at X(n+1)p',''),sep=' - ') a<-table.element(a,mylabel,header=TRUE) a<-table.element(a,midm[2]) a<-table.element(a,'') a<-table.element(a,'') a<-table.row.end(a) a<-table.row.start(a) mymid <- hyperlink('http://www.xycoon.com/midmean.htm', 'Midmean', 'click to view the definition of the Midmean') mylabel <- paste(mymid,hyperlink('http://www.xycoon.com/method_3.htm','Empirical Distribution Function',''),sep=' - ') a<-table.element(a,mylabel,header=TRUE) a<-table.element(a,midm[3]) a<-table.element(a,'') a<-table.element(a,'') a<-table.row.end(a) a<-table.row.start(a) mymid <- hyperlink('http://www.xycoon.com/midmean.htm', 'Midmean', 'click to view the definition of the Midmean') mylabel <- paste(mymid,hyperlink('http://www.xycoon.com/method_4.htm','Empirical Distribution Function - Averaging',''),sep=' - ') a<-table.element(a,mylabel,header=TRUE) a<-table.element(a,midm[4]) a<-table.element(a,'') a<-table.element(a,'') a<-table.row.end(a) a<-table.row.start(a) mymid <- hyperlink('http://www.xycoon.com/midmean.htm', 'Midmean', 'click to view the definition of the Midmean') mylabel <- paste(mymid,hyperlink('http://www.xycoon.com/method_5.htm','Empirical Distribution Function - Interpolation',''),sep=' - ') a<-table.element(a,mylabel,header=TRUE) a<-table.element(a,midm[5]) a<-table.element(a,'') a<-table.element(a,'') a<-table.row.end(a) a<-table.row.start(a) mymid <- hyperlink('http://www.xycoon.com/midmean.htm', 'Midmean', 'click to view the definition of the Midmean') mylabel <- paste(mymid,hyperlink('http://www.xycoon.com/method_6.htm','Closest Observation',''),sep=' - ') a<-table.element(a,mylabel,header=TRUE) a<-table.element(a,midm[6]) a<-table.element(a,'') a<-table.element(a,'') a<-table.row.end(a) a<-table.row.start(a) mymid <- hyperlink('http://www.xycoon.com/midmean.htm', 'Midmean', 'click to view the definition of the Midmean') mylabel <- paste(mymid,hyperlink('http://www.xycoon.com/method_7.htm','True Basic - Statistics Graphics Toolkit',''),sep=' - ') a<-table.element(a,mylabel,header=TRUE) a<-table.element(a,midm[7]) a<-table.element(a,'') a<-table.element(a,'') a<-table.row.end(a) a<-table.row.start(a) mymid <- hyperlink('http://www.xycoon.com/midmean.htm', 'Midmean', 'click to view the definition of the Midmean') mylabel <- paste(mymid,hyperlink('http://www.xycoon.com/method_8.htm','MS Excel (old versions)',''),sep=' - ') a<-table.element(a,mylabel,header=TRUE) a<-table.element(a,midm[8]) a<-table.element(a,'') a<-table.element(a,'') a<-table.row.end(a) a<-table.row.start(a) a<-table.element(a,'Number of observations',header=TRUE) a<-table.element(a,length(x)) a<-table.element(a,'') a<-table.element(a,'') a<-table.row.end(a) a<-table.end(a) table.save(a,file="/var/www/html/rcomp/tmp/3a33i1268393787.tab") try(system("convert tmp/11cjh1268393787.ps tmp/11cjh1268393787.png",intern=TRUE)) try(system("convert tmp/2my6y1268393787.ps tmp/2my6y1268393787.png",intern=TRUE))