
R version 3.6.0 (2019-04-26) -- "Planting of a Tree"
Copyright (C) 2019 The R Foundation for Statistical Computing
Platform: x86_64-w64-mingw32/x64 (64-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.

  Natural language support but running in an English locale

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.

[Previously saved workspace restored]

> rm(list = ls())
> #   
> date()
[1] "Wed Aug 07 07:08:21 2019"
> sessionInfo()
R version 3.6.0 (2019-04-26)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 17134)

Matrix products: default

Random number generation:
 RNG:     Mersenne-Twister 
 Normal:  Inversion 
 Sample:  Rounding 
 
locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] compiler_3.6.0
> #########################################################################
> # MONTE CARLO EXPERIMENT 
> ##########################################################################
> ##########################################################################
> # Libraries
> ##########################################################################
> library(quantreg)
> library(splines)
> library(SparseM)
> library(MASS)
> ##########################################################################
> # Functions
> ##########################################################################
> source("rq.fit.panel.all.revised.R")
> #########################################################################
> # Data
> ##########################################################################
> n <- c(100,100,100,200,200,200)
> m <- c(50,100,200,50,100,200)
> 
> S = 200
> 
> R <- 400
> 
> lambda = 0.5
> beta1 = 1
> beta2 = 0.5
> rho_x = 0.8
> rho_f = 0.9
> rho_x_scale = sqrt(1-rho_x^2)
> rho_f_scale = sqrt(1-rho_f^2)
> z0 = 0
> f0 = 0
> 
> delta = 0.1
> 
> Egamma = 0.5
> Vgamma = 1
> Evartheta = 0.5
> Vvartheta = 1
> Emu = 0.5
> Vmu = 1
> 
> GeoLambda <- array(NA,c(length(S)))
> 
> MG.F00 <- array(0,c(3,R,length(n)))
> MG.G00 <- array(0,c(3,R,length(n)))
> DYN.F00 <- array(0,c(3,R,length(n)))
> DYN.G00 <- array(0,c(3,R,length(n)))
> 
> set.seed(14)
> 
> for (ii in 1:length(n))
+ {
+ s <- rep(1:n[ii],each=m[ii])
+ st <- rep(1:m[ii],n[ii])
+ 
+ for(i in 1:R){
+ z1it <- z2it <- y0 <- Y <- YL1 <- YL2 <- u <- NULL
+ 
+ deltai <- rep(runif(n[ii],0,0.2),each=(m[ii]+S))
+ sigmai <- rep(runif(n[ii],0.9,1.1),each=(m[ii]+S))
+ 
+ for(t in 1:(m[ii]+S))
+ {
+ if(t==1){f1 <- f0}
+ if(t!=1){f1 <- rbind(f1,rho_f * f1[t-1] + rho_f_scale * rnorm(1))}
+ 
+ if(t==1){f2 <- f0}
+ if(t!=1){f2 <- rbind(f2,rho_f * f2[t-1] + rho_f_scale * rnorm(1))}
+ }
+ 
+ f1 <- rep(f1,n[ii])
+ f2 <- rep(f2,n[ii])
+ 
+ for(j in 1:n[ii])
+ {
+ for(t in 1:(m[ii]+S))
+ {
+ if(t==1){z1 <- z0}
+ if(t!=1){z1 <- rbind(z1,rho_x * z1[t-1] + rho_x_scale * rnorm(1))}
+ 
+ if(t==1){z2 <- z0}
+ if(t!=1){z2 <- rbind(z2,rho_x * z2[t-1] + rho_x_scale * rnorm(1))}
+ 
+ }
+ z1it <- c(z1it,z1)
+ z2it <- c(z2it,z2)
+ 
+ }
+ 
+ mu <- sqrt(Vmu)*rnorm(n[ii],Emu)
+ mu <- rep(mu,each=(m[ii]+S))
+ 
+ vartheta <- sqrt(Vvartheta)*rnorm(n[ii],Evartheta)
+ vartheta <- rep(vartheta,each=(m[ii]+S))
+ 
+ x1 <- mu + vartheta * f1 + z1it
+ x2 <- mu + vartheta * f2 + z2it
+ 
+ X1 <- matrix(x1,m[ii]+S,n[ii])
+ X1S <- X1[c(1:S),]
+ X1T <- X1[-c(1:S),]
+ 
+ X2 <- matrix(x2,m[ii]+S,n[ii])
+ X2S <- X2[c(1:S),]
+ X2T <- X2[-c(1:S),]
+ 
+ x1bar <- rep(apply(X1T,2,mean),each=m[ii])
+ x2bar <- rep(apply(X2T,2,mean),each=m[ii])
+ 
+ gamma1 <- sqrt(Vgamma)*rnorm(n[ii],Egamma)
+ gamma1 <- rep(gamma1,each=(m[ii]+S))
+ gamma2 <- sqrt(Vgamma)*rnorm(n[ii],Egamma)
+ gamma2 <- rep(gamma2,each=(m[ii]+S))
+ 
+ Gamma1 <- matrix(gamma1,m[ii]+S,n[ii])
+ gamma1T <- c(Gamma1[-c(1:S),])
+ Gamma2 <- matrix(gamma2,m[ii]+S,n[ii])
+ gamma2T <- c(Gamma2[-c(1:S),])
+ 
+ U <- sigmai * (1 + deltai * x1) * rnorm( (m[ii]+S) * n[ii] )
+  
+ epsilon <- gamma1 * f1 + gamma2 * f2 + U
+ Epsilon <- matrix(epsilon,m[ii]+S,n[ii])
+ epsilonS <- Epsilon[c(1:S),]
+ epsilonT <- Epsilon[-c(1:S),]
+ 
+ F1 <- matrix(f1,m[ii]+S,n[ii])
+ F1S <- F1[c(1:S),]
+ F1T <- F1[-c(1:S),]
+ 
+ F2 <- matrix(f2,m[ii]+S,n[ii])
+ F2S <- F2[c(1:S),]
+ F2T <- F2[-c(1:S),]
+ 
+ f1bar <- rep(apply(F1T,2,mean),each=m[ii])
+ f2bar <- rep(apply(F2T,2,mean),each=m[ii])
+ 
+ U <- matrix(U,m[ii]+S,n[ii])
+ US <- U[c(1:S),]
+ UT <- U[-c(1:S),]
+ 
+ ubar <- rep(apply(UT,2,mean),each=m[ii])
+ 
+ alpha <- x1bar + gamma1T * f1bar + ubar + rep(rnorm(n[ii]),each=m[ii])
+ Alpha <- matrix(alpha,m[ii],n[ii])
+ 
+ beta1ix <- rep(runif(n[ii],-0.25,0.25),each=m[ii])
+ beta1i <- beta1 + beta1ix
+ betauniq <- beta1i[st==1]
+ 
+ for (oi in 1:S){ GeoLambda[oi] <- lambda^(oi-1)}
+ 
+ for (sj in 1:n[ii])
+ {
+ y0[sj] <- (1-lambda)^(-1) * Alpha[1,sj] +  betauniq[sj] * sum(GeoLambda * rev(X1S[,sj])) + beta2 * sum(GeoLambda * rev(X2S[,sj])) + sum(GeoLambda * rev(epsilonS[,sj]))
+ }
+ 
+ for (j in 1:n[ii])
+ {
+ for(t in 1:m[ii])
+ {
+ if(t==1){y <-  Alpha[t,j] + lambda * y0[j] + betauniq[j] * X1T[t,j] + beta2 * X2T[t,j] + epsilonT[t,j]}
+ if(t!=1){y <- rbind(y, Alpha[t,j] + lambda * y[t-1] + betauniq[j] * X1T[t,j] + beta2 * X2T[t,j] + epsilonT[t,j])}
+ }
+ Y <- c(Y,y)
+ }
+ 
+ for (j in 1:n[ii])
+ {
+ Ysj <- cbind(Y,s)[s==j,]
+ YL1 <- c(YL1,c(NA,Ysj[-dim(Ysj)[1],1]))
+ }
+ 
+ for (j in 1:n[ii])
+ {
+ YL1sj <- cbind(YL1,s)[s==j,]
+ YL2 <- c(YL2,c(NA,YL1sj[-dim(YL1sj)[1],1]))
+ }
+ 
+ YY <- cbind(Y,YL1)
+ X <- cbind(c(X1T),c(X2T))
+ mYX <- PQ(cbind(YY,X),st)$Ph
+ YX <- cbind(s,YY,X,mYX)
+ YX <- na.omit(YX)
+ 
+ BetasHP <- matrix(0,6,n[ii])
+ 
+ #
+ 
+ for (isi in 1:n[ii]){
+ fit <- rq(YX[YX[,1]==isi,2]~YX[YX[,1]==isi,3]+YX[YX[,1]==isi,4]+YX[YX[,1]==isi,5]+YX[YX[,1]==isi,6]+YX[YX[,1]==isi,7]+YX[YX[,1]==isi,8]+YX[YX[,1]==isi,9],tau=0.5)
+ BetasHP[1,isi] <- fit$coef[2]
+ BetasHP[2,isi] <- fit$coef[3]
+ BetasHP[3,isi] <- fit$coef[3]/(1-fit$coef[2])
+ 
+ fit <- rq(YX[YX[,1]==isi,2]~YX[YX[,1]==isi,3]+YX[YX[,1]==isi,4]+YX[YX[,1]==isi,5]+YX[YX[,1]==isi,6]+YX[YX[,1]==isi,7]+YX[YX[,1]==isi,8]+YX[YX[,1]==isi,9],tau=0.25)
+ BetasHP[4,isi] <- fit$coef[2]
+ BetasHP[5,isi] <- fit$coef[3]
+ BetasHP[6,isi] <- fit$coef[3]/(1-fit$coef[2])
+ 
+ }
+ 
+ #
+ # QMG
+ #
+ 
+ MG.F00[1,i,ii] <- mean(BetasHP[1,])
+ MG.F00[2,i,ii] <- mean(BetasHP[2,])
+ MG.F00[3,i,ii] <- mean(BetasHP[3,])
+ 
+ MG.G00[1,i,ii] <- mean(BetasHP[4,])
+ MG.G00[2,i,ii] <- mean(BetasHP[5,])
+ MG.G00[3,i,ii] <- mean(BetasHP[6,])
+ 
+ #
+ # DQR
+ #
+ 
+ YYY <- cbind(Y,YL1,YL2)
+ YYX <- cbind(s,YYY,X)
+ YYX <- na.omit(YYX)
+ 
+ fit <- rq.fit.ivpanel(YYX[,3],cbind(YYX[,5],YYX[,6]),YYX[,4],YYX[,2],YYX[,1],tau=0.5)
+ 
+ DYN.F00[1,i,ii] <- fit[1]
+ DYN.F00[2,i,ii] <- fit[2]
+ DYN.F00[3,i,ii] <- fit[2]/(1-fit[1])
+ 
+ fit <- rq.fit.ivpanel(YYX[,3],cbind(YYX[,5],YYX[,6]),YYX[,4],YYX[,2],YYX[,1],tau=0.25)
+ 
+ DYN.G00[1,i,ii] <- fit[1]
+ DYN.G00[2,i,ii] <- fit[2]
+ DYN.G00[3,i,ii] <- fit[2]/(1-fit[1])
+ 
+ }
+ 
+ }
> 
> #
> # Final Tables for the Normal Case:
> #
> 
> Table1.beta <- round(cbind(ns,ms,B[,1:2],Bt[,1:2]),4)
> Table1.beta 
       ns  ms     DYN    QMG     DYN    QMG
 [1,] 100  50 -0.1916 0.0496 -0.1662 0.0634
 [2,] 100  50  0.2206 0.0608  0.1975 0.0729
 [3,] 100 100 -0.2626 0.0240 -0.2401 0.0309
 [4,] 100 100  0.2802 0.0344  0.2593 0.0406
 [5,] 100 200 -0.2909 0.0023 -0.2687 0.0078
 [6,] 100 200  0.3002 0.0207  0.2787 0.0233
 [7,] 200  50 -0.1900 0.0573 -0.1638 0.0700
 [8,] 200  50  0.2155 0.0625  0.1924 0.0751
 [9,] 200 100 -0.2563 0.0296 -0.2329 0.0357
