Licença

This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.

License: CC BY-SA 4.0

Citação

Sugestão de citação: FIGUEIREDO, Adriano Marcos Rodrigues. Econometria: exercício 7.19, demanda por frangos, Gujarati e Porter (2011, p.235-236). Campo Grande-MS,Brasil: RStudio/Rpubs, 2018 (atualizado em 2020). Disponível em http://rpubs.com/amrofi/exercicio_gujarati_7_19.

1 Primeiros passos

Os primeiros passos são criar ou abrir um diretório de trabalho. Se optar por criar um novo projeto, haverá a possibilidade de criar em uma pasta vazia. Em seguida, sugere-se que coloque os dados nesta pasta, se possível em um arquivo MS Excel e chame a planilha de ‘dados’.Neste caso, a planilha chama-se gujarati 5ed p236 frangos tabela7_9.xlsx.

7.19. Demanda por frangos nos Estados Unidos, 1960-1982. Para estudar o consumo per capita de frango nos Estados Unidos, use os dados da Tabela 7.9, em que Y = consumo per capita de frango em libras (peso) X2= renda real disponível per capita, em $ X3= preço real do frango no varejo, em centavos de dólar por libra (peso) ¢ X4= preço real da carne suína no varejo, em centavos de dólar por libra (peso) ¢ X5= preço real da carne bovina no varejo, em centavos de dólar por libra (peso) ¢ X6= preço real dos substitutos da carne de frango, em centavos de dólar por libra (peso), que é uma média ponderada dos preços reais das carnes suína e bovina, usando como pesos o consumo relativo de cada uma dessas carnes em relação ao consumo total delas. Agora, considere as seguintes funções de demanda:

  1. \[ ln{Y_t} = \alpha _1 + \alpha_2 X_{2t} + \alpha _3 X_{3t} + u_t \]
  2. \[ ln{Y_t} = \gamma _1 + \gamma _2 X_{2t} + \gamma _3 X_{3t} + \gamma _4 X_{4t} + u_t \]
  3. \[ ln{Y_t} = \lambda _1 + \lambda _2 X_{2t} + \lambda _3 X_{3t} + \lambda _4 X_{5t} + u_t \]
  4. \[ ln{Y_t} = \theta _1 + \theta _2 X_{2t} + \theta _3 X_{3t} + \theta _4 X_{4t} + \theta _5 X_{5t} + u_t \]
  5. \[ ln{Y_t} = \beta _1 + \beta _2 X_{2t} + \beta _3 X_{3t} + \beta _4 X_{6t} + u_t \]

Chamando os dados de gujarati 5ed p236 frangos tabela7_9.xlsx:

library(readxl)
library(foreign)
dados <- read_excel("gujarati 5ed p236 frangos tabela7_9.xlsx", sheet = "dados")
# Y\tPer Capita Consumption of Chickens, Pounds\t\t\t\t\t\t X2\tReal Disposable
# Income Per Capita, $\t\t\t\t\t\t X3\tReal Retail Price of Chicken Per Pound,
# Cents\t\t\t\t\t\t X4\tReal Retail Price of Pork Per Pound, Cents\t\t\t\t\t\t
# X5\tReal Retail Price of Beef Per Pound, Cents\t\t\t\t\t\t X6\tComposite Real
# Price of Chicken Substitutes Per Pound, Cents\t\t\t\t\t\t

A opção do dput() pode ser obtida abaixo.

dados <- structure(list(YEAR = c(1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967,
    1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980,
    1981, 1982), Y = c(27.8, 29.9, 29.8, 30.8, 31.2, 33.3, 35.6, 36.4, 36.7, 38.4,
    40.4, 40.3, 41.8, 40.4, 40.7, 40.1, 42.7, 44.1, 46.7, 50.6, 50.1, 51.7, 52.9),
    X2 = c(397.5, 413.3, 439.2, 459.7, 492.9, 528.6, 560.3, 624.6, 666.4, 717.8,
        768.2, 843.3, 911.6, 931.1, 1021.5, 1165.9, 1349.6, 1449.4, 1575.5, 1759.1,
        1994.2, 2258.1, 2478.7), X3 = c(42.2, 38.1, 40.3, 39.5, 37.3, 38.1, 39.3,
        37.8, 38.4, 40.1, 38.6, 39.8, 39.7, 52.1, 48.9, 58.3, 57.9, 56.5, 63.7, 61.6,
        58.9, 66.4, 70.4), X4 = c(50.7, 52, 54, 55.3, 54.7, 63.7, 69.8, 65.9, 64.5,
        70, 73.2, 67.8, 79.1, 95.4, 94.2, 123.5, 129.9, 117.6, 130.9, 129.8, 128,
        141, 168.2), X5 = c(78.3, 79.2, 79.2, 79.2, 77.4, 80.2, 80.4, 83.9, 85.5,
        93.7, 106.1, 104.8, 114, 124.1, 127.6, 142.9, 143.6, 139.2, 165.5, 203.3,
        219.6, 221.6, 232.6), X6 = c(65.8, 66.9, 67.8, 69.6, 68.7, 73.6, 76.3, 77.2,
        78.1, 84.7, 93.3, 89.7, 100.7, 113.5, 115.3, 136.7, 139.2, 132, 132.1, 154.4,
        174.9, 180.8, 189.4)), row.names = c(NA, -23L), class = c("tbl_df", "tbl",
    "data.frame"))

attach(dados)

Vamos ver como está a tabela importada:

library(knitr)
kable(dados[, 1:7], caption = "Dados da tabela 7-9")
Dados da tabela 7-9
YEAR Y X2 X3 X4 X5 X6
1960 27.8 397.5 42.2 50.7 78.3 65.8
1961 29.9 413.3 38.1 52.0 79.2 66.9
1962 29.8 439.2 40.3 54.0 79.2 67.8
1963 30.8 459.7 39.5 55.3 79.2 69.6
1964 31.2 492.9 37.3 54.7 77.4 68.7
1965 33.3 528.6 38.1 63.7 80.2 73.6
1966 35.6 560.3 39.3 69.8 80.4 76.3
1967 36.4 624.6 37.8 65.9 83.9 77.2
1968 36.7 666.4 38.4 64.5 85.5 78.1
1969 38.4 717.8 40.1 70.0 93.7 84.7
1970 40.4 768.2 38.6 73.2 106.1 93.3
1971 40.3 843.3 39.8 67.8 104.8 89.7
1972 41.8 911.6 39.7 79.1 114.0 100.7
1973 40.4 931.1 52.1 95.4 124.1 113.5
1974 40.7 1021.5 48.9 94.2 127.6 115.3
1975 40.1 1165.9 58.3 123.5 142.9 136.7
1976 42.7 1349.6 57.9 129.9 143.6 139.2
1977 44.1 1449.4 56.5 117.6 139.2 132.0
1978 46.7 1575.5 63.7 130.9 165.5 132.1
1979 50.6 1759.1 61.6 129.8 203.3 154.4
1980 50.1 1994.2 58.9 128.0 219.6 174.9
1981 51.7 2258.1 66.4 141.0 221.6 180.8
1982 52.9 2478.7 70.4 168.2 232.6 189.4

Estimando o modelo linear de regressao multipla fazendo as regressoes de Y contra as variaveis X2, X3, X4, X5 e X6 com logs. Observe que são colocadas quatro possíveis especificações, com as variáveis em logaritmos e a variável Y sendo dependente em todas. As alterações são para as variáveis X2 até X5. Neste exemplo, não se está preocupado com a interpretação econômica, para fins do exemplo e, portanto, apenas trata-se das variáveis como X.

