In [1]:
# rm(list=ls())
options(OutDec = ",")
#===================================================================
# Exemplo da função de produção translog.
#===================================================================
# Análise: função de produção.
#===================================================================
dataxy <- read.table("../dados/exemplo_11.txt",header=T)
n <- dim(dataxy)[1]
lnprod <- log(dataxy[,1])
lntrab <- log(dataxy[,2])
lncapi <- log(dataxy[,3])
lntrabx <- 0.5*(lntrab^2)
lncapix <- 0.5*(lncapi^2)
SST <- t(lnprod-mean(lnprod))%*%(lnprod-mean(lnprod))
In [2]:
#===================================================================
# Análise do modelo 1: irrestrito (maior).
#===================================================================
yfit1 <- lm(lnprod ~ lntrab+lncapi+lntrabx+lncapix+lntrab:lncapi)
R2.yfit1 <- 1 - t(yfit1$res)%*%yfit1$res / SST
print(summary(yfit1))
Call: lm(formula = lnprod ~ lntrab + lncapi + lntrabx + lncapix + lntrab:lncapi) Residuals: Min 1Q Median 3Q Max -0,33990 -0,10106 -0,01238 0,04605 0,39281 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 0,94420 2,91075 0,324 0,7489 lntrab 3,61364 1,54807 2,334 0,0296 * lncapi -1,89311 1,01626 -1,863 0,0765 . lntrabx -0,96405 0,70738 -1,363 0,1874 lncapix 0,08529 0,29261 0,291 0,7735 lntrab:lncapi 0,31239 0,43893 0,712 0,4845 --- Signif. codes: 0 ‘***’ 0,001 ‘**’ 0,01 ‘*’ 0,05 ‘.’ 0,1 ‘ ’ 1 Residual standard error: 0,1799 on 21 degrees of freedom Multiple R-squared: 0,9549, Adjusted R-squared: 0,9441 F-statistic: 88,85 on 5 and 21 DF, p-value: 2,121e-13
In [3]:
#===================================================================
# Tabela anova.
#===================================================================
print("===========================================================")
print(anova(yfit1)) # versão 1
print("===========================================================")
X <- cbind(lntrab,lncapi,lntrabx,lncapix,lntrab*lncapi)
yfit1x <- lm(lnprod ~ X)
print(anova(yfit1x)) # versão 2
[1] "===========================================================" Analysis of Variance Table Response: lnprod Df Sum Sq Mean Sq F value Pr(>F) lntrab 1 13,5239 13,5239 417,6942 2,432e-15 *** lncapi 1 0,6877 0,6877 21,2392 0,0001517 *** lntrabx 1 0,0014 0,0014 0,0422 0,8392772 lncapix 1 0,1539 0,1539 4,7546 0,0407396 * lntrab:lncapi 1 0,0164 0,0164 0,5065 0,4844789 Residuals 21 0,6799 0,0324 --- Signif. codes: 0 ‘***’ 0,001 ‘**’ 0,01 ‘*’ 0,05 ‘.’ 0,1 ‘ ’ 1 [1] "===========================================================" Analysis of Variance Table Response: lnprod Df Sum Sq Mean Sq F value Pr(>F) X 5 14,3833 2,87665 88,847 2,121e-13 *** Residuals 21 0,6799 0,03238 --- Signif. codes: 0 ‘***’ 0,001 ‘**’ 0,01 ‘*’ 0,05 ‘.’ 0,1 ‘ ’ 1
In [4]:
#===================================================================
# Matriz de covariâncias.
#===================================================================
options(digits=4)
vcovfit1 <- vcov(yfit1)
print(vcovfit1)
(Intercept) lntrab lncapi lntrabx lncapix lntrab:lncapi (Intercept) 8,4725 -2,38790 -0,33129 -0,0876 -0,23317 0,3635 lntrab -2,3879 2,39653 -1,23102 -0,6658 0,03477 0,1831 lncapi -0,3313 -1,23102 1,03279 0,5231 0,02637 -0,2255 lntrabx -0,0876 -0,66580 0,52305 0,5004 0,14674 -0,2880 lncapix -0,2332 0,03477 0,02637 0,1467 0,08562 -0,1160 lntrab:lncapi 0,3635 0,18311 -0,22554 -0,2880 -0,11604 0,1927
In [5]:
#===================================================================
# Intervalos de confiança.
#===================================================================
print(confint(yfit1))
2,5 % 97,5 % (Intercept) -5,1090 6,9974 lntrab 0,3942 6,8330 lncapi -4,0065 0,2203 lntrabx -2,4351 0,5070 lncapix -0,5232 0,6938 lntrab:lncapi -0,6004 1,2252
In [6]:
#===================================================================
# Análise do modelo 2: restrito (menor).
#===================================================================
yfit2 <- lm(lnprod ~ lntrab + lncapi)
R2.yfit2 <- 1 - t(yfit2$res)%*%yfit2$res / SST
print(summary(yfit2))
Call: lm(formula = lnprod ~ lntrab + lncapi) Residuals: Min 1Q Median 3Q Max -0,3038 -0,1012 -0,0182 0,0558 0,5056 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 1,1706 0,3268 3,58 0,00150 ** lntrab 0,6030 0,1260 4,79 7,1e-05 *** lncapi 0,3757 0,0853 4,40 0,00019 *** --- Signif. codes: 0 ‘***’ 0,001 ‘**’ 0,01 ‘*’ 0,05 ‘.’ 0,1 ‘ ’ 1 Residual standard error: 0,188 on 24 degrees of freedom Multiple R-squared: 0,943, Adjusted R-squared: 0,939 F-statistic: 200 on 2 and 24 DF, p-value: 1,07e-15
In [7]:
#===================================================================
# Tabela anova
#===================================================================
print("===========================================================")
print(anova(yfit2)) # versão 1
print("===========================================================")
X <- cbind(lntrab,lncapi)
yfit2x <- lm(lnprod ~ X)
print(anova(yfit2x)) # versão 2
[1] "===========================================================" Analysis of Variance Table Response: lnprod Df Sum Sq Mean Sq F value Pr(>F) lntrab 1 13,52 13,52 381,1 3,1e-16 *** lncapi 1 0,69 0,69 19,4 0,00019 *** Residuals 24 0,85 0,04 --- Signif. codes: 0 ‘***’ 0,001 ‘**’ 0,01 ‘*’ 0,05 ‘.’ 0,1 ‘ ’ 1 [1] "===========================================================" Analysis of Variance Table Response: lnprod Df Sum Sq Mean Sq F value Pr(>F) X 2 14,21 7,11 200 1,1e-15 *** Residuals 24 0,85 0,04 --- Signif. codes: 0 ‘***’ 0,001 ‘**’ 0,01 ‘*’ 0,05 ‘.’ 0,1 ‘ ’ 1
In [8]:
#===================================================================
# Matriz de covariâncias.
#===================================================================
options(digits=4)
vcovfit2 <- vcov(yfit2)
print(vcovfit2)
(Intercept) lntrab lncapi (Intercept) 0,106786 -0,019835 0,001189 lntrab -0,019835 0,015864 -0,009616 lncapi 0,001189 -0,009616 0,007284
In [9]:
#===================================================================
# Intervalos de confiança.
#===================================================================
print(confint(yfit2))
2,5 % 97,5 % (Intercept) 0,4962 1,8451 lntrab 0,3430 0,8630 lncapi 0,1996 0,5519
In [10]:
#===================================================================
# Calculando a estatística F com R^2 (irrestrito) e R*^2 (restrito).
# Testando H_0: beta_4 = beta_5 = beta_6 = 0
#===================================================================
valorF <- (R2.yfit1-R2.yfit2)/3/((1-R2.yfit1)/yfit1$df.residual)
print(c(valorF > qf(0.95,3,yfit2$df.residual)))
# H_0 nao eh rejeitada.
# Conclusao: a funcao Cobb-Douglas eh mais apropriada.
[1] FALSE
In [11]:
#===================================================================
# Verificando a diminuição no R^2 (irrestrito) para R*^2 (restrito).
#===================================================================
print(c(R2.yfit1)) # R^2 (irrestrito)
print(c(R2.yfit2)) # R*^2 (restrito)
[1] 0,9549 [1] 0,9435
In [12]:
#===================================================================
# Testando H_0: beta_2 + beta_3 = 1, utilizando o teste t e o F.
#===================================================================
#m <- 0.6030 + 0.3757 - 1
m <- sum(yfit2$coef[2:3])-1
#ep.m <- sqrt(0.1260^2+0.0853^2-2*0.009616)
ep.m <- sqrt(vcovfit2[2,2]+vcovfit2[3,3]+2*vcovfit2[2,3])
valort <- m / ep.m
print("===========================================================")
print(c(abs(valort) > qt(0.975,yfit2$df.residual))) # Teste t
# H_0 nao eh rejeitada
print("===========================================================")
valorF <- valort^2
print(c(valorF > qf(0.95,1,yfit2$df.residual))) # Teste F
# H_0 nao eh rejeitada
[1] "===========================================================" [1] FALSE [1] "===========================================================" [1] FALSE
In [13]:
#===================================================================
# Fim
#===================================================================