[10,] 200 100  0.2724 0.0341  0.2500 0.0402
[11,] 200 200 -0.2932 0.0125 -0.2707 0.0167
[12,] 200 200  0.3021 0.0192  0.2802 0.0224
> 
> Table1.lambda.theta <- round(cbind(ns,ms,B[,-c(1:2)],Bt[,-c(1:2)]),4)
> Table1.lambda.theta
       ns  ms    DYN     QMG    DYN     QMG    DYN     QMG    DYN     QMG
 [1,] 100  50 0.1908 -0.0608 0.6639 -0.0660 0.1871 -0.0602 0.6244 -0.0175
 [2,] 100  50 0.2011  0.0628 0.7307  0.0966 0.1970  0.0624 0.6860  0.0803
 [3,] 100 100 0.2256 -0.0213 0.7141 -0.0125 0.2231 -0.0211 0.6589  0.0076
 [4,] 100 100 0.2307  0.0241 0.7471  0.0500 0.2285  0.0240 0.6890  0.0519
 [5,] 100 200 0.2395 -0.0027 0.7352  0.0034 0.2383 -0.0027 0.6823  0.0149
 [6,] 100 200 0.2419  0.0085 0.7524  0.0406 0.2408  0.0088 0.6989  0.0448
 [7,] 200  50 0.1895 -0.0648 0.6571 -0.0680 0.1850 -0.0653 0.6176 -0.0267
 [8,] 200  50 0.1994  0.0658 0.7210  0.0854 0.1953  0.0665 0.6736  0.0596
 [9,] 200 100 0.2217 -0.0272 0.7010 -0.0253 0.2195 -0.0271 0.6521 -0.0058
[10,] 200 100 0.2269  0.0280 0.7307  0.0425 0.2247  0.0280 0.6778  0.0368
[11,] 200 200 0.2403 -0.0096 0.7341 -0.0048 0.2387 -0.0095 0.6790  0.0065
[12,] 200 200 0.2427  0.0108 0.7484  0.0269 0.2412  0.0107 0.6934  0.0284
> 
> 
> 
> 
