Hi,
I have a set of matrix data named “invest” consists of 450 observations (75
countries, 6 years) with 7 variables (set as I, pop, inv, gov, c, life, d;
which each is “numeric[450]”). The procedure is modify from code provided
by B.E. Hansen at http://www.ssc.wisc.edu/~bhansen/progs/ecnmt_00.html.
*Then the variable is being transformed to*
y <- lag_v(i,0)
cf <- lag_v(c,0)
lpop <- lag_v(pop,0)
linv <- lag_v(inv,0)
lgov <- lag_v(gov,0)
d1 <- lag_v(d,0)
llife <- lag_v(life,0)
yt <- tr(y)
ct <- tr(cf)
y, cf, lpop, linv, lgov, d1, llife each is in “375x1 double matrix”
yt and ct each is “300x1 double matrix”
(I use R Studio so these characteristics are stated).
*The lag_v() and tr() process is as below:*
max_lag <- 1
tt <- t-max_lag
ty <- n*(t-max_lag-1)
lag_v <- function(x,lagn){
yl <- matrix(c(0),nrow=n,ncol=t)
for (i in 1:n) {
yl[i,]<-x[(1+(i-1)*t):(t*i)]
}
yl <- yl[,(1+max_lag-lagn):(t-lagn)]
out <- matrix(t(yl),nrow=nrow(yl)*ncol(yl),ncol=1)
out
}
tr <- function(y){
yf <- matrix(c(0),nrow=n,ncol=tt)
for (i in 1:n) {
yf[i,]<-y[(1+(i-1)*tt):(tt*i)]
}
yfm <- yf- colMeans(t(yf))
yfm <- yfm[,1:(tt-1)]
out <- matrix(t(yfm),nrow=nrow(yfm)*ncol(yfm),ncol=1)
out
}
*Then before the computation, something is being setup*
x <- cbind(lpop, linv, lgov, llife, cf)
… (skip as I think is unrelated with the problem encounter)
*And, in the early stage of computation:*
sse_calc <- function(y,x){
e <- y-x%*%qr.solve(x,y)
out <- t(e)%*%e
out
}
…
*It comes out with*
Error in qr.solve(x, y) : singular matrix 'a' in solve
I thought only square matrix would have this kind of problem. Would qr()
help in this case? Or is there any other possible solution for this problem?
Thanks.
[[alternative HTML version deleted]]