| 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
 bitmap(file='test1.png')
 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()
 bitmap(file='test2.png')
 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()
 load(file='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('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('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('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('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('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('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('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('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('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('midmean.htm', 'Midmean', 'click to view the definition of the Midmean')
 mylabel <- paste(mymid,hyperlink('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('midmean.htm', 'Midmean', 'click to view the definition of the Midmean')
 mylabel <- paste(mymid,hyperlink('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('midmean.htm', 'Midmean', 'click to view the definition of the Midmean')
 mylabel <- paste(mymid,hyperlink('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('midmean.htm', 'Midmean', 'click to view the definition of the Midmean')
 mylabel <- paste(mymid,hyperlink('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('midmean.htm', 'Midmean', 'click to view the definition of the Midmean')
 mylabel <- paste(mymid,hyperlink('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('midmean.htm', 'Midmean', 'click to view the definition of the Midmean')
 mylabel <- paste(mymid,hyperlink('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('midmean.htm', 'Midmean', 'click to view the definition of the Midmean')
 mylabel <- paste(mymid,hyperlink('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('midmean.htm', 'Midmean', 'click to view the definition of the Midmean')
 mylabel <- paste(mymid,hyperlink('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='mytable.tab')
 
 |