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
#===================================================================