O comando chama a função read_excel armazenando seu resultado em um data.frame, de nome dados. Na sequência, a função View exibe os dados e o attach anexa os rótulos às variáveis, de modo a poder utilizar apenas o nome de cada variável para executar os procedimentos.

2 Resultados

2.1 Estimação

Fazendo as regressoes de Y contra as variaveis X2, X3, X4, X5 e X6 com logs. Agora estimam-se as regressões com uso da função lm e com operadores de logaritmos. As equações tomam a forma:

attach(dados)
EQ1 <- lm(log(Y) ~ log(X2) + log(X3))
EQ2 <- lm(log(Y) ~ log(X2) + log(X3) + log(X4))
EQ3 <- lm(log(Y) ~ log(X2) + log(X3) + log(X5))
EQ4 <- lm(log(Y) ~ log(X2) + log(X3) + log(X4) + log(X5))
EQ5 <- lm(log(Y) ~ log(X2) + log(X3) + +log(X6))

Se a saída fosse apenas pelo comando summary, sairia da forma:

summary(EQ1)

Call:
lm(formula = log(Y) ~ log(X2) + log(X3))

Residuals:
      Min        1Q    Median        3Q       Max 
-0.044980 -0.014512 -0.007377  0.013541  0.050824 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  2.03282    0.11618  17.497 1.36e-13 ***
log(X2)      0.45153    0.02469  18.284 5.94e-14 ***
log(X3)     -0.37221    0.06347  -5.865 9.76e-06 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.02778 on 20 degrees of freedom
Multiple R-squared:  0.9801,    Adjusted R-squared:  0.9781 
F-statistic: 491.9 on 2 and 20 DF,  p-value: < 2.2e-16
confint(EQ1)
                 2.5 %     97.5 %
(Intercept)  1.7904667  2.2751731
log(X2)      0.4000152  0.5030399
log(X3)     -0.5045995 -0.2398239
# opcao jtools
library(jtools)
jtools::summ(EQ1)
Observations 23
Dependent variable log(Y)
Type OLS linear regression
F(2,20) 491.87
0.98
Adj. R² 0.98
Est. S.E. t val. p
(Intercept) 2.03 0.12 17.50 0.00
log(X2) 0.45 0.02 18.28 0.00
log(X3) -0.37 0.06 -5.86 0.00
Standard errors: OLS
jtools::summ(EQ1, confint = TRUE, digits = 3, vifs = TRUE)
Observations 23
Dependent variable log(Y)
Type OLS linear regression
F(2,20) 491.868
0.980
Adj. R² 0.978
Est. 2.5% 97.5% t val. p VIF
(Intercept) 2.033 1.790 2.275 17.497 0.000 NA
log(X2) 0.452 0.400 0.503 18.284 0.000 5.649
log(X3) -0.372 -0.505 -0.240 -5.865 0.000 5.649
Standard errors: OLS

Para auxiliar na escolha do melhor modelo, faremos o cálculo dos critérios de informação de Akaike (AIC) e Schwarz ou Bayesiano (BIC) e atribuiremos esses critérios ao objeto de cada regressão.

EQ1$AIC <- AIC(EQ1)
EQ1$BIC <- BIC(EQ1)
EQ2$AIC <- AIC(EQ2)
EQ2$BIC <- BIC(EQ2)
EQ3$AIC <- AIC(EQ3)
EQ3$BIC <- BIC(EQ3)
EQ4$AIC <- AIC(EQ4)
EQ4$BIC <- BIC(EQ4)
EQ5$AIC <- AIC(EQ5)
EQ5$BIC <- BIC(EQ5)

Vamos utilizar o pacote stargazer para organizar as saídas de resultados. Criando uma tabela com as várias saídas de modelos, com o pacote stargazer tem-se:


===================================================================
                                  Dependent variable:              
                    -----------------------------------------------
                                        log(Y)                     
                          (1)             (2)             (3)      
-------------------------------------------------------------------
log(X2)                0.452***        0.406***        0.441***    
                        (0.025)         (0.045)         (0.052)    
                      t = 18.284       t = 9.063       t = 8.411   
                       p = 0.000      p = 0.00000     p = 0.00000  
log(X3)                -0.372***       -0.439***       -0.381***   
                        (0.063)         (0.083)         (0.076)    
                      t = -5.865      t = -5.266      t = -4.997   
                      p = 0.00001     p = 0.00005     p = 0.0001   
log(X4)                                  0.107                     
                                        (0.088)                    
                                       t = 1.214                   
                                       p = 0.240                   
log(X5)                                                  0.021     
                                                        (0.092)    
                                                       t = 0.232   
                                                       p = 0.819   
Constant               2.033***        2.125***        2.039***    
                        (0.116)         (0.138)         (0.122)    
                      t = 17.497      t = 15.415      t = 16.672   
                       p = 0.000       p = 0.000       p = 0.000   
-------------------------------------------------------------------
Observations              23              23              23       
R2                       0.980           0.982           0.980     
Adjusted R2              0.978           0.979           0.977     
Residual Std. Error 0.028 (df = 20) 0.027 (df = 19) 0.028 (df = 19)
Akaike Inf. Crit.       -94.777         -94.496         -92.843    
Bayesian Inf. Crit.     -90.235         -88.819         -87.165    
===================================================================
Note:                                   *p<0.1; **p<0.05; ***p<0.01

Agora para as equações 4 e 5:


===================================================
                          Dependent variable:      
                    -------------------------------
                                log(Y)             
                          (4)             (5)      
                          (1)             (2)      
---------------------------------------------------
log(X2)                0.343***        0.481***    
                        (0.083)         (0.068)    
                       t = 4.114       t = 7.058   
                       p = 0.001      p = 0.00001  
log(X3)                -0.505***       -0.351***   
                        (0.111)         (0.079)    
                      t = -4.550      t = -4.416   
                      p = 0.0003      p = 0.0003   
log(X4)                  0.149                     
                        (0.100)                    
                       t = 1.490                   
                       p = 0.154                   
log(X5)                  0.091                     
                        (0.101)                    
                       t = 0.905                   
                       p = 0.378                   
log(X6)                                 -0.061     
                                        (0.130)    
                                      t = -0.470   
                                       p = 0.644   
Constant               2.190***        2.030***    
                        (0.156)         (0.119)    
                      t = 14.063      t = 17.103   
                       p = 0.000       p = 0.000   
---------------------------------------------------
Observations              23              23       
R2                       0.982           0.980     
Adjusted R2              0.978           0.977     
Residual Std. Error 0.028 (df = 18) 0.028 (df = 19)
Akaike Inf. Crit.       -93.519         -93.043    
Bayesian Inf. Crit.     -86.706         -87.365    
===================================================
Note:                   *p<0.1; **p<0.05; ***p<0.01

Vou usar o pacote effects para ver os efeitos de cada uma:

library(effects)
# usando o pacote effects
alleff1 <- allEffects(EQ1)
plot(alleff1)

summary(alleff1)
 model: log(Y) ~ log(X2) + log(X3)

 X2 effect
X2
     400      920     1400     2000     2500 
3.297259 3.673340 3.862916 4.023965 4.124720 

 Lower 95 Percent Confidence Limits
X2
     400      920     1400     2000     2500 
3.251891 3.661155 3.838802 3.982924 4.072590 

 Upper 95 Percent Confidence Limits
X2
     400      920     1400     2000     2500 
3.342627 3.685526 3.887030 4.065005 4.176850 

 X3 effect
X3
      37       46       54       62       70 
3.823398 3.742359 3.682677 3.631256 3.586084 

 Lower 95 Percent Confidence Limits
X3
      37       46       54       62       70 
3.782751 3.726404 3.665715 3.599022 3.538639 

 Upper 95 Percent Confidence Limits
X3
      37       46       54       62       70 
