Research Article

# Application of Generalized Space-Time Autoregressive Model on GDP Data in West European Countries

## Algorithm 1

R codes for least square estimation of GSTAR model.
 # ============================================================= # [FUNCTION]: OLS estimation for GSTAR(p;L1,…,Lp) models # ============================================================= # 3 dimension zeros matrix # –––––––––––––––- zeros <-function(m,n,p){ W<-rep(0, m*n*p) dim(W)<-c(m, n, p) W} # “vec” operator vec<-function(X){ a<-dim(X) Y<- t(X[1, ]) for (i in 2:a[1]){ Y<- cbind(Y,t(X[i, ]))} t(Y)} #–––––––––– # Inverse of matrix #–––––––––– inv<-function(X){ if(dim(X)[1]! = dim(X)[2]) stop(“THE MATRIX MUST BE SYMMETRIC!!!”) else{ if (det(X)==0) stop("THE MATRIX IS SINGULAR!!!") else { n<-dim(X)[1] solve(X) } } } # ––––––––––––––––––––––––––––––– # Construction of vector Zi, for each i=1,…,N # ––––––––––––––––––––––––––– # Construction of vector Zi, for each i=1,…,N # ––––––––––––––––––––––––––– # suppose x = c(p,L1,..., Lp) represent the model order Zi<-function(Zt, x){ N<-dim(Zt)[1] #number of sites T<-dim(Zt)[2]-1 #number of time periods p<-x [1] Zi<-matrix(0, T-p+1, N) for (i in 1: N) Zi[,i]<-Zt[i,(p+1):(T+1)] Zi} # –––––––––––––––––––––––––––––––- # Construction of matrix Xi, for each i = 1,…,N # ––––––––––––––––––––––- Xi<-function(Zt,x) {N<-dim(Zt)[1] #number of sites T<-dim(Zt)[2]-1 #number of time periods p<-x[1] La<-x[2: length(x)] r<-lmd+1 # where lmd = the greatest order for weight matrices WZ<-zeros(N, T, r) for (k in 1: r) WZ[,, k]<-W [,, k]%*%Zt[, 1: T] Xi<-zeros((T-p+1),sum(La+1), N) if (p==1) { for (i in 1:N){ TR<-WZ[i,p:T,1:(La[1]+1)] Xi[,, i]<-TR } } if (p>=2){ for (i in 1:N){ TR<-WZ[i,p:T,1:(La[1]+1)] for (s in 2:p) TR<-cbind(TR,WZ[i,(p-s+1):(T-s+1),1:(La[s]+1)]) Xi[,, i]<-TR } } Xi} # –––––––––––––––––––––––––––––––- # OLS parameter of GSTAR model # –––––––––––––– gstar<-function(Zt,x){ p<-x[1] La<-x[2:length(x)] r<-lmd+1 # where lmd = the greatest order for weight matrices N<-dim(Zt)[1] #number of sites T<-dim(Zt)[2]-1 #number of time periods Xi<-Xi(Zt,x) Zi<-Zi(Zt,x) coef.OLS<-matrix(0,sum(La+1),N) col.name<-array(0,N) for (i in 1:N){ coef.OLS[, i]<-inv(t(Xi[,, i])%*%Xi[,,i])%*%t(Xi[,, i])%*%Zi[,i] col.name[i]<-paste("site",i)} colnames(coef.OLS)<-col.name round(coef.OLS,4)} # –––––––––––––––––––––––––––––––- # Residuals of GSTAR model # –––––––––––––– # (1). To find the LS estimates only, for example GSTAR(2;1,1), use # the command: #  > gstar(Zt,c(2,1,1)) # where Zt is data matrix. # (2). To find the estimates, prediction values, and residuals # vector respectively, call the function by the following # commands: #    > as.2<-res(Zt,c(2,1,1)) #   > as.2\$coef #   > as.2\$pred #   > as.2\$res # –––––––––––––––––––––––––––––––- res<-function(Zt,x){ coef<-gstar(Zt,x) Xi<-Xi(Zt,x) p<-x[1] La<-x[2:length(x)] N<-dim(Zt)[1] #number of sites T<-dim(Zt)[2]-1 #number of time periods Z.OLS<-matrix(0,T-p+1,N) res.OLS<-matrix(0,N,T-p+1) if (p==1){ for (i in 1:N){ if (La[1]!=0)Z.OLS[,i]<-Xi[,,i]%*%coef[,i] else Z.OLS[,i]<-Xi[,,i]*coef[,i] res.OLS[i,]<-t(Z.OLS[,i]-Zt[i,(p+1):(T+1)])} } if (p!=1){ for (i in 1:N){ Z.OLS[,i]<-Xi[,,i]%*%coef[,i] res.OLS[i,]<-t(Z.OLS[,i]-Zt[i,(p+1):(T+1)]) } } az<-new.env() az\$Xi<-Xi # matrix Xi az\$coef<-coef az\$pred<-t(Z.OLS) az\$res<-res.OLS ax<-as.list(az)} # –––––––––––––––––––––––––––––––-

We are committed to sharing findings related to COVID-19 as quickly as possible. We will be providing unlimited waivers of publication charges for accepted research articles as well as case reports and case series related to COVID-19. Review articles are excluded from this waiver policy. Sign up here as a reviewer to help fast-track new submissions.