R version 2.8.0 (2008-10-20)
Copyright (C) 2008 The R Foundation for Statistical Computing
ISBN 3-900051-07-0
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(0.84,0,0.76,0,0.77,0,0.76,0,0.77,0,0.78,0,0.79,0,0.78,0,0.76,0,0.78,1,0.76,1,0.74,1,0.73,1,0.72,1,0.71,1,0.73,1,0.75,1,0.75,1,0.72,1,0.72,1,0.72,1,0.74,1,0.78,1,0.74,1,0.74,1,0.75,1,0.78,1,0.81,1,0.75,1,0.7,1,0.71,1,0.71,1,0.73,1,0.74,1,0.74,1,0.75,1,0.74,1,0.74,1,0.73,1,0.76,1,0.8,1,0.83,1,0.81,1,0.83,1,0.88,1,0.89,1,0.93,1,0.91,1,0.9,1,0.86,1,0.88,1,0.93,1,0.98,1,0.97,1,1.03,1,1.06,1,1.06,1,1.09,1,1.04,1,1,1,1.04,1),dim=c(2,61),dimnames=list(c('y','x'),1:61))
> y <- array(NA,dim=c(2,61),dimnames=list(c('y','x'),1:61))
> 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)
> 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
y x
1 0.84 0
2 0.76 0
3 0.77 0
4 0.76 0
5 0.77 0
6 0.78 0
7 0.79 0
8 0.78 0
9 0.76 0
10 0.78 1
11 0.76 1
12 0.74 1
13 0.73 1
14 0.72 1
15 0.71 1
16 0.73 1
17 0.75 1
18 0.75 1
19 0.72 1
20 0.72 1
21 0.72 1
22 0.74 1
23 0.78 1
24 0.74 1
25 0.74 1
26 0.75 1
27 0.78 1
28 0.81 1
29 0.75 1
30 0.70 1
31 0.71 1
32 0.71 1
33 0.73 1
34 0.74 1
35 0.74 1
36 0.75 1
37 0.74 1
38 0.74 1
39 0.73 1
40 0.76 1
41 0.80 1
42 0.83 1
43 0.81 1
44 0.83 1
45 0.88 1
46 0.89 1
47 0.93 1
48 0.91 1
49 0.90 1
50 0.86 1
51 0.88 1
52 0.93 1
53 0.98 1
54 0.97 1
55 1.03 1
56 1.06 1
57 1.06 1
58 1.09 1
59 1.04 1
60 1.00 1
61 1.04 1
> k <- length(x[1,])
> df <- as.data.frame(x)
> (mylm <- lm(df))
Call:
lm(formula = df)
Coefficients:
(Intercept) x
0.77889 0.04207
> (mysum <- summary(mylm))
Call:
lm(formula = df)
Residuals:
Min 1Q Median 3Q Max
-0.12096 -0.08096 -0.02096 0.05904 0.26904
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.77889 0.03575 21.789 <2e-16 ***
x 0.04207 0.03872 1.087 0.282
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.1072 on 59 degrees of freedom
Multiple R-squared: 0.01962, Adjusted R-squared: 0.003005
F-statistic: 1.181 on 1 and 59 DF, p-value: 0.2816
> postscript(file="/var/www/html/rcomp/tmp/17qjy1227470606.ps",horizontal=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/www/html/rcomp/tmp/22epb1227470606.ps",horizontal=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/www/html/rcomp/tmp/35yl21227470606.ps",horizontal=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/www/html/rcomp/tmp/486571227470606.ps",horizontal=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/www/html/rcomp/tmp/52wj51227470606.ps",horizontal=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556)
> qqnorm(mysum$resid, main='Residual Normal Q-Q Plot')
> grid()
> dev.off()
null device
1
> (myerror <- as.ts(mysum$resid))
Time Series:
Start = 1
End = 61
Frequency = 1
1 2 3 4 5 6
0.061111111 -0.018888889 -0.008888889 -0.018888889 -0.008888889 0.001111111
7 8 9 10 11 12
0.011111111 0.001111111 -0.018888889 -0.040961538 -0.060961538 -0.080961538
13 14 15 16 17 18
-0.090961538 -0.100961538 -0.110961538 -0.090961538 -0.070961538 -0.070961538
19 20 21 22 23 24
-0.100961538 -0.100961538 -0.100961538 -0.080961538 -0.040961538 -0.080961538
25 26 27 28 29 30
-0.080961538 -0.070961538 -0.040961538 -0.010961538 -0.070961538 -0.120961538
31 32 33 34 35 36
-0.110961538 -0.110961538 -0.090961538 -0.080961538 -0.080961538 -0.070961538
37 38 39 40 41 42
-0.080961538 -0.080961538 -0.090961538 -0.060961538 -0.020961538 0.009038462
43 44 45 46 47 48
-0.010961538 0.009038462 0.059038462 0.069038462 0.109038462 0.089038462
49 50 51 52 53 54
0.079038462 0.039038462 0.059038462 0.109038462 0.159038462 0.149038462
55 56 57 58 59 60
0.209038462 0.239038462 0.239038462 0.269038462 0.219038462 0.179038462
61
0.219038462
> postscript(file="/var/www/html/rcomp/tmp/63p8j1227470606.ps",horizontal=F,pagecentre=F,paper="special",width=8.3333333333333,height=5.5555555555556)
> dum <- cbind(lag(myerror,k=1),myerror)
> dum
Time Series:
Start = 0
End = 61
Frequency = 1
lag(myerror, k = 1) myerror
0 0.061111111 NA
1 -0.018888889 0.061111111
2 -0.008888889 -0.018888889
3 -0.018888889 -0.008888889
4 -0.008888889 -0.018888889
5 0.001111111 -0.008888889
6 0.011111111 0.001111111
7 0.001111111 0.011111111
8 -0.018888889 0.001111111
9 -0.040961538 -0.018888889
10 -0.060961538 -0.040961538
11 -0.080961538 -0.060961538
12 -0.090961538 -0.080961538
13 -0.100961538 -0.090961538
14 -0.110961538 -0.100961538
15 -0.090961538 -0.110961538
16 -0.070961538 -0.090961538
17 -0.070961538 -0.070961538
18 -0.100961538 -0.070961538
19 -0.100961538 -0.100961538
20 -0.100961538 -0.100961538
21 -0.080961538 -0.100961538
22 -0.040961538 -0.080961538
23 -0.080961538 -0.040961538
24 -0.080961538 -0.080961538
25 -0.070961538 -0.080961538
26 -0.040961538 -0.070961538
27 -0.010961538 -0.040961538
28 -0.070961538 -0.010961538
29 -0.120961538 -0.070961538
30 -0.110961538 -0.120961538
31 -0.110961538 -0.110961538
32 -0.090961538 -0.110961538
33 -0.080961538 -0.090961538
34 -0.080961538 -0.080961538
35 -0.070961538 -0.080961538
36 -0.080961538 -0.070961538
37 -0.080961538 -0.080961538
38 -0.090961538 -0.080961538
39 -0.060961538 -0.090961538
40 -0.020961538 -0.060961538
41 0.009038462 -0.020961538
42 -0.010961538 0.009038462
43 0.009038462 -0.010961538
44 0.059038462 0.009038462
45 0.069038462 0.059038462
46 0.109038462 0.069038462
47 0.089038462 0.109038462
48 0.079038462 0.089038462
49 0.039038462 0.079038462
50 0.059038462 0.039038462
51 0.109038462 0.059038462
52 0.159038462 0.109038462
53 0.149038462 0.159038462
54 0.209038462 0.149038462
55 0.239038462 0.209038462
56 0.239038462 0.239038462
57 0.269038462 0.239038462
58 0.219038462 0.269038462
59 0.179038462 0.219038462
60 0.219038462 0.179038462
61 NA 0.219038462
> dum1 <- dum[2:length(myerror),]
> dum1
lag(myerror, k = 1) myerror
[1,] -0.018888889 0.061111111
[2,] -0.008888889 -0.018888889
[3,] -0.018888889 -0.008888889
[4,] -0.008888889 -0.018888889
[5,] 0.001111111 -0.008888889
[6,] 0.011111111 0.001111111
[7,] 0.001111111 0.011111111
[8,] -0.018888889 0.001111111
[9,] -0.040961538 -0.018888889
[10,] -0.060961538 -0.040961538
[11,] -0.080961538 -0.060961538
[12,] -0.090961538 -0.080961538
[13,] -0.100961538 -0.090961538
[14,] -0.110961538 -0.100961538
[15,] -0.090961538 -0.110961538
[16,] -0.070961538 -0.090961538
[17,] -0.070961538 -0.070961538
[18,] -0.100961538 -0.070961538
[19,] -0.100961538 -0.100961538
[20,] -0.100961538 -0.100961538
[21,] -0.080961538 -0.100961538
[22,] -0.040961538 -0.080961538
[23,] -0.080961538 -0.040961538
[24,] -0.080961538 -0.080961538
[25,] -0.070961538 -0.080961538
[26,] -0.040961538 -0.070961538
[27,] -0.010961538 -0.040961538
[28,] -0.070961538 -0.010961538
[29,] -0.120961538 -0.070961538
[30,] -0.110961538 -0.120961538
[31,] -0.110961538 -0.110961538
[32,] -0.090961538 -0.110961538
[33,] -0.080961538 -0.090961538
[34,] -0.080961538 -0.080961538
[35,] -0.070961538 -0.080961538
[36,] -0.080961538 -0.070961538
[37,] -0.080961538 -0.080961538
[38,] -0.090961538 -0.080961538
[39,] -0.060961538 -0.090961538
[40,] -0.020961538 -0.060961538
[41,] 0.009038462 -0.020961538
[42,] -0.010961538 0.009038462
[43,] 0.009038462 -0.010961538
[44,] 0.059038462 0.009038462
[45,] 0.069038462 0.059038462
[46,] 0.109038462 0.069038462
[47,] 0.089038462 0.109038462
[48,] 0.079038462 0.089038462
[49,] 0.039038462 0.079038462
[50,] 0.059038462 0.039038462
[51,] 0.109038462 0.059038462
[52,] 0.159038462 0.109038462
[53,] 0.149038462 0.159038462
[54,] 0.209038462 0.149038462
[55,] 0.239038462 0.209038462
[56,] 0.239038462 0.239038462
[57,] 0.269038462 0.239038462
[58,] 0.219038462 0.269038462
[59,] 0.179038462 0.219038462
[60,] 0.219038462 0.179038462
> z <- as.data.frame(dum1)
> z
lag(myerror, k = 1) myerror
1 -0.018888889 0.061111111
2 -0.008888889 -0.018888889
3 -0.018888889 -0.008888889
4 -0.008888889 -0.018888889
5 0.001111111 -0.008888889
6 0.011111111 0.001111111
7 0.001111111 0.011111111
8 -0.018888889 0.001111111
9 -0.040961538 -0.018888889
10 -0.060961538 -0.040961538
11 -0.080961538 -0.060961538
12 -0.090961538 -0.080961538
13 -0.100961538 -0.090961538
14 -0.110961538 -0.100961538
15 -0.090961538 -0.110961538
16 -0.070961538 -0.090961538
17 -0.070961538 -0.070961538
18 -0.100961538 -0.070961538
19 -0.100961538 -0.100961538
20 -0.100961538 -0.100961538
21 -0.080961538 -0.100961538
22 -0.040961538 -0.080961538
23 -0.080961538 -0.040961538
24 -0.080961538 -0.080961538
25 -0.070961538 -0.080961538
26 -0.040961538 -0.070961538
27 -0.010961538 -0.040961538
28 -0.070961538 -0.010961538
29 -0.120961538 -0.070961538
30 -0.110961538 -0.120961538
31 -0.110961538 -0.110961538
32 -0.090961538 -0.110961538
33 -0.080961538 -0.090961538
34 -0.080961538 -0.080961538
35 -0.070961538 -0.080961538
36 -0.080961538 -0.070961538
37 -0.080961538 -0.080961538
38 -0.090961538 -0.080961538
39 -0.060961538 -0.090961538
40 -0.020961538 -0.060961538
41 0.009038462 -0.020961538
42 -0.010961538 0.009038462
43 0.009038462 -0.010961538
44 0.059038462 0.009038462
45 0.069038462 0.059038462
46 0.109038462 0.069038462
47 0.089038462 0.109038462
48 0.079038462 0.089038462
49 0.039038462 0.079038462
50 0.059038462 0.039038462
51 0.109038462 0.059038462
52 0.159038462 0.109038462
53 0.149038462 0.159038462
54 0.209038462 0.149038462
55 0.239038462 0.209038462
56 0.239038462 0.239038462
57 0.269038462 0.239038462
58 0.219038462 0.269038462
59 0.179038462 0.219038462
60 0.219038462 0.179038462
> 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/www/html/rcomp/tmp/72ln21227470606.ps",horizontal=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/www/html/rcomp/tmp/81ad71227470606.ps",horizontal=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/www/html/rcomp/tmp/92e421227470606.ps",horizontal=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
>
> #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, '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/www/html/rcomp/tmp/10uq7j1227470606.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/www/html/rcomp/tmp/110ur21227470607.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/www/html/rcomp/tmp/12ngl51227470607.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/www/html/rcomp/tmp/13t5op1227470607.tab")
>
> system("convert tmp/17qjy1227470606.ps tmp/17qjy1227470606.png")
> system("convert tmp/22epb1227470606.ps tmp/22epb1227470606.png")
> system("convert tmp/35yl21227470606.ps tmp/35yl21227470606.png")
> system("convert tmp/486571227470606.ps tmp/486571227470606.png")
> system("convert tmp/52wj51227470606.ps tmp/52wj51227470606.png")
> system("convert tmp/63p8j1227470606.ps tmp/63p8j1227470606.png")
> system("convert tmp/72ln21227470606.ps tmp/72ln21227470606.png")
> system("convert tmp/81ad71227470606.ps tmp/81ad71227470606.png")
> system("convert tmp/92e421227470606.ps tmp/92e421227470606.png")
>
>
> proc.time()
user system elapsed
1.880 1.390 2.346