3.864045 3.758313 3.699639 3.663490 3.633529 
alleff2 <- allEffects(EQ2)
plot(alleff2)

summary(alleff2)
 model: log(Y) ~ log(X2) + log(X3) + log(X4)

 X2 effect
X2
     400      920     1400     2000     2500 
3.339242 3.677340 3.847769 3.992552 4.083131 

 Lower 95 Percent Confidence Limits
X2
     400      920     1400     2000     2500 
3.254028 3.663427 3.812362 3.924813 3.994746 

 Upper 95 Percent Confidence Limits
X2
     400      920     1400     2000     2500 
3.424455 3.691252 3.883175 4.060290 4.171516 

 X3 effect
X3
      37       46       54       62       70 
3.839355 3.743813 3.673450 3.612827 3.559570 

 Lower 95 Percent Confidence Limits
X3
      37       46       54       62       70 
3.790555 3.727794 3.650301 3.567760 3.493977 

 Upper 95 Percent Confidence Limits
X3
      37       46       54       62       70 
3.888156 3.759832 3.696600 3.657894 3.625164 

 X4 effect
X4
      51       80      110      140      170 
3.664125 3.712141 3.746106 3.771827 3.792535 

 Lower 95 Percent Confidence Limits
X4
      51       80      110      140      170 
3.555717 3.684040 3.709927 3.692684 3.678039 

 Upper 95 Percent Confidence Limits
X4
      51       80      110      140      170 
3.772532 3.740242 3.782285 3.850971 3.907032 
alleff3 <- allEffects(EQ3)
plot(alleff3)

summary(alleff3)
 model: log(Y) ~ log(X2) + log(X3) + log(X5)

 X2 effect
X2
     400      920     1400     2000     2500 
3.307035 3.674237 3.859337 4.016583 4.114960 

 Lower 95 Percent Confidence Limits
X2
     400      920     1400     2000     2500 
3.207338 3.659328 3.818654 3.937804 4.011952 

 Upper 95 Percent Confidence Limits
X2
     400      920     1400     2000     2500 
3.406733 3.689147 3.900020 4.095362 4.217968 

 X3 effect
X3
      37       46       54       62       70 
3.825455 3.742394 3.681223 3.628519 3.582220 

 Lower 95 Percent Confidence Limits
X3
      37       46       54       62       70 
3.779741 3.725990 3.659410 3.587206 3.522286 

 Upper 95 Percent Confidence Limits
X3
      37       46       54       62       70 
3.871170 3.758798 3.703036 3.669831 3.642153 

 X5 effect
X5
      77      120      160      190      230 
3.715937 3.725417 3.731564 3.735236 3.739318 

 Lower 95 Percent Confidence Limits
X5
      77      120      160      190      230 
3.619310 3.708387 3.684376 3.655786 3.623449 

 Upper 95 Percent Confidence Limits
X5
      77      120      160      190      230 
3.812565 3.742447 3.778752 3.814685 3.855186 
alleff4 <- allEffects(EQ4)
plot(alleff4)

summary(alleff4)
 model: log(Y) ~ log(X2) + log(X3) + log(X4) + log(X5)

 X2 effect
X2
     400      920     1400     2000     2500 
3.397418 3.682735 3.826558 3.948739 4.025178 

 Lower 95 Percent Confidence Limits
X2
     400      920     1400     2000     2500 
3.237281 3.663922 3.765714 3.826174 3.863735 

 Upper 95 Percent Confidence Limits
X2
     400      920     1400     2000     2500 
3.557555 3.701549 3.887403 4.071305 4.186622 

 X3 effect
X3
      37       46       54       62       70 
3.854395 3.744534 3.663626 3.593916 3.532679 

 Lower 95 Percent Confidence Limits
X3
      37       46       54       62       70 
3.794039 3.728290 3.630979 3.530709 3.441695 

 Upper 95 Percent Confidence Limits
X3
      37       46       54       62       70 
3.914751 3.760777 3.696273 3.657124 3.623662 

 X4 effect
X4
      51       80      110      140      170 
3.638074 3.704949 3.752254 3.788078 3.816919 

 Lower 95 Percent Confidence Limits
X4
      51       80      110      140      170 
3.513109 3.672050 3.713070 3.699780 3.688298 

 Upper 95 Percent Confidence Limits
X4
      51       80      110      140      170 
3.763038 3.737848 3.791439 3.876375 3.945540 

 X5 effect
X5
      77      120      160      190      230 
3.679379 3.719801 3.746010 3.761667 3.779073 

 Lower 95 Percent Confidence Limits
X5
      77      120      160      190      230 
3.572163 3.701437 3.695783 3.675852 3.653172 

 Upper 95 Percent Confidence Limits
X5
      77      120      160      190      230 
3.786596 3.738165 3.796238 3.847482 3.904974 
alleff5 <- allEffects(EQ5)
plot(alleff5)

summary(alleff5)
 model: log(Y) ~ log(X2) + log(X3) + +log(X6)

 X2 effect
X2
     400      920     1400     2000     2500 
3.270462 3.671329 3.873399 4.045062 4.152458 

 Lower 95 Percent Confidence Limits
X2
     400      920     1400     2000     2500 
3.142326 3.655971 3.820561 3.942083 4.017818 

 Upper 95 Percent Confidence Limits
X2
     400      920     1400     2000     2500 
3.398597 3.686688 3.926238 4.148041 4.287098 

 X3 effect
X3
      37       46       54       62       70 
3.819278 3.742938 3.686717 3.638278 3.595725 

 Lower 95 Percent Confidence Limits
X3
      37       46       54       62       70 
3.773803 3.726405 3.661706 3.592805 3.530884 

 Upper 95 Percent Confidence Limits
X3
      37       46       54       62       70 
3.864753 3.759470 3.711729 3.683751 3.660567 

 X6 effect
X6
      66       97      130      160      190 
3.758024 3.734522 3.716650 3.703976 3.693488 

 Lower 95 Percent Confidence Limits
X6
      66       97      130      160      190 
3.617107 3.696497 3.670486 3.602460 3.545513 

 Upper 95 Percent Confidence Limits
X6
      66       97      130      160      190 
3.898942 3.772548 3.762814 3.805493 3.841462 

2.2 Correlação

A análise de correlação permitirá ter uma ideia inicial de possível multicolinearidade:

correlacao <- cor(dados)
correlacao
          YEAR         Y        X2        X3        X4        X5        X6
YEAR 1.0000000 0.9782505 0.9391653 0.8826798 0.9471494 0.9233583 0.9534411
Y    0.9782505 1.0000000 0.9471708 0.8399579 0.9123919 0.9353554 0.9374130
X2   0.9391653 0.9471708 1.0000000 0.9316808 0.9571312 0.9858775 0.9827571
X3   0.8826798 0.8399579 0.9316808 1.0000000 0.9701116 0.9284689 0.9445289
X4   0.9471494 0.9123919 0.9571312 0.9701116 1.0000000 0.9405665 0.9729649
X5   0.9233583 0.9353554 0.9858775 0.9284689 0.9405665 1.0000000 0.9833488
X6   0.9534411 0.9374130 0.9827571 0.9445289 0.9729649 0.9833488 1.0000000

Ou ainda, posso usar o pacote corrplot para ter uma visualização mais “bonita”:

# install.packages('corrplot')
library(corrplot)
corel <- cor(dados)
corrplot(corel, method = "number")

2.3 Testes de restrição do modelo

Esses testes fazem uma estatística para avaliar um modelo restrito contra o modelo irrestrito:

# teste para restricao do modelo
library(foreign)
attach(dados)
# modelo irrestrito é o da EQ4 Unrestricted OLS regression:
res.ur <- lm(log(Y) ~ log(X2) + log(X3) + log(X4) + log(X5))

