# rm(list=ls())
options(OutDec = ",")
#==============================================================================
# Equacao de investimento:
# Modelo: y = beta0 + beta1 T + beta2 G + epsilon
#==============================================================================
library("Matrix")
dados <- matrix(scan("../dados/d02_investimento.txt"),15,5,byrow=T)
y <- dados[,1]
n <- length(y)
X <- cbind(rep(1,n),dados[,2:3])
rankMatrix(X)
XtX <- t(X)%*%X
Xty <- t(X)%*%y
rankMatrix(XtX)
XtXInv <- solve(XtX)
betahat1 <- XtXInv%*%Xty
#==============================================================================
# Estimativa de minimos quadrados
#==============================================================================
print(betahat1)
[,1] [1,] -0,50063897 [2,] -0,01719844 [3,] 0,65372331
#==============================================================================
# Correlacao do b_i's
#==============================================================================
print(cov2cor(XtXInv))
[,1] [,2] [,3] [1,] 1,0000000 0,9644496 -0,9977924 [2,] 0,9644496 1,0000000 -0,9786266 [3,] -0,9977924 -0,9786266 1,0000000
#==============================================================================
# Analisando a tendencia e PIB
#==============================================================================
plot(X[,2],X[,3],pch=15,xlab="Tendência",ylab="PIB",col="red")
# Dados ordenados no tempo. Possiveis problemas!
#==============================================================================
# Agora, no exemplo temos o modelo (mais as covariaveis R e P):
# y = beta0 + beta1 T + beta2 G + beta3 R + beta4 P + epsilon
#==============================================================================
X <- cbind(rep(1,n),dados[,2:5])
rankMatrix(X)
XtX <- t(X)%*%X
Xty <- t(X)%*%y
rankMatrix(XtX)
XtXInv <- solve(XtX)
betahat2 <- XtXInv%*%Xty
#==============================================================================
# Estimativa de minimos quadrados
#==============================================================================
print(betahat2)
[,1] [1,] -0,5090707909 [2,] -0,0165803945 [3,] 0,6703834376 [4,] -0,0023259283 [5,] -0,0000940107
#==============================================================================
# Correlacao do b_i's
#==============================================================================
print(cov2cor(XtXInv))
[,1] [,2] [,3] [,4] [,5] [1,] 1,00000000 0,9415070 -0,99286402 0,08332984 -0,04318183 [2,] 0,94150703 1,0000000 -0,93846805 -0,12002463 -0,01602380 [3,] -0,99286402 -0,9384680 1,00000000 -0,10858380 -0,03075184 [4,] 0,08332984 -0,1200246 -0,10858380 1,00000000 -0,45708148 [5,] -0,04318183 -0,0160238 -0,03075184 -0,45708148 1,00000000
#==============================================================================
# Comparando os coeficiente da primeira e segunda regressoes
#==============================================================================
print("==== Coeficientes da primeira regressão ====")
print(betahat1)
print("==== Coeficientes da segunda regressão ====")
print(betahat2)
[1] "==== Coeficientes da primeira regressão ===="
[,1]
[1,] -0,50063897
[2,] -0,01719844
[3,] 0,65372331
[1] "==== Coeficientes da segunda regressão ===="
[,1]
[1,] -0,5090707909
[2,] -0,0165803945
[3,] 0,6703834376
[4,] -0,0023259283
[5,] -0,0000940107
#==============================================================================
# Note que os coeficientes diferem de uma regressao para outra
# Isto se deve ao fato das regressoras nao serem ortogonais
#==============================================================================
print(cor(X[2:5,2:5]))
[,1] [,2] [,3] [,4] [1,] 1,0000000 0,9125219 -0,9262413 -0,8183521 [2,] 0,9125219 1,0000000 -0,9293711 -0,9818378 [3,] -0,9262413 -0,9293711 1,0000000 0,8755363 [4,] -0,8183521 -0,9818378 0,8755363 1,0000000
#============================================================================
# Calcularemos os coeficientes de correlacao parcial
# y = beta0 + beta1 T + beta2 G + beta3 R + beta4 P + epsilon
#============================================================================
# Correlacao simples entre investimento e as demais variaveis
#============================================================================
cor.inv <- cor(dados)[1,2:5]
print(cor.inv)
[1] 0,7495873 0,8632077 0,5871350 0,4777117
#============================================================================
# Correlacao parcial
#============================================================================
cor.par <- rep(NA,4)
#============================================================================
# Correlacao parcial entre investimento e G, R, e P
#============================================================================
X <- cbind(rep(1,n),dados[,3:5])
XtXInv <- solve(t(X)%*%X)
M <- diag(rep(1,n))- X%*%XtXInv%*%t(X)
res1 <- M%*%y
res2 <- M%*%dados[,2]
cor.par[1] <- cor(res1,res2)
#============================================================================
# Correlacao parcial entre investimento e T, R, e P
#============================================================================
X <- cbind(rep(1,n),dados[,c(2,4,5)])
XtXInv <- solve(t(X)%*%X)
M <- diag(rep(1,n))- X%*%XtXInv%*%t(X)
res1 <- M%*%y
res2 <- M%*%dados[,3]
cor.par[2] <- cor(res1,res2)
#============================================================================
# Correlacao parcial entre investimento e T, G, e P
#============================================================================
X <- cbind(rep(1,n),dados[,c(2,3,5)])
XtXInv <- solve(t(X)%*%X)
M <- diag(rep(1,n))- X%*%XtXInv%*%t(X)
res1 <- M%*%y
res2 <- M%*%dados[,4]
cor.par[3] <- cor(res1,res2)
#============================================================================
# Correlacao parcial entre investimento e T, G, e R
#============================================================================
X <- cbind(rep(1,n),dados[,2:4])
XtXInv <- solve(t(X)%*%X)
M <- diag(rep(1,n))- X%*%XtXInv%*%t(X)
res1 <- M%*%y
res2 <- M%*%dados[,5]
cor.par[4] <- cor(res1,res2)
#============================================================================
# Combinando as correlações
#============================================================================
print(cbind(cor.inv,cor.par))
cor.inv cor.par [1,] 0,7495873 -0,93600197 [2,] 0,8632077 0,96795713 [3,] 0,5871350 -0,51666472 [4,] 0,4777117 -0,02205714