Send output to:
Browser Blue - Charts White
Browser Black/White
CSV
Data X:
1845 162687 95 595 115 0 48 21 82 73 20465 6200 23975 39 37 1797 201906 63 545 76 1 58 20 80 56 33629 10265 85634 46 43 192 7215 18 72 1 0 0 0 0 0 1423 603 1929 0 0 2444 146367 97 679 155 0 67 27 84 63 25629 8874 36294 54 54 3567 257045 139 1201 125 0 83 31 124 116 54002 20323 72255 93 86 6918 524450 266 1967 278 1 136 36 140 138 151036 26258 189748 198 181 1873 191582 60 602 93 1 65 26 100 76 33287 10165 61834 42 42 1740 195674 60 496 59 0 86 30 115 107 31172 8247 68167 59 59 2079 177020 45 670 87 0 62 30 109 50 28113 8683 38462 49 46 3118 330194 99 1047 130 1 72 27 108 81 57803 16957 101219 83 77 1946 121844 75 634 158 2 50 24 63 58 49830 8058 43270 49 49 2370 203938 72 743 120 0 88 30 118 91 52143 20488 76183 83 79 1956 116374 107 689 87 0 62 22 71 41 21055 7945 31476 39 37 3198 220751 120 1086 264 4 79 28 112 100 47007 13448 62157 93 92 1496 173259 65 420 51 4 56 18 63 61 28735 5389 46261 31 31 1574 156326 89 474 85 3 54 22 86 74 59147 6185 50063 29 28 1808 145178 59 442 100 0 81 37 148 147 78950 24369 64483 104 103 1309 89171 61 373 72 5 13 15 54 45 13497 70 2341 2 2 2820 172624 88 899 147 0 74 34 134 110 46154 17327 48149 46 48 776 39790 27 242 49 0 18 18 57 41 53249 3878 12743 27 25 1162 87927 62 399 40 0 31 15 59 37 10726 3149 18743 16 16 2818 241285 103 850 99 0 99 30 113 84 83700 20517 97057 108 106 1780 200429 75 648 127 1 38 25 96 67 40400 2570 17675 36 35 2316 146946 57 717 164 1 59 34 96 69 33797 5162 33106 33 33 1994 159763 89 619 41 1 54 21 78 58 36205 5299 53311 46 45 1806 207078 34 657 160 0 63 21 80 60 30165 7233 42754 65 64 2152 212394 166 691 92 0 66 25 93 88 58534 15657 59056 80 73 1457 201536 95 366 59 0 90 31 109 75 44663 15329 101621 81 78 3000 394662 121 994 89 0 72 31 115 98 92556 14881 118120 69 63 2236 217892 46 929 90 0 61 20 79 67 40078 16318 79572 69 69 1685 182286 45 490 76 0 61 28 103 84 34711 9556 42744 37 36 1667 188748 48 574 116 2 63 22 71 62 31076 10462 65931 45 41 2257 137978 107 738 92 4 53 17 66 35 74608 7192 38575 62 59 3402 259627 132 1039 361 0 120 25 100 74 58092 4362 28795 33 33 2571 236489 55 844 85 1 73 25 100 93 42009 14349 94440 77 76 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2143 230761 65 1000 63 0 54 31 121 87 36022 10881 38229 34 27 1878 132807 54 629 138 3 54 14 51 39 23333 8022 31972 44 44 2197 158599 51 533 270 9 46 35 119 101 53349 13073 40071 43 43 2186 253254 68 811 64 0 83 34 136 135 92596 26641 132480 117 104 2533 269329 72 837 96 2 106 22 84 76 49598 14426 62797 125 120 1823 161273 61 682 62 0 44 34 136 118 44093 15604 40429 49 44 1095 107181 33 400 35 2 27 23 84 76 84205 9184 45545 76 71 2303 213097 81 831 66 1 73 24 92 65 63369 5989 57568 81 78 1365 139667 51 419 56 2 71 26 103 97 60132 11270 39019 111 106 1245 171101 99 334 41 2 44 23 85 70 37403 13958 53866 61 61 756 81407 33 216 49 1 23 35 106 63 24460 7162 38345 56 53 2419 247596 106 786 121 0 78 24 96 96 46456 13275 50210 54 51 2327 239807 90 752 113 1 60 31 124 112 66616 21224 80947 47 46 2787 172743 60 964 190 8 73 30 106 82 41554 10615 43461 55 55 658 48188 28 205 37 0 12 22 82 39 22346 2102 14812 14 14 2013 169355 71 506 52 0 104 23 87 69 30874 12396 37819 44 44 2616 325322 77 830 89 0 86 27 97 93 68701 18717 102738 115 113 2072 241518 80 694 73 0 57 30 107 76 35728 9724 54509 57 55 1912 195583 60 691 49 1 67 33 126 117 29010 9863 62956 48 46 1775 159913 57 547 77 8 44 12 43 31 23110 8374 55411 40 39 1943 223936 71 547 58 0 53 26 96 65 38844 8030 50611 51 51 1047 101694 26 329 75 1 26 26 100 78 27084 7509 26692 32 31 1190 157258 68 427 32 0 67 23 91 87 35139 14146 60056 36 36 2891 202536 100 972 59 10 36 38 136 85 57476 7768 25155 47 47 1837 173505 65 541 71 6 56 32 128 119 33277 13823 42840 51 53 2255 150518 84 836 91 0 52 21 83 65 31141 7230 39358 37 38 1392 141491 64 376 87 11 54 22 74 60 61281 10170 47241 52 52 1326 125612 39 467 48 3 57 26 96 67 25820 7573 49611 42 37 1317 166049 36 430 63 0 27 28 102 94 23284 5753 41833 11 11 1526 124197 43 483 41 0 58 33 122 100 35378 9791 48930 47 45 2335 195043 71 504 86 8 76 36 144 135 74990 19365 110600 59 59 2898 138708 66 887 152 2 93 25 90 71 29653 9422 52235 82 82 1118 116552 40 271 49 0 59 25 97 78 64622 12310 53986 49 49 340 31970 15 101 40 0 5 21 78 42 4157 1283 4105 6 6 2977 258158 115 1097 135 3 57 19 72 42 29245 6372 59331 83 81 1452 151194 79 470 83 1 42 12 45 8 50008 5413 47796 56 56 1550 135926 68 528 62 2 88 30 120 86 52338 10837 38302 114 105 1685 119629 73 475 91 1 53 21 59 41 13310 3394 14063 46 46 2728 171518 71 698 95 0 81 39 150 131 92901 12964 54414 46 46 1574 108949 45 425 82 2 35 32 117 91 10956 3495 9903 2 2 2413 183471 60 709 112 1 102 28 123 102 34241 11580 53987 51 51 2563 159966 98 824 70 0 71 29 114 91 75043 9970 88937 96 95 1079 93786 34 336 78 0 28 21 75 46 21152 4911 21928 20 18 1235 84971 72 395 105 0 34 31 114 60 42249 10138 29487 57 55 980 88882 76 234 49 0 54 26 94 69 42005 14697 35334 49 48 2246 304603 65 830 60 0 49 29 116 95 41152 8464 57596 51 48 1076 75101 30 334 49 1 30 23 86 17 14399 4204 29750 40 39 1638 145043 41 524 132 0 57 25 90 61 28263 10226 41029 40 40 1208 95827 48 393 49 0 54 22 87 55 17215 3456 12416 36 36 1866 173924 59 574 71 0 38 26 99 55 48140 8895 51158 64 60 2727 241957 238 672 102 0 63 33 132 124 62897 22557 79935 117 114 1208 115367 115 284 74 0 58 24 96 73 22883 6900 26552 40 39 1427 118689 65 452 49 7 46 24 91 73 41622 8620 25807 46 45 1610 164078 54 653 74 0 46 21 77 67 40715 7820 50620 61 59 1865 158931 42 684 59 5 51 28 104 66 65897 12112 61467 59 59 2413 184139 83 706 91 1 87 28 100 77 76542 13178 65292 94 93 1238 152856 58 417 68 0 39 25 94 83 37477 7028 55516 36 35 1468 146159 61 551 81 0 28 15 60 55 53216 6616 42006 51 47 974 62535 43 394 33 0 26 13 46 27 40911 9570 26273 39 36 2319 245196 117 730 166 0 52 36 135 115 57021 14612 90248 62 59 1890 199841 71 571 97 0 96 27 99 85 73116 11219 61476 79 79 223 19349 12 67 15 0 13 1 2 0 3895 786 9604 14 14 2527 247280 109 877 105 3 43 24 96 83 46609 11252 45108 45 42 2091 160833 85 860 61 0 42 31 109 90 29351 9289 47232 43 41 778 72128 30 306 11 0 30 4 15 4 2325 593 3439 8 8 1194 104253 26 382 45 0 59 21 68 60 31747 6562 30553 41 41 1424 151090 57 435 89 0 73 27 102 74 32665 8208 24751 25 24 1378 146461 67 346 72 1 40 26 93 55 19249 7488 34458 22 22 839 87448 42 227 27 1 36 12 46 24 15292 4574 24649 18 18 596 27676 22 194 59 0 2 16 59 17 5842 522 2342 3 1 1684 170326 52 413 127 0 103 29 116 105 33994 12840 52739 54 53 1168 132148 38 273 48 1 30 26 29 20 13018 1350 6245 6 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1106 95778 34 343 58 0 46 25 91 51 98177 10623 35381 50 49 1149 109001 68 376 57 0 25 21 76 76 37941 5322 19595 33 33 1485 158833 46 495 60 0 59 24 86 61 31032 7987 50848 54 50 1529 150013 66 448 77 1 60 21 84 70 32683 10566 39443 63 64 962 89887 63 313 71 0 36 21 65 38 34545 1900 27023 56 53 78 3616 5 14 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1184 199005 45 410 70 0 45 23 84 81 27525 10698 61022 49 48 1672 160930 93 606 76 0 79 33 114 78 66856 14884 63528 90 90 2142 177948 102 593 124 2 30 32 132 76 28549 6852 34835 51 46 1016 136061 40 312 56 0 43 23 92 89 38610 6873 37172 29 29 778 43410 19 292 63 0 7 1 3 3 2781 4 13 1 1 1857 184277 75 547 92 1 80 29 109 87 41211 9188 62548 68 64 1084 109873 45 315 58 0 32 20 81 55 22698 5141 31334 29 29 2297 151030 59 660 64 8 84 33 121 73 41194 4260 20839 27 27 731 60493 40 174 29 3 3 12 48 32 32689 443 5084 4 4 285 19764 12 75 19 1 10 2 8 4 5752 2416 9927 10 10 1872 177559 56 572 64 3 47 21 80 70 26757 9831 53229 47 47 1181 140281 35 389 79 0 35 28 107 102 22527 5953 29877 44 44 1725 164249 54 562 104 0 54 35 140 109 44810 9435 37310 53 51 256 11796 9 79 22 0 1 2 8 1 0 0 0 0 0 98 10674 9 33 7 0 0 0 0 0 0 0 0 0 0 1435 151322 59 487 37 0 46 18 56 39 100674 7642 50067 40 38 41 6836 3 11 5 0 0 1 4 0 0 0 0 0 0 1931 174712 68 664 48 6 51 21 70 45 57786 6837 47708 57 57 42 5118 3 6 1 0 5 0 0 0 0 0 0 0 0 528 40248 16 183 34 1 8 4 14 7 5444 775 6012 6 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1122 127628 51 342 53 0 38 29 104 86 28470 8191 27749 24 22 1305 88837 38 269 44 0 21 26 89 52 61849 1661 47555 34 34 81 7131 4 27 0 1 0 0 0 0 0 0 0 0 0 262 9056 15 99 18 0 0 4 12 1 2179 548 1336 10 10 1104 88589 29 306 52 1 18 19 60 49 8019 3080 11017 16 16 1290 144470 53 327 56 0 53 22 84 72 39644 13400 55184 93 93 1248 111408 20 459 50 1 17 22 88 56 23494 8181 43485 28 22
Names of X columns:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Sample Range:
(leave blank to include all observations)
From:
To:
Column Number of Endogenous Series
(?)
Fixed Seasonal Effects
Do not include Seasonal Dummies
Do not include Seasonal Dummies
Include Seasonal Dummies
Type of Equation
No Linear Trend
No Linear Trend
Linear Trend
First Differences
Seasonal Differences (s)
First and Seasonal Differences (s)
Degree of Predetermination (lagged endogenous variables)
Degree of Seasonal Predetermination
Seasonality
12
1
2
3
4
5
6
7
8
9
10
11
12
Chart options
R Code
library(lattice) library(lmtest) 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 k <- length(x[1,]) df <- as.data.frame(x) (mylm <- lm(df)) (mysum <- summary(mylm)) 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 } bitmap(file='test0.png') 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() bitmap(file='test1.png') plot(mysum$resid, type='b', pch=19, main='Residuals', ylab='value of Residuals', xlab='time or index') grid() dev.off() bitmap(file='test2.png') hist(mysum$resid, main='Residual Histogram', xlab='values of Residuals') grid() dev.off() bitmap(file='test3.png') densityplot(~mysum$resid,col='black',main='Residual Density Plot', xlab='values of Residuals') dev.off() bitmap(file='test4.png') qqnorm(mysum$resid, main='Residual Normal Q-Q Plot') qqline(mysum$resid) grid() dev.off() (myerror <- as.ts(mysum$resid)) bitmap(file='test5.png') dum <- cbind(lag(myerror,k=1),myerror) dum dum1 <- dum[2:length(myerror),] dum1 z <- as.data.frame(dum1) z 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() bitmap(file='test6.png') acf(mysum$resid, lag.max=length(mysum$resid)/2, main='Residual Autocorrelation Function') grid() dev.off() bitmap(file='test7.png') pacf(mysum$resid, lag.max=length(mysum$resid)/2, main='Residual Partial Autocorrelation Function') grid() dev.off() bitmap(file='test8.png') opar <- par(mfrow = c(2,2), oma = c(0, 0, 1.1, 0)) plot(mylm, las = 1, sub='Residual Diagnostics') par(opar) dev.off() if (n > n25) { bitmap(file='test9.png') plot(kp3:nmkm3,gqarr[,2], main='Goldfeld-Quandt test',ylab='2-sided p-value',xlab='breakpoint') grid() dev.off() } load(file='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='mytable1.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<br />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='mytable2.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='mytable3.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<br />Forecast', 1, TRUE) a<-table.element(a, 'Residuals<br />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='mytable4.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='mytable5.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='mytable6.tab') }
Compute
Summary of computational transaction
Raw Input
view raw input (R code)
Raw Output
view raw output of R engine
Computing time
0 seconds
R Server
Big Analytics Cloud Computing Center
Click here to blog (archive) this computation