# modelo restrito para X4 e X5 serem nulos, equivalente ao EQ1 Restricted OLS
# regression:
res.r <- lm(log(Y) ~ log(X2) + log(X3))

# R2:
(r2.ur <- summary(res.ur)$r.squared)
[1] 0.9823133
(r2.r <- summary(res.r)$r.squared)
[1] 0.9800744
# F statistic para (n-k-1) no numerador e q restricoes no denominador:
(F <- (r2.ur - r2.r)/(1 - r2.ur) * (23 - 4 - 1)/2)
[1] 1.139245
# p value = 1-cdf of the appropriate F distribution:
1 - pf(F, 2, 18)
[1] 0.3420835
# refazendo com package car
res1.ur <- lm(log(Y) ~ log(X2) + log(X3) + log(X4) + log(X5))
# Load package 'car' (deve estar instalado em seu micro)
library(car)

# F test: APENAS ESPECIFICO AS QUE TERAO TESTE DE OMISSAO
myH0 <- c("log(X4)", "log(X5)")
linearHypothesis(res1.ur, myH0)

2.4 Escolhendo diferentes especificações funcionais

# especificação
EQloglog <- lm(log(Y) ~ log(X2) + log(X3))
EQlinlog <- lm(Y ~ log(X2) + log(X3))
EQloglin <- lm(log(Y) ~ X2 + X3)
EQtranslog <- lm(log(Y) ~ log(X2) + log(X3) + I(log(X2) * log(X3)) + I(0.5 * (log(X2)^2)) +
    I(0.5 * (log(X3)^2)))

# alternativa de extrair resultados
mod1 <- EQloglog
mod2 <- EQlinlog
mod3 <- EQloglin
mod4 <- EQtranslog
AIC <- rbind(AIC(mod1), AIC(mod2), AIC(mod3), AIC(mod4))
BIC <- rbind(BIC(mod1), BIC(mod2), BIC(mod3), BIC(mod4))
r2 <- rbind(summary(mod1)$r.squared, summary(mod2)$r.squared, summary(mod3)$r.squared,
    summary(mod4)$r.squared)
r2.adj <- rbind(summary(mod1)$adj.r.squared, summary(mod2)$adj.r.squared, summary(mod3)$adj.r.squared,
    summary(mod4)$adj.r.squared)
tab2 <- data.frame(cbind(r2, r2.adj, AIC, BIC))
row.names(tab2) <- c("log-log", "lin-log", "log-lin", "translog")
library(knitr)
NA
[1] NA

3 Referências

GUJARATI, Damodar N.; PORTER, Dawn C. Econometria básica. 5.ed. Porto Alegre: AMGH/Bookman/McGraw-Hill do Brasil, 2011. Número de chamada: 330.015195 G969e.5 (CBC) e recurso online ISBN 9788580550511 (Minha Biblioteca - UFMS).

