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(851,280,810,836,265,792,819,281,795,744,274,765,732,251,734,732,273,763,716,257,734,714,276,747,705,257,739,697,250,734,694,264,726,685,259,741,685,251,715,679,256,725,678,243,719,675,250,716,651,253,717,643,258,721,639,253,707,634,245,701,626,244,682,621,257,698,608,247,705,606,243,693,599,259,690,594,246,663,586,244,674,575,238,653,553,241,670,544,234,640),dim=c(3,30),dimnames=list(c('RUNS','AVG','OPS'),1:30)) > y <- array(NA,dim=c(3,30),dimnames=list(c('RUNS','AVG','OPS'),1:30)) > for (i in 1:dim(x)[1]) + { + for (j in 1:dim(x)[2]) + { + y[i,j] <- as.numeric(x[i,j]) + } + } > par3 = 'No Linear Trend' > par2 = 'Do not include Seasonal Dummies' > par1 = '1' > #'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!) > library(lattice) > library(lmtest) Loading required package: zoo > n25 <- 25 #minimum number of obs. for Goldfeld-Quandt test > par1 <- as.numeric(par1) > x <- t(y) > k <- length(x[1,]) > n <- length(x[,1]) > x1 <- cbind(x[,par1], x[,1:k!=par1]) > mycolnames <- c(colnames(x)[par1], colnames(x)[1:k!=par1]) > colnames(x1) <- mycolnames #colnames(x)[par1] > x <- x1 > if (par3 == 'First Differences'){ + x2 <- array(0, dim=c(n-1,k), dimnames=list(1:(n-1), paste('(1-B)',colnames(x),sep=''))) + for (i in 1:n-1) { + for (j in 1:k) { + x2[i,j] <- x[i+1,j] - x[i,j] + } + } + x <- x2 + } > if (par2 == 'Include Monthly Dummies'){ + x2 <- array(0, dim=c(n,11), dimnames=list(1:n, paste('M', seq(1:11), sep =''))) + for (i in 1:11){ + x2[seq(i,n,12),i] <- 1 + } + x <- cbind(x, x2) + } > if (par2 == 'Include Quarterly Dummies'){ + x2 <- array(0, dim=c(n,3), dimnames=list(1:n, paste('Q', seq(1:3), sep =''))) + for (i in 1:3){ + x2[seq(i,n,4),i] <- 1 + } + x <- cbind(x, x2) + } > k <- length(x[1,]) > if (par3 == 'Linear Trend'){ + x <- cbind(x, c(1:n)) + colnames(x)[k+1] <- 't' + } > x RUNS AVG OPS 1 851 280 810 2 836 265 792 3 819 281 795 4 744 274 765 5 732 251 734 6 732 273 763 7 716 257 734 8 714 276 747 9 705 257 739 10 697 250 734 11 694 264 726 12 685 259 741 13 685 251 715 14 679 256 725 15 678 243 719 16 675 250 716 17 651 253 717 18 643 258 721 19 639 253 707 20 634 245 701 21 626 244 682 22 621 257 698 23 608 247 705 24 606 243 693 25 599 259 690 26 594 246 663 27 586 244 674 28 575 238 653 29 553 241 670 30 544 234 640 > k <- length(x[1,]) > df <- as.data.frame(x) > (mylm <- lm(df)) Call: lm(formula = df) Coefficients: (Intercept) AVG OPS -607.5615 -0.7618 2.0481 > (mysum <- summary(mylm)) Call: lm(formula = df) Residuals: Min 1Q Median 3Q Max -40.164 -9.148 -2.577 15.989 31.093 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -607.5615 75.4117 -8.057 1.17e-08 *** AVG -0.7618 0.5969 -1.276 0.213 OPS 2.0481 0.1817 11.271 1.03e-11 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 19.71 on 27 degrees of freedom Multiple R-squared: 0.94, Adjusted R-squared: 0.9356 F-statistic: 211.7 on 2 and 27 DF, p-value: < 2.2e-16 > if (n > n25) { + kp3 <- k + 3 + nmkm3 <- n - k - 3 + gqarr <- array(NA, dim=c(nmkm3-kp3+1,3)) + numgqtests <- 0 + numsignificant1 <- 0 + numsignificant5 <- 0 + numsignificant10 <- 0 + for (mypoint in kp3:nmkm3) { + j <- 0 + numgqtests <- numgqtests + 1 + for (myalt in c('greater', 'two.sided', 'less')) { + j <- j + 1 + gqarr[mypoint-kp3+1,j] <- gqtest(mylm, point=mypoint, alternative=myalt)$p.value + } + if (gqarr[mypoint-kp3+1,2] < 0.01) numsignificant1 <- numsignificant1 + 1 + if (gqarr[mypoint-kp3+1,2] < 0.05) numsignificant5 <- numsignificant5 + 1 + if (gqarr[mypoint-kp3+1,2] < 0.10) numsignificant10 <- numsignificant10 + 1 + } + gqarr + } [,1] [,2] [,3] [1,] 0.2016028 0.4032055 0.7983972 [2,] 0.1194975 0.2389949 0.8805025 [3,] 0.1181434 0.2362868 0.8818566 [4,] 0.1527436 0.3054872 0.8472564 [5,] 0.1994759 0.3989518 0.8005241 [6,] 0.2460470 0.4920940 0.7539530 [7,] 0.4049659 0.8099318 0.5950341 [8,] 0.4720157 0.9440313 0.5279843 [9,] 0.4009491 0.8018982 0.5990509 [10,] 0.3619744 0.7239488 0.6380256 [11,] 0.4292034 0.8584068 0.5707966 [12,] 0.3962504 0.7925007 0.6037496 [13,] 0.3939286 0.7878573 0.6060714 [14,] 0.3052936 0.6105872 0.6947064 [15,] 0.2691546 0.5383092 0.7308454 [16,] 0.5992434 0.8015132 0.4007566 [17,] 0.4834106 0.9668211 0.5165894 [18,] 0.4549040 0.9098080 0.5450960 [19,] 0.4606894 0.9213788 0.5393106 > postscript(file="/var/wessaorg/rcomp/tmp/1reb01316887052.ps",horizontal=F,onefile=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556) > plot(x[,1], type='l', main='Actuals and Interpolation', ylab='value of Actuals and Interpolation (dots)', xlab='time or index') > points(x[,1]-mysum$resid) > grid() > dev.off() null device 1 > postscript(file="/var/wessaorg/rcomp/tmp/21jb41316887052.ps",horizontal=F,onefile=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556) > plot(mysum$resid, type='b', pch=19, main='Residuals', ylab='value of Residuals', xlab='time or index') > grid() > dev.off() null device 1 > postscript(file="/var/wessaorg/rcomp/tmp/32cex1316887052.ps",horizontal=F,onefile=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556) > hist(mysum$resid, main='Residual Histogram', xlab='values of Residuals') > grid() > dev.off() null device 1 > postscript(file="/var/wessaorg/rcomp/tmp/4vq2l1316887052.ps",horizontal=F,onefile=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556) > densityplot(~mysum$resid,col='black',main='Residual Density Plot', xlab='values of Residuals') > dev.off() null device 1 > postscript(file="/var/wessaorg/rcomp/tmp/5ole01316887052.ps",horizontal=F,onefile=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556) > qqnorm(mysum$resid, main='Residual Normal Q-Q Plot') > qqline(mysum$resid) > grid() > dev.off() null device 1 > (myerror <- as.ts(mysum$resid)) Time Series: Start = 1 End = 30 Frequency = 1 1 2 3 4 5 6 12.9272918 23.3651806 12.4104539 -6.4798361 27.4884251 -15.1455067 7 8 9 10 11 12 16.0595013 1.9094352 -5.1809374 -8.2734210 15.7771254 -27.7534209 13 14 15 16 17 18 19.4020921 -3.2695551 -1.8850271 6.5921583 -17.1703913 -29.5535121 19 20 21 22 23 24 -8.6895139 -7.4957557 22.6560653 -5.2093401 -40.1644146 -20.6347459 25 26 27 28 29 30 -9.3009462 31.0934244 -0.9592328 26.4795335 -28.0524199 19.0572900 > postscript(file="/var/wessaorg/rcomp/tmp/61r7l1316887052.ps",horizontal=F,onefile=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556) > dum <- cbind(lag(myerror,k=1),myerror) > dum Time Series: Start = 0 End = 30 Frequency = 1 lag(myerror, k = 1) myerror 0 12.9272918 NA 1 23.3651806 12.9272918 2 12.4104539 23.3651806 3 -6.4798361 12.4104539 4 27.4884251 -6.4798361 5 -15.1455067 27.4884251 6 16.0595013 -15.1455067 7 1.9094352 16.0595013 8 -5.1809374 1.9094352 9 -8.2734210 -5.1809374 10 15.7771254 -8.2734210 11 -27.7534209 15.7771254 12 19.4020921 -27.7534209 13 -3.2695551 19.4020921 14 -1.8850271 -3.2695551 15 6.5921583 -1.8850271 16 -17.1703913 6.5921583 17 -29.5535121 -17.1703913 18 -8.6895139 -29.5535121 19 -7.4957557 -8.6895139 20 22.6560653 -7.4957557 21 -5.2093401 22.6560653 22 -40.1644146 -5.2093401 23 -20.6347459 -40.1644146 24 -9.3009462 -20.6347459 25 31.0934244 -9.3009462 26 -0.9592328 31.0934244 27 26.4795335 -0.9592328 28 -28.0524199 26.4795335 29 19.0572900 -28.0524199 30 NA 19.0572900 > dum1 <- dum[2:length(myerror),] > dum1 lag(myerror, k = 1) myerror [1,] 23.3651806 12.9272918 [2,] 12.4104539 23.3651806 [3,] -6.4798361 12.4104539 [4,] 27.4884251 -6.4798361 [5,] -15.1455067 27.4884251 [6,] 16.0595013 -15.1455067 [7,] 1.9094352 16.0595013 [8,] -5.1809374 1.9094352 [9,] -8.2734210 -5.1809374 [10,] 15.7771254 -8.2734210 [11,] -27.7534209 15.7771254 [12,] 19.4020921 -27.7534209 [13,] -3.2695551 19.4020921 [14,] -1.8850271 -3.2695551 [15,] 6.5921583 -1.8850271 [16,] -17.1703913 6.5921583 [17,] -29.5535121 -17.1703913 [18,] -8.6895139 -29.5535121 [19,] -7.4957557 -8.6895139 [20,] 22.6560653 -7.4957557 [21,] -5.2093401 22.6560653 [22,] -40.1644146 -5.2093401 [23,] -20.6347459 -40.1644146 [24,] -9.3009462 -20.6347459 [25,] 31.0934244 -9.3009462 [26,] -0.9592328 31.0934244 [27,] 26.4795335 -0.9592328 [28,] -28.0524199 26.4795335 [29,] 19.0572900 -28.0524199 > z <- as.data.frame(dum1) > z lag(myerror, k = 1) myerror 1 23.3651806 12.9272918 2 12.4104539 23.3651806 3 -6.4798361 12.4104539 4 27.4884251 -6.4798361 5 -15.1455067 27.4884251 6 16.0595013 -15.1455067 7 1.9094352 16.0595013 8 -5.1809374 1.9094352 9 -8.2734210 -5.1809374 10 15.7771254 -8.2734210 11 -27.7534209 15.7771254 12 19.4020921 -27.7534209 13 -3.2695551 19.4020921 14 -1.8850271 -3.2695551 15 6.5921583 -1.8850271 16 -17.1703913 6.5921583 17 -29.5535121 -17.1703913 18 -8.6895139 -29.5535121 19 -7.4957557 -8.6895139 20 22.6560653 -7.4957557 21 -5.2093401 22.6560653 22 -40.1644146 -5.2093401 23 -20.6347459 -40.1644146 24 -9.3009462 -20.6347459 25 31.0934244 -9.3009462 26 -0.9592328 31.0934244 27 26.4795335 -0.9592328 28 -28.0524199 26.4795335 29 19.0572900 -28.0524199 > plot(z,main=paste('Residual Lag plot, lowess, and regression line'), ylab='values of Residuals', xlab='lagged values of Residuals') > lines(lowess(z)) > abline(lm(z)) > grid() > dev.off() null device 1 > postscript(file="/var/wessaorg/rcomp/tmp/7uaux1316887052.ps",horizontal=F,onefile=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556) > acf(mysum$resid, lag.max=length(mysum$resid)/2, main='Residual Autocorrelation Function') > grid() > dev.off() null device 1 > postscript(file="/var/wessaorg/rcomp/tmp/8nl8e1316887052.ps",horizontal=F,onefile=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556) > pacf(mysum$resid, lag.max=length(mysum$resid)/2, main='Residual Partial Autocorrelation Function') > grid() > dev.off() null device 1 > postscript(file="/var/wessaorg/rcomp/tmp/9zkf11316887052.ps",horizontal=F,onefile=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556) > opar <- par(mfrow = c(2,2), oma = c(0, 0, 1.1, 0)) > plot(mylm, las = 1, sub='Residual Diagnostics') > par(opar) > dev.off() null device 1 > if (n > n25) { + postscript(file="/var/wessaorg/rcomp/tmp/103q551316887052.ps",horizontal=F,onefile=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556) + plot(kp3:nmkm3,gqarr[,2], main='Goldfeld-Quandt test',ylab='2-sided p-value',xlab='breakpoint') + grid() + dev.off() + } null device 1 > > #Note: the /var/wessaorg/rcomp/createtable file can be downloaded at http://www.wessa.net/cretab > load(file="/var/wessaorg/rcomp/createtable") > > a<-table.start() > a<-table.row.start(a) > a<-table.element(a, 'Multiple Linear Regression - Estimated Regression Equation', 1, TRUE) > a<-table.row.end(a) > myeq <- colnames(x)[1] > myeq <- paste(myeq, '[t] = ', sep='') > for (i in 1:k){ + if (mysum$coefficients[i,1] > 0) myeq <- paste(myeq, '+', '') + myeq <- paste(myeq, mysum$coefficients[i,1], sep=' ') + if (rownames(mysum$coefficients)[i] != '(Intercept)') { + myeq <- paste(myeq, rownames(mysum$coefficients)[i], sep='') + if (rownames(mysum$coefficients)[i] != 't') myeq <- paste(myeq, '[t]', sep='') + } + } > myeq <- paste(myeq, ' + e[t]') > a<-table.row.start(a) > a<-table.element(a, myeq) > a<-table.row.end(a) > a<-table.end(a) > table.save(a,file="/var/wessaorg/rcomp/tmp/113j3z1316887052.tab") > a<-table.start() > a<-table.row.start(a) > a<-table.element(a,hyperlink('http://www.xycoon.com/ols1.htm','Multiple Linear Regression - Ordinary Least Squares',''), 6, TRUE) > a<-table.row.end(a) > a<-table.row.start(a) > a<-table.element(a,'Variable',header=TRUE) > a<-table.element(a,'Parameter',header=TRUE) > a<-table.element(a,'S.D.',header=TRUE) > a<-table.element(a,'T-STAT
H0: parameter = 0',header=TRUE) > a<-table.element(a,'2-tail p-value',header=TRUE) > a<-table.element(a,'1-tail p-value',header=TRUE) > a<-table.row.end(a) > for (i in 1:k){ + a<-table.row.start(a) + a<-table.element(a,rownames(mysum$coefficients)[i],header=TRUE) + a<-table.element(a,mysum$coefficients[i,1]) + a<-table.element(a, round(mysum$coefficients[i,2],6)) + a<-table.element(a, round(mysum$coefficients[i,3],4)) + a<-table.element(a, round(mysum$coefficients[i,4],6)) + a<-table.element(a, round(mysum$coefficients[i,4]/2,6)) + a<-table.row.end(a) + } > a<-table.end(a) > table.save(a,file="/var/wessaorg/rcomp/tmp/12a5ly1316887052.tab") > a<-table.start() > a<-table.row.start(a) > a<-table.element(a, 'Multiple Linear Regression - Regression Statistics', 2, TRUE) > a<-table.row.end(a) > a<-table.row.start(a) > a<-table.element(a, 'Multiple R',1,TRUE) > a<-table.element(a, sqrt(mysum$r.squared)) > a<-table.row.end(a) > a<-table.row.start(a) > a<-table.element(a, 'R-squared',1,TRUE) > a<-table.element(a, mysum$r.squared) > a<-table.row.end(a) > a<-table.row.start(a) > a<-table.element(a, 'Adjusted R-squared',1,TRUE) > a<-table.element(a, mysum$adj.r.squared) > a<-table.row.end(a) > a<-table.row.start(a) > a<-table.element(a, 'F-TEST (value)',1,TRUE) > a<-table.element(a, mysum$fstatistic[1]) > a<-table.row.end(a) > a<-table.row.start(a) > a<-table.element(a, 'F-TEST (DF numerator)',1,TRUE) > a<-table.element(a, mysum$fstatistic[2]) > a<-table.row.end(a) > a<-table.row.start(a) > a<-table.element(a, 'F-TEST (DF denominator)',1,TRUE) > a<-table.element(a, mysum$fstatistic[3]) > a<-table.row.end(a) > a<-table.row.start(a) > a<-table.element(a, 'p-value',1,TRUE) > a<-table.element(a, 1-pf(mysum$fstatistic[1],mysum$fstatistic[2],mysum$fstatistic[3])) > a<-table.row.end(a) > a<-table.row.start(a) > a<-table.element(a, 'Multiple Linear Regression - Residual Statistics', 2, TRUE) > a<-table.row.end(a) > a<-table.row.start(a) > a<-table.element(a, 'Residual Standard Deviation',1,TRUE) > a<-table.element(a, mysum$sigma) > a<-table.row.end(a) > a<-table.row.start(a) > a<-table.element(a, 'Sum Squared Residuals',1,TRUE) > a<-table.element(a, sum(myerror*myerror)) > a<-table.row.end(a) > a<-table.end(a) > table.save(a,file="/var/wessaorg/rcomp/tmp/13rzzs1316887052.tab") > a<-table.start() > a<-table.row.start(a) > a<-table.element(a, 'Multiple Linear Regression - Actuals, Interpolation, and Residuals', 4, TRUE) > a<-table.row.end(a) > a<-table.row.start(a) > a<-table.element(a, 'Time or Index', 1, TRUE) > a<-table.element(a, 'Actuals', 1, TRUE) > a<-table.element(a, 'Interpolation
Forecast', 1, TRUE) > a<-table.element(a, 'Residuals
Prediction Error', 1, TRUE) > a<-table.row.end(a) > for (i in 1:n) { + a<-table.row.start(a) + a<-table.element(a,i, 1, TRUE) + a<-table.element(a,x[i]) + a<-table.element(a,x[i]-mysum$resid[i]) + a<-table.element(a,mysum$resid[i]) + a<-table.row.end(a) + } > a<-table.end(a) > table.save(a,file="/var/wessaorg/rcomp/tmp/14r6el1316887052.tab") > if (n > n25) { + a<-table.start() + a<-table.row.start(a) + a<-table.element(a,'Goldfeld-Quandt test for Heteroskedasticity',4,TRUE) + a<-table.row.end(a) + a<-table.row.start(a) + a<-table.element(a,'p-values',header=TRUE) + a<-table.element(a,'Alternative Hypothesis',3,header=TRUE) + a<-table.row.end(a) + a<-table.row.start(a) + a<-table.element(a,'breakpoint index',header=TRUE) + a<-table.element(a,'greater',header=TRUE) + a<-table.element(a,'2-sided',header=TRUE) + a<-table.element(a,'less',header=TRUE) + a<-table.row.end(a) + for (mypoint in kp3:nmkm3) { + a<-table.row.start(a) + a<-table.element(a,mypoint,header=TRUE) + a<-table.element(a,gqarr[mypoint-kp3+1,1]) + a<-table.element(a,gqarr[mypoint-kp3+1,2]) + a<-table.element(a,gqarr[mypoint-kp3+1,3]) + a<-table.row.end(a) + } + a<-table.end(a) + table.save(a,file="/var/wessaorg/rcomp/tmp/15h8j41316887052.tab") + a<-table.start() + a<-table.row.start(a) + a<-table.element(a,'Meta Analysis of Goldfeld-Quandt test for Heteroskedasticity',4,TRUE) + a<-table.row.end(a) + a<-table.row.start(a) + a<-table.element(a,'Description',header=TRUE) + a<-table.element(a,'# significant tests',header=TRUE) + a<-table.element(a,'% significant tests',header=TRUE) + a<-table.element(a,'OK/NOK',header=TRUE) + a<-table.row.end(a) + a<-table.row.start(a) + a<-table.element(a,'1% type I error level',header=TRUE) + a<-table.element(a,numsignificant1) + a<-table.element(a,numsignificant1/numgqtests) + if (numsignificant1/numgqtests < 0.01) dum <- 'OK' else dum <- 'NOK' + a<-table.element(a,dum) + a<-table.row.end(a) + a<-table.row.start(a) + a<-table.element(a,'5% type I error level',header=TRUE) + a<-table.element(a,numsignificant5) + a<-table.element(a,numsignificant5/numgqtests) + if (numsignificant5/numgqtests < 0.05) dum <- 'OK' else dum <- 'NOK' + a<-table.element(a,dum) + a<-table.row.end(a) + a<-table.row.start(a) + a<-table.element(a,'10% type I error level',header=TRUE) + a<-table.element(a,numsignificant10) + a<-table.element(a,numsignificant10/numgqtests) + if (numsignificant10/numgqtests < 0.1) dum <- 'OK' else dum <- 'NOK' + a<-table.element(a,dum) + a<-table.row.end(a) + a<-table.end(a) + table.save(a,file="/var/wessaorg/rcomp/tmp/16trjt1316887052.tab") + } > > try(system("convert tmp/1reb01316887052.ps tmp/1reb01316887052.png",intern=TRUE)) character(0) > try(system("convert tmp/21jb41316887052.ps tmp/21jb41316887052.png",intern=TRUE)) character(0) > try(system("convert tmp/32cex1316887052.ps tmp/32cex1316887052.png",intern=TRUE)) character(0) > try(system("convert tmp/4vq2l1316887052.ps tmp/4vq2l1316887052.png",intern=TRUE)) character(0) > try(system("convert tmp/5ole01316887052.ps tmp/5ole01316887052.png",intern=TRUE)) character(0) > try(system("convert tmp/61r7l1316887052.ps tmp/61r7l1316887052.png",intern=TRUE)) character(0) > try(system("convert tmp/7uaux1316887052.ps tmp/7uaux1316887052.png",intern=TRUE)) character(0) > try(system("convert tmp/8nl8e1316887052.ps tmp/8nl8e1316887052.png",intern=TRUE)) character(0) > try(system("convert tmp/9zkf11316887052.ps tmp/9zkf11316887052.png",intern=TRUE)) character(0) > try(system("convert tmp/103q551316887052.ps tmp/103q551316887052.png",intern=TRUE)) character(0) > > > proc.time() user system elapsed 2.977 0.470 3.461