LS0tDQp0aXRsZTogJ0Vjb25vbWV0cmlhOiBleGVyY8OtY2lvIDcuMTksIGRlbWFuZGEgcG9yIGZyYW5nb3MsIEd1amFyYXRpIGUgUG9ydGVyICgyMDExLA0KICBwLjIzNS0yMzYpJw0KYXV0aG9yOiAnQWRyaWFubyBNYXJjb3MgUm9kcmlndWVzIEZpZ3VlaXJlZG8sICplLW1haWw6IGFkcmlhbm8uZmlndWVpcmVkb0B1Zm1zLmJyKicNCmRhdGU6ICJgciBmb3JtYXQoU3lzLkRhdGUoKSwgJyVkICVCICVZJylgIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50Og0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgIHRoZW1lOiBkZWZhdWx0DQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgICB0b2M6IHllcw0KICAgIHRvY19mbG9hdDogeWVzDQogICAgZGZfcHJpbnQ6IHBhZ2VkDQogICAgZmlnX2NhcHRpb246IHllcw0KICBwZGZfZG9jdW1lbnQ6DQogICAgdG9jOiB5ZXMNCiAgd29yZF9kb2N1bWVudDoNCiAgICB0b2M6IHllcw0KbGlua2NvbG9yOiBibHVlDQphYnN0cmFjdDogVGhpcyBpcyBhbiB1bmRlcmdyYWQgc3R1ZGVudCBsZXZlbCBleGVyY2lzZSBmb3IgY2xhc3MgdXNlLiBXZSBhbmFseXNlIGRpZmZlcmVudA0KICBlcXVhdGlvbnMgZm9yIHRoZSBkZW1hbmQgZm9yIGNoaWNrZW5zLiBUaGUgZXhhbXBsZSBpcyBkcmF3IGZvbGxvd2luZyBHdWphcmF0aSBhbmQNCiAgUG9ydGVyICgyMDExLCBwLjIzNS0yMzYpLCBwb3J0dWd1ZXNlIGVkaXRpb24uDQpncmFwaGljczogeWVzDQotLS0NCg0KYGBge3Iga25pdHJfaW5pdCwgZWNobz1GQUxTRSwgY2FjaGU9RkFMU0V9DQpsaWJyYXJ5KGtuaXRyKQ0KbGlicmFyeShybWFya2Rvd24pDQpsaWJyYXJ5KHJtZGZvcm1hdHMpDQoNCiMjIEdsb2JhbCBvcHRpb25zDQpvcHRpb25zKG1heC5wcmludD0iMTAwIikNCm9wdHNfY2h1bmskc2V0KGVjaG89VFJVRSwNCgkgICAgICAgICAgICAgY2FjaGU9VFJVRSwNCiAgICAgICAgICAgICAgIHByb21wdD1GQUxTRSwNCiAgICAgICAgICAgICAgIHRpZHk9VFJVRSwNCiAgICAgICAgICAgICAgIGNvbW1lbnQ9TkEsDQogICAgICAgICAgICAgICBtZXNzYWdlPUZBTFNFLA0KICAgICAgICAgICAgICAgd2FybmluZz1GQUxTRSkNCm9wdHNfa25pdCRzZXQod2lkdGg9MTAwKQ0KYGBgDQoNCg0KTGljZW7Dp2Egey0jTGljZW7Dp2F9DQo9PT09PT09PT09PT09PT09PT09DQoNClRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQ3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbi1TaGFyZUFsaWtlIDQuMCBJbnRlcm5hdGlvbmFsIExpY2Vuc2UuIFRvIHZpZXcgYSBjb3B5IG9mIHRoaXMgbGljZW5zZSwgdmlzaXQgPGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LXNhLzQuMC8+IG9yIHNlbmQgYSBsZXR0ZXIgdG8gQ3JlYXRpdmUgQ29tbW9ucywgUE8gQm94IDE4NjYsIE1vdW50YWluIFZpZXcsIENBIDk0MDQyLCBVU0EuDQoNCiFbTGljZW5zZTogQ0MgQlktU0EgNC4wXShodHRwczovL21pcnJvcnMuY3JlYXRpdmVjb21tb25zLm9yZy9wcmVzc2tpdC9idXR0b25zLzg4eDMxL3BuZy9ieS1zYS5wbmcpeyB3aWR0aD0yNSUgfQ0KDQpDaXRhw6fDo28gey0jQ2l0YcOnw6NvfQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KU3VnZXN0w6NvIGRlIGNpdGHDp8OjbzoNCkZJR1VFSVJFRE8sIEFkcmlhbm8gTWFyY29zIFJvZHJpZ3Vlcy4gRWNvbm9tZXRyaWE6IGV4ZXJjw61jaW8gNy4xOSwgZGVtYW5kYSBwb3IgZnJhbmdvcywgR3VqYXJhdGkgZSBQb3J0ZXIgKDIwMTEsIHAuMjM1LTIzNikuIENhbXBvIEdyYW5kZS1NUyxCcmFzaWw6IFJTdHVkaW8vUnB1YnMsIDIwMTggKGF0dWFsaXphZG8gZW0gMjAyMCkuIERpc3BvbsOtdmVsIGVtIDxodHRwOi8vcnB1YnMuY29tL2Ftcm9maS9leGVyY2ljaW9fZ3VqYXJhdGlfN18xOT4uIA0KDQojIFByaW1laXJvcyBwYXNzb3MNCg0KT3MgcHJpbWVpcm9zIHBhc3NvcyBzw6NvIGNyaWFyIG91IGFicmlyIHVtIGRpcmV0w7NyaW8gZGUgdHJhYmFsaG8uIFNlIG9wdGFyIHBvciBjcmlhciB1bSBub3ZvIHByb2pldG8sIGhhdmVyw6EgYSBwb3NzaWJpbGlkYWRlIGRlIGNyaWFyIGVtIHVtYSBwYXN0YSB2YXppYS4gRW0gc2VndWlkYSwgc3VnZXJlLXNlIHF1ZSBjb2xvcXVlIG9zIGRhZG9zIG5lc3RhIHBhc3RhLCBzZSBwb3Nzw612ZWwgZW0gdW0gYXJxdWl2byBNUyBFeGNlbCBlIGNoYW1lIGEgcGxhbmlsaGEgZGUgJ2RhZG9zJy5OZXN0ZSBjYXNvLCBhIHBsYW5pbGhhIGNoYW1hLXNlIGBndWphcmF0aSA1ZWQgcDIzNiBmcmFuZ29zIHRhYmVsYTdfOS54bHN4YC4NCg0KPiA3LjE5LiBEZW1hbmRhIHBvciBmcmFuZ29zIG5vcyBFc3RhZG9zIFVuaWRvcywgMTk2MC0xOTgyLiBQYXJhIGVzdHVkYXIgbyBjb25zdW1vIHBlciBjYXBpdGEgZGUgZnJhbmdvIG5vcyBFc3RhZG9zIFVuaWRvcywgdXNlIG9zIGRhZG9zIGRhIFRhYmVsYSA3LjksIGVtIHF1ZSANClkgPSBjb25zdW1vIHBlciBjYXBpdGEgZGUgZnJhbmdvIGVtIGxpYnJhcyAocGVzbykNClgyPSByZW5kYSByZWFsIGRpc3BvbsOtdmVsIHBlciBjYXBpdGEsIGVtICQNClgzPSBwcmXDp28gcmVhbCBkbyBmcmFuZ28gbm8gdmFyZWpvLCBlbSBjZW50YXZvcyBkZSBkw7NsYXIgcG9yIGxpYnJhIChwZXNvKSDCog0KWDQ9IHByZcOnbyByZWFsIGRhIGNhcm5lIHN1w61uYSBubyB2YXJlam8sIGVtIGNlbnRhdm9zIGRlIGTDs2xhciBwb3IgbGlicmEgKHBlc28pIMKiDQpYNT0gcHJlw6dvIHJlYWwgZGEgY2FybmUgYm92aW5hIG5vIHZhcmVqbywgZW0gY2VudGF2b3MgZGUgZMOzbGFyIHBvciBsaWJyYSAocGVzbykgwqINClg2PSBwcmXDp28gIHJlYWwgIGRvcyAgc3Vic3RpdHV0b3MgIGRhICBjYXJuZSAgZGUgIGZyYW5nbywgIGVtICBjZW50YXZvcyAgZGUgIGTDs2xhciAgcG9yICBsaWJyYSAocGVzbyksIHF1ZSDDqSB1bWEgbcOpZGlhIHBvbmRlcmFkYSBkb3MgcHJlw6dvcyByZWFpcyBkYXMgY2FybmVzIHN1w61uYSBlIGJvdmluYSwgdXNhbmRvIGNvbW8gcGVzb3MgbyBjb25zdW1vIHJlbGF0aXZvIGRlIGNhZGEgdW1hIGRlc3NhcyBjYXJuZXMgZW0gcmVsYcOnw6NvIGFvIGNvbnN1bW8gdG90YWwgZGVsYXMuDQpBZ29yYSwgY29uc2lkZXJlIGFzIHNlZ3VpbnRlcyBmdW7Dp8O1ZXMgZGUgZGVtYW5kYToNCg0KKDEpICAgXFsgbG57WV90fSA9IFxhbHBoYSBfMSArIFxhbHBoYV8yIFhfezJ0fSArIFxhbHBoYSBfMyBYX3szdH0gKyB1X3QgXF0NCigyKSAgIFxbIGxue1lfdH0gPSBcZ2FtbWEgXzEgKyBcZ2FtbWEgXzIgWF97MnR9ICsgXGdhbW1hIF8zIFhfezN0fSArIFxnYW1tYSBfNCBYX3s0dH0gKyB1X3QgXF0NCigzKSAgIFxbIGxue1lfdH0gPSBcbGFtYmRhIF8xICsgXGxhbWJkYSBfMiBYX3sydH0gKyBcbGFtYmRhIF8zIFhfezN0fSArIFxsYW1iZGEgXzQgWF97NXR9ICsgdV90IFxdDQooNCkgICBcWyBsbntZX3R9ID0gXHRoZXRhIF8xICsgXHRoZXRhIF8yIFhfezJ0fSArIFx0aGV0YSBfMyBYX3szdH0gKyBcdGhldGEgXzQgWF97NHR9ICsgXHRoZXRhIF81IFhfezV0fSArIHVfdCBcXQ0KKDUpICAgXFsgbG57WV90fSA9IFxiZXRhIF8xICsgXGJldGEgXzIgWF97MnR9ICsgXGJldGEgXzMgWF97M3R9ICsgXGJldGEgXzQgWF97NnR9ICsgdV90IFxdDQoNCkNoYW1hbmRvIG9zIGRhZG9zIGRlIGBndWphcmF0aSA1ZWQgcDIzNiBmcmFuZ29zIHRhYmVsYTdfOS54bHN4YDoNCg0KYGBge3IsIGVjaG89RkFMU0UsIGV2YWw9RkFMU0V9DQojIGluY2x1ZGUgdGhpcyBjb2RlIGNodW5rIGFzLWlzIHRvIHNldCBvcHRpb25zDQprbml0cjo6b3B0c19jaHVuayRzZXQoY29tbWVudD1OQSwgcHJvbXB0PVRSVUUsIG91dC53aWR0aD03NTAsIGZpZy5oZWlnaHQ9OCwgZmlnLndpZHRoPTgpDQpgYGANCg0KYGBge3IsIGV2YWw9RkFMU0V9DQpsaWJyYXJ5KHJlYWR4bCk7IGxpYnJhcnkoZm9yZWlnbikNCmRhZG9zIDwtIHJlYWRfZXhjZWwoImd1amFyYXRpIDVlZCBwMjM2IGZyYW5nb3MgdGFiZWxhN185Lnhsc3giLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoZWV0ID0gImRhZG9zIikNCiNZCVBlciBDYXBpdGEgQ29uc3VtcHRpb24gb2YgQ2hpY2tlbnMsIFBvdW5kcwkJCQkJCQ0KI1gyCVJlYWwgRGlzcG9zYWJsZSBJbmNvbWUgUGVyIENhcGl0YSwgJAkJCQkJCQ0KI1gzCVJlYWwgUmV0YWlsIFByaWNlIG9mIENoaWNrZW4gUGVyIFBvdW5kLCBDZW50cwkJCQkJCQ0KI1g0CVJlYWwgUmV0YWlsIFByaWNlIG9mIFBvcmsgUGVyIFBvdW5kLCBDZW50cwkJCQkJCQ0KI1g1CVJlYWwgUmV0YWlsIFByaWNlIG9mIEJlZWYgUGVyIFBvdW5kLCBDZW50cwkJCQkJCQ0KI1g2CUNvbXBvc2l0ZSBSZWFsIFByaWNlIG9mIENoaWNrZW4gU3Vic3RpdHV0ZXMgUGVyIFBvdW5kLCBDZW50cwkJCQkJCQ0KDQpgYGANCg0KQSBvcMOnw6NvIGRvIGRwdXQoKSBwb2RlIHNlciBvYnRpZGEgYWJhaXhvLg0KDQpgYGB7cn0NCmRhZG9zPC0NCnN0cnVjdHVyZShsaXN0KFlFQVIgPSBjKDE5NjAsIDE5NjEsIDE5NjIsIDE5NjMsIDE5NjQsIDE5NjUsIDE5NjYsIA0KMTk2NywgMTk2OCwgMTk2OSwgMTk3MCwgMTk3MSwgMTk3MiwgMTk3MywgMTk3NCwgMTk3NSwgMTk3NiwgMTk3NywgDQoxOTc4LCAxOTc5LCAxOTgwLCAxOTgxLCAxOTgyKSwgWSA9IGMoMjcuOCwgMjkuOSwgMjkuOCwgMzAuOCwgDQozMS4yLCAzMy4zLCAzNS42LCAzNi40LCAzNi43LCAzOC40LCA0MC40LCA0MC4zLCA0MS44LCA0MC40LCA0MC43LCANCjQwLjEsIDQyLjcsIDQ0LjEsIDQ2LjcsIDUwLjYsIDUwLjEsIDUxLjcsIDUyLjkpLCBYMiA9IGMoMzk3LjUsIA0KNDEzLjMsIDQzOS4yLCA0NTkuNywgNDkyLjksIDUyOC42LCA1NjAuMywgNjI0LjYsIDY2Ni40LCA3MTcuOCwgDQo3NjguMiwgODQzLjMsIDkxMS42LCA5MzEuMSwgMTAyMS41LCAxMTY1LjksIDEzNDkuNiwgMTQ0OS40LCAxNTc1LjUsIA0KMTc1OS4xLCAxOTk0LjIsIDIyNTguMSwgMjQ3OC43KSwgWDMgPSBjKDQyLjIsIDM4LjEsIDQwLjMsIDM5LjUsIA0KMzcuMywgMzguMSwgMzkuMywgMzcuOCwgMzguNCwgNDAuMSwgMzguNiwgMzkuOCwgMzkuNywgNTIuMSwgNDguOSwgDQo1OC4zLCA1Ny45LCA1Ni41LCA2My43LCA2MS42LCA1OC45LCA2Ni40LCA3MC40KSwgWDQgPSBjKDUwLjcsIA0KNTIsIDU0LCA1NS4zLCA1NC43LCA2My43LCA2OS44LCA2NS45LCA2NC41LCA3MCwgNzMuMiwgNjcuOCwgNzkuMSwgDQo5NS40LCA5NC4yLCAxMjMuNSwgMTI5LjksIDExNy42LCAxMzAuOSwgMTI5LjgsIDEyOCwgMTQxLCAxNjguMg0KKSwgWDUgPSBjKDc4LjMsIDc5LjIsIDc5LjIsIDc5LjIsIDc3LjQsIDgwLjIsIDgwLjQsIDgzLjksIDg1LjUsIA0KOTMuNywgMTA2LjEsIDEwNC44LCAxMTQsIDEyNC4xLCAxMjcuNiwgMTQyLjksIDE0My42LCAxMzkuMiwgMTY1LjUsIA0KMjAzLjMsIDIxOS42LCAyMjEuNiwgMjMyLjYpLCBYNiA9IGMoNjUuOCwgNjYuOSwgNjcuOCwgNjkuNiwgNjguNywgDQo3My42LCA3Ni4zLCA3Ny4yLCA3OC4xLCA4NC43LCA5My4zLCA4OS43LCAxMDAuNywgMTEzLjUsIDExNS4zLCANCjEzNi43LCAxMzkuMiwgMTMyLCAxMzIuMSwgMTU0LjQsIDE3NC45LCAxODAuOCwgMTg5LjQpKSwgcm93Lm5hbWVzID0gYyhOQSwgDQotMjNMKSwgY2xhc3MgPSBjKCJ0YmxfZGYiLCAidGJsIiwgImRhdGEuZnJhbWUiKSkNCg0KYXR0YWNoKGRhZG9zKQ0KYGBgDQoNClZhbW9zIHZlciBjb21vIGVzdMOhIGEgdGFiZWxhIGltcG9ydGFkYToNCg0KYGBge3J9DQpsaWJyYXJ5KGtuaXRyKQ0Ka2FibGUoZGFkb3NbLDE6N10sY2FwdGlvbj0iRGFkb3MgZGEgdGFiZWxhIDctOSIpDQoNCmBgYA0KDQpFc3RpbWFuZG8gbyBtb2RlbG8gbGluZWFyIGRlIHJlZ3Jlc3NhbyBtdWx0aXBsYSBmYXplbmRvIGFzIHJlZ3Jlc3NvZXMgZGUgWSBjb250cmEgYXMgdmFyaWF2ZWlzIFgyLCBYMywgWDQsIFg1IGUgWDYgY29tIGxvZ3MuIE9ic2VydmUgcXVlIHPDo28gY29sb2NhZGFzIHF1YXRybyBwb3Nzw612ZWlzIGVzcGVjaWZpY2HDp8O1ZXMsIGNvbSBhcyB2YXJpw6F2ZWlzIGVtIGxvZ2FyaXRtb3MgZSBhIHZhcmnDoXZlbCBZIHNlbmRvIGRlcGVuZGVudGUgZW0gdG9kYXMuIEFzIGFsdGVyYcOnw7VlcyBzw6NvIHBhcmEgYXMgdmFyacOhdmVpcyBYMiBhdMOpIFg1LiBOZXN0ZSBleGVtcGxvLCBuw6NvIHNlIGVzdMOhIHByZW9jdXBhZG8gY29tIGEgaW50ZXJwcmV0YcOnw6NvIGVjb27DtG1pY2EsIHBhcmEgZmlucyBkbyBleGVtcGxvIGUsIHBvcnRhbnRvLCBhcGVuYXMgdHJhdGEtc2UgZGFzIHZhcmnDoXZlaXMgY29tbyBYLg0KDQpPIGNvbWFuZG8gY2hhbWEgYSBmdW7Dp8OjbyBgcmVhZF9leGNlbGAgYXJtYXplbmFuZG8gc2V1IHJlc3VsdGFkbyBlbSB1bSBgZGF0YS5mcmFtZWAsIGRlIG5vbWUgYGRhZG9zYC4gTmEgc2VxdcOqbmNpYSwgYSBmdW7Dp8OjbyBgVmlld2AgZXhpYmUgb3MgZGFkb3MgZSBvIGBhdHRhY2hgIGFuZXhhIG9zIHLDs3R1bG9zIMOgcyB2YXJpw6F2ZWlzLCBkZSBtb2RvIGEgcG9kZXIgdXRpbGl6YXIgYXBlbmFzIG8gbm9tZSBkZSBjYWRhIHZhcmnDoXZlbCBwYXJhIGV4ZWN1dGFyIG9zIHByb2NlZGltZW50b3MuDQoNCiMgUmVzdWx0YWRvcyANCg0KIyMgRXN0aW1hw6fDo28NCg0KRmF6ZW5kbyBhcyByZWdyZXNzb2VzIGRlIFkgY29udHJhIGFzIHZhcmlhdmVpcyBYMiwgWDMsIFg0LCBYNSBlIFg2IGNvbSBsb2dzLg0KQWdvcmEgZXN0aW1hbS1zZSBhcyByZWdyZXNzw7VlcyBjb20gdXNvIGRhIGZ1bsOnw6NvIGBsbWAgZSBjb20gb3BlcmFkb3JlcyBkZSBsb2dhcml0bW9zLg0KQXMgZXF1YcOnw7VlcyB0b21hbSBhIGZvcm1hOg0KDQpgYGB7ciBlc3RpbWFjYW99DQphdHRhY2goZGFkb3MpDQpFUTE8LWxtKGxvZyhZKX5sb2coWDIpK2xvZyhYMykpDQpFUTI8LWxtKGxvZyhZKX5sb2coWDIpK2xvZyhYMykrbG9nKFg0KSkNCkVRMzwtbG0obG9nKFkpfmxvZyhYMikrbG9nKFgzKSsgICAgICAgIGxvZyhYNSkpDQpFUTQ8LWxtKGxvZyhZKX5sb2coWDIpK2xvZyhYMykrbG9nKFg0KStsb2coWDUpKQ0KRVE1PC1sbShsb2coWSl+bG9nKFgyKStsb2coWDMpKyAgICAgICAgICAgICAgICArbG9nKFg2KSkNCmBgYA0KDQpTZSBhIHNhw61kYSBmb3NzZSBhcGVuYXMgcGVsbyBjb21hbmRvICpzdW1tYXJ5Kiwgc2FpcmlhIGRhIGZvcm1hOg0KICAgDQpgYGB7cn0NCnN1bW1hcnkoRVExKQ0KY29uZmludChFUTEpDQojIG9wY2FvIGp0b29scw0KbGlicmFyeShqdG9vbHMpDQpqdG9vbHM6OnN1bW0oRVExKQ0KanRvb2xzOjpzdW1tKEVRMSxjb25maW50ID0gVFJVRSwgZGlnaXRzID0gMyx2aWZzPVRSVUUpDQpgYGANCg0KDQpQYXJhIGF1eGlsaWFyIG5hIGVzY29saGEgZG8gbWVsaG9yIG1vZGVsbywgZmFyZW1vcyBvIGPDoWxjdWxvIGRvcyBjcml0w6lyaW9zIGRlIGluZm9ybWHDp8OjbyBkZSBBa2Fpa2UgKEFJQykgZSBTY2h3YXJ6IG91IEJheWVzaWFubyAoQklDKSBlIGF0cmlidWlyZW1vcyBlc3NlcyBjcml0w6lyaW9zIGFvIG9iamV0byBkZSBjYWRhIHJlZ3Jlc3PDo28uDQoNCmBgYHtyfQ0KRVExJEFJQzwtQUlDKEVRMSkNCkVRMSRCSUM8LUJJQyhFUTEpDQpgYGANCg0KYGBge3J9DQpFUTIkQUlDPC1BSUMoRVEyKQ0KRVEyJEJJQzwtQklDKEVRMikNCmBgYA0KDQpgYGB7cn0NCkVRMyRBSUM8LUFJQyhFUTMpDQpFUTMkQklDPC1CSUMoRVEzKQ0KYGBgDQoNCmBgYHtyfQ0KRVE0JEFJQzwtQUlDKEVRNCkNCkVRNCRCSUM8LUJJQyhFUTQpDQpgYGANCg0KYGBge3J9DQpFUTUkQUlDPC1BSUMoRVE1KQ0KRVE1JEJJQzwtQklDKEVRNSkNCmBgYA0KDQpWYW1vcyB1dGlsaXphciBvIHBhY290ZSAqc3RhcmdhemVyKiBwYXJhIG9yZ2FuaXphciBhcyBzYcOtZGFzIGRlIHJlc3VsdGFkb3MuIENyaWFuZG8gdW1hIHRhYmVsYSBjb20gYXMgdsOhcmlhcyBzYcOtZGFzIGRlIG1vZGVsb3MsIGNvbSBvIHBhY290ZSAqc3RhcmdhemVyKiB0ZW0tc2U6DQoNCmBgYHtyICwgZWNobz1GQUxTRX0NCg0KbGlicmFyeShzdGFyZ2F6ZXIpDQpyZXN1bHRhZG9zPC1zdGFyZ2F6ZXIoRVExLEVRMixFUTMsdHlwZT0idGV4dCIsc3R5bGU9KCJhbGwiKSxvbWl0LnN0YXQgPSAoImYiKSxyb3duYW1lcyA9IE5VTEwpDQoNCmBgYA0KDQpBZ29yYSBwYXJhIGFzIGVxdWHDp8O1ZXMgNCBlIDU6DQoNCmBgYHtyICwgZWNobz1GQUxTRX0NCg0KbGlicmFyeShzdGFyZ2F6ZXIpDQpyZXN1bHRhZG9zPC1zdGFyZ2F6ZXIoRVE0LEVRNSx0eXBlPSJ0ZXh0IixzdHlsZT0oImFsbCIpLA0KICAgICAgICAgICAgICAgICAgICAgIG9taXQuc3RhdCA9ICgiZiIpLHJvd25hbWVzID0gTlVMTCwNCiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4ubGFiZWxzID0gYygiKDQpIiwiKDUpIikpDQoNCmBgYA0KDQpWb3UgdXNhciBvIHBhY290ZSBgZWZmZWN0c2AgcGFyYSB2ZXIgb3MgZWZlaXRvcyBkZSBjYWRhIHVtYToNCg0KYGBge3J9DQpsaWJyYXJ5KGVmZmVjdHMpDQojIHVzYW5kbyBvIHBhY290ZSBlZmZlY3RzDQphbGxlZmYxIDwtIGFsbEVmZmVjdHMoRVExKQ0KcGxvdChhbGxlZmYxKQ0Kc3VtbWFyeShhbGxlZmYxKQ0KDQphbGxlZmYyIDwtIGFsbEVmZmVjdHMoRVEyKQ0KcGxvdChhbGxlZmYyKQ0Kc3VtbWFyeShhbGxlZmYyKQ0KDQphbGxlZmYzIDwtIGFsbEVmZmVjdHMoRVEzKQ0KcGxvdChhbGxlZmYzKQ0Kc3VtbWFyeShhbGxlZmYzKQ0KDQphbGxlZmY0IDwtIGFsbEVmZmVjdHMoRVE0KQ0KcGxvdChhbGxlZmY0KQ0Kc3VtbWFyeShhbGxlZmY0KQ0KDQphbGxlZmY1IDwtIGFsbEVmZmVjdHMoRVE1KQ0KcGxvdChhbGxlZmY1KQ0Kc3VtbWFyeShhbGxlZmY1KQ0KYGBgDQoNCiMjIENvcnJlbGHDp8Ojbw0KDQpBIGFuw6FsaXNlIGRlIGNvcnJlbGHDp8OjbyBwZXJtaXRpcsOhIHRlciB1bWEgaWRlaWEgaW5pY2lhbCBkZSBwb3Nzw612ZWwgbXVsdGljb2xpbmVhcmlkYWRlOg0KDQpgYGB7cn0NCmNvcnJlbGFjYW88LWNvcihkYWRvcykNCmNvcnJlbGFjYW8NCmBgYA0KDQpPdSBhaW5kYSwgcG9zc28gdXNhciBvIHBhY290ZSBgY29ycnBsb3RgIHBhcmEgdGVyIHVtYSB2aXN1YWxpemHDp8OjbyBtYWlzICJib25pdGEiOg0KDQpgYGB7cn0NCiMgaW5zdGFsbC5wYWNrYWdlcygnY29ycnBsb3QnKQ0KbGlicmFyeShjb3JycGxvdCkNCmNvcmVsIDwtIGNvcihkYWRvcykNCmNvcnJwbG90KGNvcmVsLCBtZXRob2QgPSAibnVtYmVyIikNCmBgYA0KDQojIyBUZXN0ZXMgZGUgcmVzdHJpw6fDo28gZG8gbW9kZWxvDQoNCkVzc2VzIHRlc3RlcyBmYXplbSB1bWEgZXN0YXTDrXN0aWNhIHBhcmEgYXZhbGlhciB1bSBtb2RlbG8gcmVzdHJpdG8gY29udHJhIG8gbW9kZWxvIGlycmVzdHJpdG86DQoNCmBgYHtyfQ0KI3Rlc3RlIHBhcmEgcmVzdHJpY2FvIGRvIG1vZGVsbw0KbGlicmFyeShmb3JlaWduKQ0KYXR0YWNoKGRhZG9zKQ0KI21vZGVsbyBpcnJlc3RyaXRvIMOpIG8gZGEgRVE0DQojIFVucmVzdHJpY3RlZCBPTFMgcmVncmVzc2lvbjoNCnJlcy51ciA8LSBsbShsb2coWSl+bG9nKFgyKStsb2coWDMpK2xvZyhYNCkrbG9nKFg1KSkNCg0KI21vZGVsbyByZXN0cml0byBwYXJhIFg0IGUgWDUgc2VyZW0gbnVsb3MsIGVxdWl2YWxlbnRlIGFvIEVRMQ0KIyBSZXN0cmljdGVkIE9MUyByZWdyZXNzaW9uOg0KcmVzLnIgPC0gbG0obG9nKFkpfmxvZyhYMikrbG9nKFgzKSkNCg0KIyBSMjoNCiggcjIudXIgPC0gc3VtbWFyeShyZXMudXIpJHIuc3F1YXJlZCApDQooIHIyLnIgPC0gc3VtbWFyeShyZXMucikkci5zcXVhcmVkICkNCg0KIyBGIHN0YXRpc3RpYyBwYXJhIChuLWstMSkgbm8gbnVtZXJhZG9yIGUgcSByZXN0cmljb2VzIG5vIGRlbm9taW5hZG9yOg0KKCBGIDwtIChyMi51ci1yMi5yKSAvICgxLXIyLnVyKSAqICgyMy00LTEpLzIgKQ0KDQojIHAgdmFsdWUgPSAxLWNkZiBvZiB0aGUgYXBwcm9wcmlhdGUgRiBkaXN0cmlidXRpb246DQoxLXBmKEYsIDIsMTgpDQojcmVmYXplbmRvIGNvbSBwYWNrYWdlIGNhcg0KcmVzMS51cjwtIGxtKGxvZyhZKX5sb2coWDIpK2xvZyhYMykrbG9nKFg0KStsb2coWDUpKQ0KIyBMb2FkIHBhY2thZ2UgImNhciIgKGRldmUgZXN0YXIgaW5zdGFsYWRvIGVtIHNldSBtaWNybykNCmxpYnJhcnkoY2FyKQ0KDQojIEYgdGVzdDogQVBFTkFTIEVTUEVDSUZJQ08gQVMgUVVFIFRFUkFPIFRFU1RFIERFIE9NSVNTQU8NCm15SDAgPC0gYygibG9nKFg0KSIsImxvZyhYNSkiKQ0KbGluZWFySHlwb3RoZXNpcyhyZXMxLnVyLCBteUgwKQ0KYGBgDQoNCiMjIEVzY29saGVuZG8gZGlmZXJlbnRlcyBlc3BlY2lmaWNhw6fDtWVzIGZ1bmNpb25haXMNCg0KYGBge3J9DQojIGVzcGVjaWZpY2HDp8Ojbw0KRVFsb2dsb2c8LWxtKGxvZyhZKX5sb2coWDIpK2xvZyhYMykpDQpFUWxpbmxvZzwtbG0oWX5sb2coWDIpK2xvZyhYMykpDQpFUWxvZ2xpbjwtbG0obG9nKFkpflgyK1gzKQ0KRVF0cmFuc2xvZzwtbG0obG9nKFkpfmxvZyhYMikrbG9nKFgzKStJKGxvZyhYMikqbG9nKFgzKSkNCiAgICAgICAgICAgICAgICtJKDAuNSoobG9nKFgyKV4yKSkrSSgwLjUqKGxvZyhYMyleMikpKQ0KDQojIGFsdGVybmF0aXZhIGRlIGV4dHJhaXIgcmVzdWx0YWRvcw0KbW9kMTwtRVFsb2dsb2cNCm1vZDI8LUVRbGlubG9nDQptb2QzPC1FUWxvZ2xpbg0KbW9kNDwtRVF0cmFuc2xvZw0KQUlDPC1yYmluZChBSUMobW9kMSksQUlDKG1vZDIpLEFJQyhtb2QzKSxBSUMobW9kNCkpDQpCSUM8LXJiaW5kKEJJQyhtb2QxKSxCSUMobW9kMiksQklDKG1vZDMpLEJJQyhtb2Q0KSkNCnIyPC1yYmluZChzdW1tYXJ5KG1vZDEpJHIuc3F1YXJlZCxzdW1tYXJ5KG1vZDIpJHIuc3F1YXJlZCwNCiAgICAgICAgICBzdW1tYXJ5KG1vZDMpJHIuc3F1YXJlZCxzdW1tYXJ5KG1vZDQpJHIuc3F1YXJlZCkNCnIyLmFkajwtcmJpbmQoc3VtbWFyeShtb2QxKSRhZGouci5zcXVhcmVkLHN1bW1hcnkobW9kMikkYWRqLnIuc3F1YXJlZCwNCiAgICAgICAgICAgICAgc3VtbWFyeShtb2QzKSRhZGouci5zcXVhcmVkLHN1bW1hcnkobW9kNCkkYWRqLnIuc3F1YXJlZCkNCnRhYjI8LWRhdGEuZnJhbWUoY2JpbmQocjIscjIuYWRqLEFJQyxCSUMpKQ0Kcm93Lm5hbWVzKHRhYjIpPC1jKCJsb2ctbG9nIiwibGluLWxvZyIsImxvZy1saW4iLCJ0cmFuc2xvZyIpDQpsaWJyYXJ5KGtuaXRyKQ0Ka2FibGUodGFiMiwNCiAgICAgIGNhcHRpb24gPSAiQ29tcGFyYcOnw6NvIGRlIE1vZGVsb3MsICdHdWphcmF0aS1mcmFuZ29zJyIsIGRpZ2l0cyA9IDMsDQogICAgICBjb2wubmFtZXM9YygiUsKyIiwiUsKyQWoiLCJBSUMiLCJCSUMiKSkgIA0KYGBgDQoNClJlZmVyw6puY2lhcw0KPT09PT09PT09PT09PT09PQ0KDQpHVUpBUkFUSSwgRGFtb2RhciBOLjsgUE9SVEVSLCBEYXduIEMuIEVjb25vbWV0cmlhIGLDoXNpY2EuIDUuZWQuIFBvcnRvIEFsZWdyZTogQU1HSC9Cb29rbWFuL01jR3Jhdy1IaWxsIGRvIEJyYXNpbCwgMjAxMS4gTsO6bWVybyBkZSBjaGFtYWRhOiAzMzAuMDE1MTk1IEc5NjllLjUgKENCQykgZSByZWN1cnNvIG9ubGluZSBJU0JOIDk3ODg1ODA1NTA1MTEgKE1pbmhhIEJpYmxpb3RlY2EgLSBVRk1TKS4gDQoNCg==