
Actividad 1. Sesión 1. Modelo econometrico
Codigo sesión 2, 3 y 4. Analisis de Datos Panel
#Instalar paquetes y llamar linrerías
#install.packages("WDI")
library(WDI)
#install.packages("wbstats")
library(wbstats)
#install.packages("tidyverse")
library(ggplot2)
#install.packages("plm")
library(plm)
#obtener la información de 1 país
PIB_MEX <- wb_data(country= "MX", indicator = "NY.GDP.PCAP.CD",
start_date = 1900, end_date = 2025)
summary(PIB_MEX)
## iso2c iso3c country date
## Length:64 Length:64 Length:64 Min. :1960
## Class :character Class :character Class :character 1st Qu.:1976
## Mode :character Mode :character Mode :character Median :1992
## Mean :1992
## 3rd Qu.:2007
## Max. :2023
## NY.GDP.PCAP.CD unit obs_status footnote
## Min. : 355.1 Length:64 Length:64 Length:64
## 1st Qu.: 1427.8 Class :character Class :character Class :character
## Median : 4006.5 Mode :character Mode :character Mode :character
## Mean : 5097.1
## 3rd Qu.: 8905.4
## Max. :13790.0
## last_updated
## Min. :2025-01-28
## 1st Qu.:2025-01-28
## Median :2025-01-28
## Mean :2025-01-28
## 3rd Qu.:2025-01-28
## Max. :2025-01-28
ggplot(PIB_MEX, aes(x= date, y=NY.GDP.PCAP.CD)) +
geom_point() +
geom_line() +
labs(title="PIB per Capita en México (Current USD$)", x= "Año", y= "Valor")

#obtener la información de varios país
PIB_PANEL <- wb_data(country= c("MX", "US", "CA"), indicator = "NY.GDP.PCAP.CD",
start_date = 1900, end_date = 2025)
summary(PIB_PANEL)
## iso2c iso3c country date
## Length:192 Length:192 Length:192 Min. :1960
## Class :character Class :character Class :character 1st Qu.:1976
## Mode :character Mode :character Mode :character Median :1992
## Mean :1992
## 3rd Qu.:2007
## Max. :2023
## NY.GDP.PCAP.CD unit obs_status footnote
## Min. : 355.1 Length:192 Length:192 Length:192
## 1st Qu.: 4059.2 Class :character Class :character Class :character
## Median :10544.4 Mode :character Mode :character Mode :character
## Mean :19152.2
## 3rd Qu.:29010.1
## Max. :82769.4
## last_updated
## Min. :2025-01-28
## 1st Qu.:2025-01-28
## Median :2025-01-28
## Mean :2025-01-28
## 3rd Qu.:2025-01-28
## Max. :2025-01-28
ggplot(PIB_PANEL, aes(x= date, y=NY.GDP.PCAP.CD, color=iso3c)) +
geom_point() +
geom_line() +
labs(title="PIB per Capita en Norteamérica (Current USD$)", x= "Año", y= "Valor")

#obtener la información de varios indicadores en varios paises
PIB_VARIOS <- wb_data(country= c("MX", "US", "CA"), indicator = c("NY.GDP.PCAP.CD", "SP.DYN.LE00.IN"),
start_date = 1900, end_date = 2025)
summary(PIB_VARIOS)
## iso2c iso3c country date
## Length:192 Length:192 Length:192 Min. :1960
## Class :character Class :character Class :character 1st Qu.:1976
## Mode :character Mode :character Mode :character Median :1992
## Mean :1992
## 3rd Qu.:2007
## Max. :2023
##
## NY.GDP.PCAP.CD SP.DYN.LE00.IN
## Min. : 355.1 Min. :55.02
## 1st Qu.: 4059.2 1st Qu.:71.11
## Median :10544.4 Median :74.36
## Mean :19152.2 Mean :73.41
## 3rd Qu.:29010.1 3rd Qu.:77.49
## Max. :82769.4 Max. :82.22
## NA's :3
#CLASE 3
#Heterogeneidad
#Variación entre individuos
#install.packages("gplots")
library(gplots)
##
## Attaching package: 'gplots'
## The following object is masked from 'package:stats':
##
## lowess
plotmeans(NY.GDP.PCAP.CD ~ country, main = "Heterogenidad entre paises", xlab = "Pais" , ylab = "PIB per Capita", data= PIB_VARIOS)

#Interpretación:
#Alta heterogenidad: Si los puntos estan muy separados entre paises
#Baja heterogenidad: Si los puntos estan cerca uno de otos
#En este caso EUA y Canada tiene un PIB per capita mayor que México, mostrando alta heterogenidad entre paises
# Modelos de efectos fijos y aleatorios
#Paso 1, Convertir la base de datos a formato de panel
datos_panel <-pdata.frame(PIB_PANEL, index = c("country", "date"))
#Modelo de efectos fijos
modelo_efectos_fijos <- plm(NY.GDP.PCAP.CD ~ date, data=datos_panel, model= "within")
summary(modelo_efectos_fijos)
## Oneway (individual) effect Within Model
##
## Call:
## plm(formula = NY.GDP.PCAP.CD ~ date, data = datos_panel, model = "within")
##
## Balanced Panel: n = 3, T = 64, N = 192
##
## Residuals:
## Min. 1st Qu. Median 3rd Qu. Max.
## -22869.42 -3713.59 -740.79 4417.57 22788.54
##
## Coefficients:
## Estimate Std. Error t-value Pr(>|t|)
## date1961 19.689 7891.777 0.0025 0.9980133
## date1962 93.003 7891.777 0.0118 0.9906159
## date1963 182.117 7891.777 0.0231 0.9816255
## date1964 329.256 7891.777 0.0417 0.9667868
## date1965 493.812 7891.777 0.0626 0.9502057
## date1966 705.548 7891.777 0.0894 0.9289037
## date1967 836.074 7891.777 0.1059 0.9157965
## date1968 1051.287 7891.777 0.1332 0.8942375
## date1969 1278.661 7891.777 0.1620 0.8715461
## date1970 1483.079 7891.777 0.1879 0.8512361
## date1971 1757.600 7891.777 0.2227 0.8241196
## date1972 2139.145 7891.777 0.2711 0.7867884
## date1973 2652.616 7891.777 0.3361 0.7373364
## date1974 3306.205 7891.777 0.4189 0.6759711
## date1975 3736.686 7891.777 0.4735 0.6366822
## date1976 4425.604 7891.777 0.5608 0.5759388
## date1977 4698.806 7891.777 0.5954 0.5526405
## date1978 5234.634 7891.777 0.6633 0.5083487
## date1979 6060.354 7891.777 0.7679 0.4439640
## date1980 7072.576 7891.777 0.8962 0.3718573
## date1981 8188.133 7891.777 1.0376 0.3014655
## date1982 7987.390 7891.777 1.0121 0.3134224
## date1983 8523.654 7891.777 1.0801 0.2821751
## date1984 9312.706 7891.777 1.1801 0.2402027
## date1985 9796.257 7891.777 1.2413 0.2167918
## date1986 9909.818 7891.777 1.2557 0.2115431
## date1987 10895.002 7891.777 1.3806 0.1698612
## date1988 12362.836 7891.777 1.5665 0.1197288
## date1989 13585.668 7891.777 1.7215 0.0876150 .
## date1990 14316.347 7891.777 1.8141 0.0720442 .
## date1991 14759.335 7891.777 1.8702 0.0637741 .
## date1992 14990.000 7891.777 1.8994 0.0597918 .
## date1993 15667.517 7891.777 1.9853 0.0492832 *
## date1994 16091.651 7891.777 2.0390 0.0435376 *
## date1995 15978.167 7891.777 2.0247 0.0450159 *
## date1996 16773.055 7891.777 2.1254 0.0355067 *
## date1997 17769.387 7891.777 2.2516 0.0260772 *
## date1998 18030.354 7891.777 2.2847 0.0240026 *
## date1999 19236.904 7891.777 2.4376 0.0161811 *
## date2000 20835.037 7891.777 2.6401 0.0093360 **
## date2001 21096.198 7891.777 2.6732 0.0085083 **
## date2002 21538.969 7891.777 2.7293 0.0072554 **
## date2003 23202.118 7891.777 2.9400 0.0039054 **
## date2004 25366.654 7891.777 3.2143 0.0016609 **
## date2005 27852.977 7891.777 3.5294 0.0005823 ***
## date2006 30232.924 7891.777 3.8309 0.0002003 ***
## date2007 32408.252 7891.777 4.1066 7.172e-05 ***
## date2008 33394.731 7891.777 4.2316 4.431e-05 ***
## date2009 30291.171 7891.777 3.8383 0.0001950 ***
## date2010 33440.081 7891.777 4.2373 4.333e-05 ***
## date2011 35778.148 7891.777 4.5336 1.331e-05 ***
## date2012 36526.334 7891.777 4.6284 9.027e-06 ***
## date2013 37214.927 7891.777 4.7157 6.286e-06 ***
## date2014 37345.549 7891.777 4.7322 5.866e-06 ***
## date2015 35011.917 7891.777 4.4365 1.971e-05 ***
## date2016 34666.237 7891.777 4.3927 2.348e-05 ***
## date2017 36493.760 7891.777 4.6243 9.182e-06 ***
## date2018 38068.376 7891.777 4.8238 3.990e-06 ***
## date2019 38902.406 7891.777 4.9295 2.543e-06 ***
## date2020 37056.865 7891.777 4.6956 6.833e-06 ***
## date2021 42836.438 7891.777 5.4280 2.815e-07 ***
## date2022 46436.696 7891.777 5.8842 3.387e-08 ***
## date2023 48123.578 7891.777 6.0979 1.218e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 5.061e+10
## Residual Sum of Squares: 1.1771e+10
## R-Squared: 0.76742
## Adj. R-Squared: 0.64743
## F-statistic: 6.59909 on 63 and 126 DF, p-value: < 2.22e-16
#Modelo de efectos aleatorios
modelo_efectos_aleatorios <- plm(NY.GDP.PCAP.CD ~ date, data=datos_panel, model= "random")
summary(modelo_efectos_aleatorios)
## Oneway (individual) effect Random Effect Model
## (Swamy-Arora's transformation)
##
## Call:
## plm(formula = NY.GDP.PCAP.CD ~ date, data = datos_panel, model = "random")
##
## Balanced Panel: n = 3, T = 64, N = 192
##
## Effects:
## var std.dev share
## idiosyncratic 93420218 9665 0.375
## individual 155441504 12468 0.625
## theta: 0.9035
##
## Residuals:
## Min. 1st Qu. Median 3rd Qu. Max.
## -24225.08 -3320.91 -892.17 5059.72 23751.53
##
## Coefficients:
## Estimate Std. Error z-value Pr(>|z|)
## (Intercept) 1873.296 9107.904 0.2057 0.8370424
## date1961 19.689 7891.777 0.0025 0.9980093
## date1962 93.003 7891.777 0.0118 0.9905973
## date1963 182.117 7891.777 0.0231 0.9815890
## date1964 329.256 7891.777 0.0417 0.9667208
## date1965 493.812 7891.777 0.0626 0.9501065
## date1966 705.548 7891.777 0.0894 0.9287617
## date1967 836.074 7891.777 0.1059 0.9156280
## date1968 1051.287 7891.777 0.1332 0.8940250
## date1969 1278.661 7891.777 0.1620 0.8712866
## date1970 1483.079 7891.777 0.1879 0.8509338
## date1971 1757.600 7891.777 0.2227 0.8237590
## date1972 2139.145 7891.777 0.2711 0.7863449
## date1973 2652.616 7891.777 0.3361 0.7367774
## date1974 3306.205 7891.777 0.4189 0.6752578
## date1975 3736.686 7891.777 0.4735 0.6358628
## date1976 4425.604 7891.777 0.5608 0.5749430
## date1977 4698.806 7891.777 0.5954 0.5515726
## date1978 5234.634 7891.777 0.6633 0.5071370
## date1979 6060.354 7891.777 0.7679 0.4425272
## date1980 7072.576 7891.777 0.8962 0.3701483
## date1981 8188.133 7891.777 1.0376 0.2994785
## date1982 7987.390 7891.777 1.0121 0.3114828
## date1983 8523.654 7891.777 1.0801 0.2801120
## date1984 9312.706 7891.777 1.1801 0.2379796
## date1985 9796.257 7891.777 1.2413 0.2144858
## date1986 9909.818 7891.777 1.2557 0.2092195
## date1987 10895.002 7891.777 1.3806 0.1674170
## date1988 12362.836 7891.777 1.5665 0.1172207
## date1989 13585.668 7891.777 1.7215 0.0851607 .
## date1990 14316.347 7891.777 1.8141 0.0696648 .
## date1991 14759.335 7891.777 1.8702 0.0614537 .
## date1992 14990.000 7891.777 1.8994 0.0575059 .
## date1993 15667.517 7891.777 1.9853 0.0471115 *
## date1994 16091.651 7891.777 2.0390 0.0414460 *
## date1995 15978.167 7891.777 2.0247 0.0429023 *
## date1996 16773.055 7891.777 2.1254 0.0335546 *
## date1997 17769.387 7891.777 2.2516 0.0243455 *
## date1998 18030.354 7891.777 2.2847 0.0223303 *
## date1999 19236.904 7891.777 2.4376 0.0147856 *
## date2000 20835.037 7891.777 2.6401 0.0082883 **
## date2001 21096.198 7891.777 2.6732 0.0075134 **
## date2002 21538.969 7891.777 2.7293 0.0063470 **
## date2003 23202.118 7891.777 2.9400 0.0032817 **
## date2004 25366.654 7891.777 3.2143 0.0013076 **
## date2005 27852.977 7891.777 3.5294 0.0004166 ***
## date2006 30232.924 7891.777 3.8309 0.0001277 ***
## date2007 32408.252 7891.777 4.1066 4.016e-05 ***
## date2008 33394.731 7891.777 4.2316 2.320e-05 ***
## date2009 30291.171 7891.777 3.8383 0.0001239 ***
## date2010 33440.081 7891.777 4.2373 2.262e-05 ***
## date2011 35778.148 7891.777 4.5336 5.799e-06 ***
## date2012 36526.334 7891.777 4.6284 3.685e-06 ***
## date2013 37214.927 7891.777 4.7157 2.409e-06 ***
## date2014 37345.549 7891.777 4.7322 2.221e-06 ***
## date2015 35011.917 7891.777 4.4365 9.143e-06 ***
## date2016 34666.237 7891.777 4.3927 1.119e-05 ***
## date2017 36493.760 7891.777 4.6243 3.759e-06 ***
## date2018 38068.376 7891.777 4.8238 1.408e-06 ***
## date2019 38902.406 7891.777 4.9295 8.245e-07 ***
## date2020 37056.865 7891.777 4.6956 2.658e-06 ***
## date2021 42836.438 7891.777 5.4280 5.699e-08 ***
## date2022 46436.696 7891.777 5.8842 4.000e-09 ***
## date2023 48123.578 7891.777 6.0979 1.074e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 5.0797e+10
## Residual Sum of Squares: 1.1958e+10
## R-Squared: 0.76459
## Adj. R-Squared: 0.64873
## Chisq: 415.742 on 63 DF, p-value: < 2.22e-16
#Prueba de Hausman
phtest(modelo_efectos_fijos, modelo_efectos_aleatorios)
##
## Hausman Test
##
## data: NY.GDP.PCAP.CD ~ date
## chisq = 2.1185e-13, df = 63, p-value = 1
## alternative hypothesis: one model is inconsistent
#Como el p-value es mayor a 0.05, usamos el modelo de efectos aletorios.
Codigo ejercicio 3 por mesas
#Instalar paquetes y llamar librerias
#install.packages("WDI")
library(WDI)
#install.packages("wbstats")
library(wbstats)
#install.packages("tidyverse")
library(ggplot2)
#install.packages("gplots")
library(gplots)
# Obtener la información de 1 país
AGRICULTURA_MEX <- wb_data(country= "MX", indicator = "NV.AGR.TOTL.ZS",
start_date = 1960, end_date = 2025)
summary(AGRICULTURA_MEX)
## iso2c iso3c country date
## Length:64 Length:64 Length:64 Min. :1960
## Class :character Class :character Class :character 1st Qu.:1976
## Mode :character Mode :character Mode :character Median :1992
## Mean :1992
## 3rd Qu.:2007
## Max. :2023
##
## NV.AGR.TOTL.ZS unit obs_status footnote
## Min. : 2.943 Length:64 Length:64 Length:64
## 1st Qu.: 3.216 Class :character Class :character Class :character
## Median : 4.580 Mode :character Mode :character Mode :character
## Mean : 6.059
## 3rd Qu.: 7.995
## Max. :13.149
## NA's :5
## last_updated
## Min. :2025-01-28
## 1st Qu.:2025-01-28
## Median :2025-01-28
## Mean :2025-01-28
## 3rd Qu.:2025-01-28
## Max. :2025-01-28
##
ggplot(AGRICULTURA_MEX, aes(x= date, y= NV.AGR.TOTL.ZS)) +
geom_point() +
geom_line() +
labs(title="Agricultura como % del PIB en México", x= "Año", y= "Porcentaje del PIB")
## Warning: Removed 5 rows containing missing values or values outside the scale range
## (`geom_point()`).
## Warning: Removed 5 rows containing missing values or values outside the scale range
## (`geom_line()`).

# Obtener la información de varios países
AGRICULTURA_PANEL <- wb_data(country= c("MX", "US", "CA"), indicator = "NV.AGR.TOTL.ZS",
start_date = 1960, end_date = 2025)
summary(AGRICULTURA_PANEL)
## iso2c iso3c country date
## Length:192 Length:192 Length:192 Min. :1960
## Class :character Class :character Class :character 1st Qu.:1976
## Mode :character Mode :character Mode :character Median :1992
## Mean :1992
## 3rd Qu.:2007
## Max. :2023
##
## NV.AGR.TOTL.ZS unit obs_status footnote
## Min. : 0.8326 Length:192 Length:192 Length:192
## 1st Qu.: 1.5774 Class :character Class :character Class :character
## Median : 3.0280 Mode :character Mode :character Mode :character
## Mean : 3.9749
## 3rd Qu.: 5.5139
## Max. :13.1492
## NA's :84
## last_updated
## Min. :2025-01-28
## 1st Qu.:2025-01-28
## Median :2025-01-28
## Mean :2025-01-28
## 3rd Qu.:2025-01-28
## Max. :2025-01-28
##
ggplot(AGRICULTURA_PANEL, aes(x= date, y= NV.AGR.TOTL.ZS, color= iso3c)) +
geom_point() +
geom_line() +
labs(title="Agricultura como % del PIB en Norteamérica", x= "Año", y= "Porcentaje del PIB")
## Warning: Removed 84 rows containing missing values or values outside the scale range
## (`geom_point()`).
## Warning: Removed 84 rows containing missing values or values outside the scale range
## (`geom_line()`).

# Obtener la información de varios indicadores en varios países
AGRICULTURA_VARIOS <- wb_data(country= c("MX", "US", "CA"),
indicator = c("NV.AGR.TOTL.ZS", "AG.LND.AGRI.ZS"),
start_date = 1960, end_date = 2025)
summary(AGRICULTURA_VARIOS)
## iso2c iso3c country date
## Length:192 Length:192 Length:192 Min. :1960
## Class :character Class :character Class :character 1st Qu.:1976
## Mode :character Mode :character Mode :character Median :1992
## Mean :1992
## 3rd Qu.:2007
## Max. :2023
##
## AG.LND.AGRI.ZS NV.AGR.TOTL.ZS
## Min. : 6.371 Min. : 0.8326
## 1st Qu.: 6.970 1st Qu.: 1.5774
## Median :46.532 Median : 3.0280
## Mean :35.038 Mean : 3.9749
## 3rd Qu.:50.286 3rd Qu.: 5.5139
## Max. :54.888 Max. :13.1492
## NA's :6 NA's :84
# CLASE 3
# Heterogeneidad
# Variación entre países
plotmeans(NV.AGR.TOTL.ZS ~ iso3c, main = "Heterogeneidad en la Agricultura (% PIB)",
xlab = "País" , ylab = "Agricultura como % del PIB", data= AGRICULTURA_VARIOS)
## Warning in arrows(x, li, x, pmax(y - gap, li), col = barcol, lwd = lwd, :
## zero-length arrow is of indeterminate angle and so skipped
## Warning in arrows(x, li, x, pmax(y - gap, li), col = barcol, lwd = lwd, :
## zero-length arrow is of indeterminate angle and so skipped
## Warning in arrows(x, ui, x, pmin(y + gap, ui), col = barcol, lwd = lwd, :
## zero-length arrow is of indeterminate angle and so skipped
## Warning in arrows(x, ui, x, pmin(y + gap, ui), col = barcol, lwd = lwd, :
## zero-length arrow is of indeterminate angle and so skipped

# Interpretación:
# Alta heterogeneidad: Si los puntos están muy separados entre países.
# Baja heterogeneidad: Si los puntos están cerca unos de otros.
Actividad 1 patentes
Instalar Paquetes y Llamar Librerias
#install.packages("readxl")
library(readxl)
#install.packages("WDI")
library(WDI)
#install.packages("wbstats")
library(wbstats)
#install.packages("tidyverse")
library(ggplot2)
#install.packages("gplots")
library(gplots)
#install.packages("plm")
library(plm)
#install.packages("lmtest")
library(lmtest)
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
#install.packages("pglm")
library(pglm)
## Loading required package: maxLik
## Loading required package: miscTools
##
## Please cite the 'maxLik' package as:
## Henningsen, Arne and Toomet, Ott (2011). maxLik: A package for maximum likelihood estimation in R. Computational Statistics 26(3), 443-458. DOI 10.1007/s00180-010-0217-1.
##
## If you have questions, suggestions, or comments regarding the 'maxLik' package, please use a forum or 'tracker' at maxLik's R-Forge site:
## https://r-forge.r-project.org/projects/maxlik/
Importar la base de Datos
#file.choose()
patentes <- read_excel("/Users/fernandocardelasperez/Downloads/Patent 3 (1).xls")
Entender la base de Datos
summary(patentes)
## cusip merger employ return
## Min. : 800 Min. :0.0000 Min. : 0.085 Min. :-73.022
## 1st Qu.:368514 1st Qu.:0.0000 1st Qu.: 1.227 1st Qu.: 5.128
## Median :501116 Median :0.0000 Median : 3.842 Median : 7.585
## Mean :514536 Mean :0.0177 Mean : 18.826 Mean : 8.003
## 3rd Qu.:754688 3rd Qu.:0.0000 3rd Qu.: 15.442 3rd Qu.: 10.501
## Max. :878555 Max. :1.0000 Max. :506.531 Max. : 48.675
## NA's :21 NA's :8
## patents patentsg stckpr rnd
## Min. : 0.0 Min. : 0.00 Min. : 0.1875 Min. : 0.0000
## 1st Qu.: 1.0 1st Qu.: 1.00 1st Qu.: 7.6250 1st Qu.: 0.6847
## Median : 3.0 Median : 4.00 Median : 16.5000 Median : 2.1456
## Mean : 22.9 Mean : 27.14 Mean : 22.6270 Mean : 29.3398
## 3rd Qu.: 15.0 3rd Qu.: 19.00 3rd Qu.: 29.2500 3rd Qu.: 11.9168
## Max. :906.0 Max. :1063.00 Max. :402.0000 Max. :1719.3535
## NA's :2
## rndeflt rndstck sales sic
## Min. : 0.0000 Min. : 0.125 Min. : 1.22 Min. :2000
## 1st Qu.: 0.4788 1st Qu.: 5.152 1st Qu.: 52.99 1st Qu.:2890
## Median : 1.4764 Median : 13.353 Median : 174.06 Median :3531
## Mean : 19.7238 Mean : 163.823 Mean : 1219.60 Mean :3333
## 3rd Qu.: 8.7527 3rd Qu.: 74.563 3rd Qu.: 728.96 3rd Qu.:3661
## Max. :1000.7876 Max. :9755.352 Max. :44224.00 Max. :9997
## NA's :157 NA's :3
## year
## Min. :2012
## 1st Qu.:2014
## Median :2016
## Mean :2016
## 3rd Qu.:2019
## Max. :2021
##
sum(is.na(patentes))
## [1] 191
sapply(patentes, function(x) sum(is.na(x))) #Na´s por variable
## cusip merger employ return patents patentsg stckpr rnd
## 0 0 21 8 0 0 2 0
## rndeflt rndstck sales sic year
## 0 157 3 0 0
patentes1 <- na.omit(patentes)
1. Contrucción del modelo de datos en panel
panel_patentes <- pdata.frame(patentes1, index = c("cusip", "year"))
2. Modelo de efectos fijos y aleatorios
#Modelo de efectos fijos
modelo_efectos_fijos_patentes <- plm(patents ~ merger + employ + return + patentsg + stckpr + rnd + rndeflt
+ rndstck + sales + sic, data=panel_patentes, model= "within")
summary(modelo_efectos_fijos_patentes)
## Oneway (individual) effect Within Model
##
## Call:
## plm(formula = patents ~ merger + employ + return + patentsg +
## stckpr + rnd + rndeflt + rndstck + sales + sic, data = panel_patentes,
## model = "within")
##
## Unbalanced Panel: n = 215, T = 2-10, N = 2083
##
## Residuals:
## Min. 1st Qu. Median 3rd Qu. Max.
## -468.39577 -1.75634 -0.25666 1.85265 172.64513
##
## Coefficients:
## Estimate Std. Error t-value Pr(>|t|)
## merger 6.02467998 4.30535335 1.3993 0.1619
## employ -0.09095534 0.08057733 -1.1288 0.2591
## return -0.01221444 0.12005904 -0.1017 0.9190
## patentsg 0.03913907 0.02580379 1.5168 0.1295
## stckpr -0.03959771 0.03347713 -1.1828 0.2370
## rnd -2.04101003 0.15053766 -13.5581 < 2.2e-16 ***
## rndeflt 3.25369409 0.22523191 14.4460 < 2.2e-16 ***
## rndstck 0.19724166 0.01808942 10.9037 < 2.2e-16 ***
## sales -0.00188938 0.00041715 -4.5293 6.294e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 1090400
## Residual Sum of Squares: 714450
## R-Squared: 0.34479
## Adj. R-Squared: 0.2662
## F-statistic: 108.696 on 9 and 1859 DF, p-value: < 2.22e-16
#Modelo de efectos aleatorios
modelo_efectos_aleatorios_patentes <- plm(patents ~ merger + employ + return + patentsg + stckpr + rnd + rndeflt + rndstck + sales + sic, data=panel_patentes, model= "random")
summary(modelo_efectos_aleatorios_patentes)
## Oneway (individual) effect Random Effect Model
## (Swamy-Arora's transformation)
##
## Call:
## plm(formula = patents ~ merger + employ + return + patentsg +
## stckpr + rnd + rndeflt + rndstck + sales + sic, data = panel_patentes,
## model = "random")
##
## Unbalanced Panel: n = 215, T = 2-10, N = 2083
##
## Effects:
## var std.dev share
## idiosyncratic 384.3 19.6 1
## individual 0.0 0.0 0
## theta:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0 0 0 0 0 0
##
## Residuals:
## Min. 1st Qu. Median 3rd Qu. Max.
## -525.42194 -2.59738 -0.31264 1.88763 277.92369
##
## Coefficients:
## Estimate Std. Error z-value Pr(>|z|)
## (Intercept) 1.19864916 2.94181986 0.4075 0.68368
## merger 1.92231907 4.04770404 0.4749 0.63485
## employ 0.12548448 0.03060149 4.1006 4.121e-05 ***
## return 0.06432167 0.10374558 0.6200 0.53526
## patentsg 0.78696226 0.01016726 77.4016 < 2.2e-16 ***
## stckpr 0.00355791 0.02557045 0.1391 0.88934
## rnd -0.18291882 0.04480367 -4.0827 4.452e-05 ***
## rndeflt 0.26805014 0.03877619 6.9128 4.753e-12 ***
## rndstck -0.00122890 0.00628664 -0.1955 0.84502
## sales -0.00054529 0.00025769 -2.1161 0.03434 *
## sic -0.00049485 0.00081918 -0.6041 0.54579
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 10910000
## Residual Sum of Squares: 1154800
## R-Squared: 0.89416
## Adj. R-Squared: 0.89365
## Chisq: 17504.4 on 10 DF, p-value: < 2.22e-16
#Prueba de Hausman
phtest(modelo_efectos_fijos_patentes, modelo_efectos_aleatorios_patentes)
##
## Hausman Test
##
## data: patents ~ merger + employ + return + patentsg + stckpr + rnd + ...
## chisq = 1104.9, df = 9, p-value < 2.2e-16
## alternative hypothesis: one model is inconsistent
#Como el p-value es mayor a 0.05, usamos el modelo de efectos aletorios.
#Usaremos el modelo de efectos fijos
3. Pruebas de heterocedasticidad y autocorrelación.
#Prueba de Heterocedasticidad para el modelo de efectos fijos
bptest(modelo_efectos_fijos_patentes)
##
## studentized Breusch-Pagan test
##
## data: modelo_efectos_fijos_patentes
## BP = 617.25, df = 10, p-value < 2.2e-16
#Como el pvalue es <0.05, hay heterocedasticidad en los residuos (problema detectado)
#Prueba de Heterocedasticidad para el modelo de efectos fijos
bptest(modelo_efectos_aleatorios_patentes)
##
## studentized Breusch-Pagan test
##
## data: modelo_efectos_aleatorios_patentes
## BP = 617.25, df = 10, p-value < 2.2e-16
#Como el pvalue es <0.05, hay heterocedasticidad en los residuos (problema detectado)
#Prueba de Autocorrelación serial para el modelo de efectos fijos
pwartest(modelo_efectos_fijos_patentes)
##
## Wooldridge's test for serial correlation in FE panels
##
## data: modelo_efectos_fijos_patentes
## F = 42.281, df1 = 1, df2 = 1866, p-value = 1.012e-10
## alternative hypothesis: serial correlation
#Como el pvalue es <0.05, hay autocorrelación serial en errores
#Prueba de Autocorrelación serial para el modelo de efectos fijos
pbnftest(modelo_efectos_aleatorios_patentes)
##
## modified Bhargava/Franzini/Narendranathan Panel Durbin-Watson Test
##
## data: patents ~ merger + employ + return + patentsg + stckpr + rnd + ...
## DW = 1.0069
## alternative hypothesis: serial correlation in idiosyncratic errors
#Como el valor es < de 1.5 , hay autocorrelación positiva significativa
#Correción del modelo con errores Estandar Robustos
coeficientes_corregidos <- coeftest(modelo_efectos_fijos_patentes,
vcov=vcovHC(modelo_efectos_fijos_patentes, type = "HC0"))
solo_coeficientes <- coeficientes_corregidos[,1]
4. Generar pronosticos y evaluar modelo
datos_de_prueba <- data.frame(merger=0, employ=10, return=6,
patentsg = 24, stckpr = 48, rnd = 3, rndeflt = 3, rndstck = 16, sales = 344)
length(datos_de_prueba)
## [1] 9
print(datos_de_prueba)
## merger employ return patentsg stckpr rnd rndeflt rndstck sales
## 1 0 10 6 24 48 3 3 16 344
length(solo_coeficientes)
## [1] 9
print(solo_coeficientes)
## merger employ return patentsg stckpr rnd
## 6.024679976 -0.090955344 -0.012214441 0.039139069 -0.039597715 -2.041010028
## rndeflt rndstck sales
## 3.253694087 0.197241659 -0.001889381
predicción <- sum(solo_coeficientes*c(datos_de_prueba$merger,datos_de_prueba$employ, datos_de_prueba$return, datos_de_prueba$patentsg, datos_de_prueba$stckpr, datos_de_prueba$rnd, datos_de_prueba$rndeflt, datos_de_prueba$rndstck, datos_de_prueba$sales))
predicción
## [1] 4.199779
LS0tCnRpdGxlOiAiQWN0aXZpZGFkIDEiCmF1dGhvcjogIkpvc8OpIEZlcm5hbmRvIENhcmRlbGFzIFDDqXJleiAtIEEwMTc0Nzg0MyIKZGF0ZTogIjIwMjUtMDItMTMiCm91dHB1dDogCiAgaHRtbF9kb2N1bWVudDoKICAgIHRvYzogVFJVRQogICAgdG9jX2Zsb2F0OiBUUlVFCiAgICBjb2RlX2Rvd25sb2FkOiBUUlVFIAogICAgdGhlbWU6IGNlcnVsZWFuIAotLS0KCiFbXSgvVXNlcnMvZmVybmFuZG9jYXJkZWxhc3BlcmV6L0Rvd25sb2Fkcy9waWJfZ2lmLmpwZykgCgoKIyBBY3RpdmlkYWQgMS4gU2VzacOzbiAxLiBNb2RlbG8gZWNvbm9tZXRyaWNvCgoKIyBDb2RpZ28gc2VzacOzbiAyLCAzIHkgNC4gQW5hbGlzaXMgZGUgRGF0b3MgUGFuZWwgCgpgYGB7ciB3YXJuaW5nPUZBTFNFfQojSW5zdGFsYXIgcGFxdWV0ZXMgeSBsbGFtYXIgbGlucmVyw61hcyAKI2luc3RhbGwucGFja2FnZXMoIldESSIpCmxpYnJhcnkoV0RJKQojaW5zdGFsbC5wYWNrYWdlcygid2JzdGF0cyIpCmxpYnJhcnkod2JzdGF0cykKI2luc3RhbGwucGFja2FnZXMoInRpZHl2ZXJzZSIpCmxpYnJhcnkoZ2dwbG90MikKCiNpbnN0YWxsLnBhY2thZ2VzKCJwbG0iKQpsaWJyYXJ5KHBsbSkKCgojb2J0ZW5lciBsYSBpbmZvcm1hY2nDs24gZGUgMSBwYcOtcyAKUElCX01FWCA8LSB3Yl9kYXRhKGNvdW50cnk9ICJNWCIsIGluZGljYXRvciA9ICJOWS5HRFAuUENBUC5DRCIsCiAgICAgICAgICAgICAgICAgICBzdGFydF9kYXRlID0gMTkwMCwgZW5kX2RhdGUgPSAyMDI1KQpzdW1tYXJ5KFBJQl9NRVgpCmdncGxvdChQSUJfTUVYLCBhZXMoeD0gZGF0ZSwgeT1OWS5HRFAuUENBUC5DRCkpICsgCiAgZ2VvbV9wb2ludCgpICsKICBnZW9tX2xpbmUoKSArCiAgbGFicyh0aXRsZT0iUElCIHBlciBDYXBpdGEgZW4gTcOpeGljbyAoQ3VycmVudCBVU0QkKSIsIHg9ICJBw7FvIiwgeT0gIlZhbG9yIikKCgojb2J0ZW5lciBsYSBpbmZvcm1hY2nDs24gZGUgdmFyaW9zIHBhw61zIApQSUJfUEFORUwgPC0gd2JfZGF0YShjb3VudHJ5PSBjKCJNWCIsICJVUyIsICJDQSIpLCBpbmRpY2F0b3IgPSAiTlkuR0RQLlBDQVAuQ0QiLAogICAgICAgICAgICAgICAgICAgICBzdGFydF9kYXRlID0gMTkwMCwgZW5kX2RhdGUgPSAyMDI1KQpzdW1tYXJ5KFBJQl9QQU5FTCkKZ2dwbG90KFBJQl9QQU5FTCwgYWVzKHg9IGRhdGUsIHk9TlkuR0RQLlBDQVAuQ0QsIGNvbG9yPWlzbzNjKSkgKyAKICBnZW9tX3BvaW50KCkgKwogIGdlb21fbGluZSgpICsKICBsYWJzKHRpdGxlPSJQSUIgcGVyIENhcGl0YSBlbiBOb3J0ZWFtw6lyaWNhIChDdXJyZW50IFVTRCQpIiwgeD0gIkHDsW8iLCB5PSAiVmFsb3IiKQoKCiNvYnRlbmVyIGxhIGluZm9ybWFjacOzbiBkZSB2YXJpb3MgaW5kaWNhZG9yZXMgZW4gdmFyaW9zIHBhaXNlcwpQSUJfVkFSSU9TIDwtIHdiX2RhdGEoY291bnRyeT0gYygiTVgiLCAiVVMiLCAiQ0EiKSwgaW5kaWNhdG9yID0gYygiTlkuR0RQLlBDQVAuQ0QiLCAiU1AuRFlOLkxFMDAuSU4iKSwKICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2RhdGUgPSAxOTAwLCBlbmRfZGF0ZSA9IDIwMjUpCnN1bW1hcnkoUElCX1ZBUklPUykKCgojQ0xBU0UgMyAKI0hldGVyb2dlbmVpZGFkCiNWYXJpYWNpw7NuIGVudHJlIGluZGl2aWR1b3MgCgoKI2luc3RhbGwucGFja2FnZXMoImdwbG90cyIpCmxpYnJhcnkoZ3Bsb3RzKQoKcGxvdG1lYW5zKE5ZLkdEUC5QQ0FQLkNEIH4gY291bnRyeSwgbWFpbiA9ICJIZXRlcm9nZW5pZGFkIGVudHJlIHBhaXNlcyIsIHhsYWIgPSAiUGFpcyIgLCB5bGFiID0gIlBJQiBwZXIgQ2FwaXRhIiwgZGF0YT0gUElCX1ZBUklPUykKI0ludGVycHJldGFjacOzbjogCiNBbHRhIGhldGVyb2dlbmlkYWQ6IFNpIGxvcyBwdW50b3MgZXN0YW4gbXV5IHNlcGFyYWRvcyBlbnRyZSBwYWlzZXMgCiNCYWphIGhldGVyb2dlbmlkYWQ6IFNpIGxvcyBwdW50b3MgZXN0YW4gY2VyY2EgdW5vIGRlIG90b3MKI0VuIGVzdGUgY2FzbyBFVUEgeSBDYW5hZGEgdGllbmUgdW4gUElCIHBlciBjYXBpdGEgbWF5b3IgcXVlIE3DqXhpY28sIG1vc3RyYW5kbyBhbHRhIGhldGVyb2dlbmlkYWQgZW50cmUgcGFpc2VzIAoKCiMgTW9kZWxvcyBkZSBlZmVjdG9zIGZpam9zIHkgYWxlYXRvcmlvcyAKCiNQYXNvIDEsIENvbnZlcnRpciBsYSBiYXNlIGRlIGRhdG9zIGEgZm9ybWF0byBkZSBwYW5lbApkYXRvc19wYW5lbCAgPC1wZGF0YS5mcmFtZShQSUJfUEFORUwsIGluZGV4ID0gYygiY291bnRyeSIsICJkYXRlIikpCgojTW9kZWxvIGRlIGVmZWN0b3MgZmlqb3MgCm1vZGVsb19lZmVjdG9zX2Zpam9zIDwtIHBsbShOWS5HRFAuUENBUC5DRCB+IGRhdGUsIGRhdGE9ZGF0b3NfcGFuZWwsIG1vZGVsPSAid2l0aGluIikKCnN1bW1hcnkobW9kZWxvX2VmZWN0b3NfZmlqb3MpCgojTW9kZWxvIGRlIGVmZWN0b3MgYWxlYXRvcmlvcwptb2RlbG9fZWZlY3Rvc19hbGVhdG9yaW9zIDwtIHBsbShOWS5HRFAuUENBUC5DRCB+IGRhdGUsIGRhdGE9ZGF0b3NfcGFuZWwsIG1vZGVsPSAicmFuZG9tIikKCnN1bW1hcnkobW9kZWxvX2VmZWN0b3NfYWxlYXRvcmlvcykKCiNQcnVlYmEgZGUgSGF1c21hbgpwaHRlc3QobW9kZWxvX2VmZWN0b3NfZmlqb3MsIG1vZGVsb19lZmVjdG9zX2FsZWF0b3Jpb3MpCiNDb21vIGVsIHAtdmFsdWUgZXMgbWF5b3IgYSAwLjA1LCB1c2Ftb3MgZWwgbW9kZWxvIGRlIGVmZWN0b3MgYWxldG9yaW9zLiAKCmBgYAoKIyBBcGxpY2FjacOzbiBTaGlueSAoRWplbXBsbyB5IEVqZXJjaWNpbyBTZXNpw7NuIDMgcG9yIG1lc2FzKQoKW0xpbmsgc2hpbnkgYXBwOl0oaHR0cHM6Ly9lcGc0cXUtZGFuaWVsLW5hamVyYS5zaGlueWFwcHMuaW8vQWN0aXZpZGFkX0VxdWlwb19HZXJhRGFuaS8pCgoKIyBDb2RpZ28gZWplcmNpY2lvIDMgcG9yIG1lc2FzIApgYGB7cn0KI0luc3RhbGFyIHBhcXVldGVzIHkgbGxhbWFyIGxpYnJlcmlhcyAKI2luc3RhbGwucGFja2FnZXMoIldESSIpCmxpYnJhcnkoV0RJKQojaW5zdGFsbC5wYWNrYWdlcygid2JzdGF0cyIpCmxpYnJhcnkod2JzdGF0cykKI2luc3RhbGwucGFja2FnZXMoInRpZHl2ZXJzZSIpCmxpYnJhcnkoZ2dwbG90MikKI2luc3RhbGwucGFja2FnZXMoImdwbG90cyIpCmxpYnJhcnkoZ3Bsb3RzKQoKIyBPYnRlbmVyIGxhIGluZm9ybWFjacOzbiBkZSAxIHBhw61zIApBR1JJQ1VMVFVSQV9NRVggPC0gd2JfZGF0YShjb3VudHJ5PSAiTVgiLCBpbmRpY2F0b3IgPSAiTlYuQUdSLlRPVEwuWlMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9kYXRlID0gMTk2MCwgZW5kX2RhdGUgPSAyMDI1KQpzdW1tYXJ5KEFHUklDVUxUVVJBX01FWCkKZ2dwbG90KEFHUklDVUxUVVJBX01FWCwgYWVzKHg9IGRhdGUsIHk9IE5WLkFHUi5UT1RMLlpTKSkgKyAKICBnZW9tX3BvaW50KCkgKwogIGdlb21fbGluZSgpICsKICBsYWJzKHRpdGxlPSJBZ3JpY3VsdHVyYSBjb21vICUgZGVsIFBJQiBlbiBNw6l4aWNvIiwgeD0gIkHDsW8iLCB5PSAiUG9yY2VudGFqZSBkZWwgUElCIikKCiMgT2J0ZW5lciBsYSBpbmZvcm1hY2nDs24gZGUgdmFyaW9zIHBhw61zZXMgCkFHUklDVUxUVVJBX1BBTkVMIDwtIHdiX2RhdGEoY291bnRyeT0gYygiTVgiLCAiVVMiLCAiQ0EiKSwgaW5kaWNhdG9yID0gIk5WLkFHUi5UT1RMLlpTIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9kYXRlID0gMTk2MCwgZW5kX2RhdGUgPSAyMDI1KQpzdW1tYXJ5KEFHUklDVUxUVVJBX1BBTkVMKQpnZ3Bsb3QoQUdSSUNVTFRVUkFfUEFORUwsIGFlcyh4PSBkYXRlLCB5PSBOVi5BR1IuVE9UTC5aUywgY29sb3I9IGlzbzNjKSkgKyAKICBnZW9tX3BvaW50KCkgKwogIGdlb21fbGluZSgpICsKICBsYWJzKHRpdGxlPSJBZ3JpY3VsdHVyYSBjb21vICUgZGVsIFBJQiBlbiBOb3J0ZWFtw6lyaWNhIiwgeD0gIkHDsW8iLCB5PSAiUG9yY2VudGFqZSBkZWwgUElCIikKCiMgT2J0ZW5lciBsYSBpbmZvcm1hY2nDs24gZGUgdmFyaW9zIGluZGljYWRvcmVzIGVuIHZhcmlvcyBwYcOtc2VzCkFHUklDVUxUVVJBX1ZBUklPUyA8LSB3Yl9kYXRhKGNvdW50cnk9IGMoIk1YIiwgIlVTIiwgIkNBIiksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2F0b3IgPSBjKCJOVi5BR1IuVE9UTC5aUyIsICJBRy5MTkQuQUdSSS5aUyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9kYXRlID0gMTk2MCwgZW5kX2RhdGUgPSAyMDI1KQpzdW1tYXJ5KEFHUklDVUxUVVJBX1ZBUklPUykKCgojIENMQVNFIDMgCiMgSGV0ZXJvZ2VuZWlkYWQKIyBWYXJpYWNpw7NuIGVudHJlIHBhw61zZXMKCnBsb3RtZWFucyhOVi5BR1IuVE9UTC5aUyB+IGlzbzNjLCBtYWluID0gIkhldGVyb2dlbmVpZGFkIGVuIGxhIEFncmljdWx0dXJhICglIFBJQikiLCAKICAgICAgICAgIHhsYWIgPSAiUGHDrXMiICwgeWxhYiA9ICJBZ3JpY3VsdHVyYSBjb21vICUgZGVsIFBJQiIsIGRhdGE9IEFHUklDVUxUVVJBX1ZBUklPUykKCiMgSW50ZXJwcmV0YWNpw7NuOiAKIyBBbHRhIGhldGVyb2dlbmVpZGFkOiBTaSBsb3MgcHVudG9zIGVzdMOhbiBtdXkgc2VwYXJhZG9zIGVudHJlIHBhw61zZXMuIAojIEJhamEgaGV0ZXJvZ2VuZWlkYWQ6IFNpIGxvcyBwdW50b3MgZXN0w6FuIGNlcmNhIHVub3MgZGUgb3Ryb3MuCmBgYAoKCiMgQWN0aXZpZGFkIDEgcGF0ZW50ZXMgCgojIyBJbnN0YWxhciBQYXF1ZXRlcyB5IExsYW1hciBMaWJyZXJpYXMKYGBge3Igd2FybmluZz1GQUxTRX0KI2luc3RhbGwucGFja2FnZXMoInJlYWR4bCIpCmxpYnJhcnkocmVhZHhsKQojaW5zdGFsbC5wYWNrYWdlcygiV0RJIikKbGlicmFyeShXREkpCiNpbnN0YWxsLnBhY2thZ2VzKCJ3YnN0YXRzIikKbGlicmFyeSh3YnN0YXRzKQojaW5zdGFsbC5wYWNrYWdlcygidGlkeXZlcnNlIikKbGlicmFyeShnZ3Bsb3QyKQojaW5zdGFsbC5wYWNrYWdlcygiZ3Bsb3RzIikKbGlicmFyeShncGxvdHMpCiNpbnN0YWxsLnBhY2thZ2VzKCJwbG0iKQpsaWJyYXJ5KHBsbSkKI2luc3RhbGwucGFja2FnZXMoImxtdGVzdCIpCmxpYnJhcnkobG10ZXN0KQojaW5zdGFsbC5wYWNrYWdlcygicGdsbSIpCmxpYnJhcnkocGdsbSkKYGBgCgojIyBJbXBvcnRhciBsYSBiYXNlIGRlIERhdG9zCmBgYHtyIHdhcm5pbmc9RkFMU0V9CiNmaWxlLmNob29zZSgpCnBhdGVudGVzIDwtIHJlYWRfZXhjZWwoIi9Vc2Vycy9mZXJuYW5kb2NhcmRlbGFzcGVyZXovRG93bmxvYWRzL1BhdGVudCAzICgxKS54bHMiKQpgYGAKCiMjIEVudGVuZGVyIGxhIGJhc2UgZGUgRGF0b3MgCmBgYHtyIHdhcm5pbmc9RkFMU0V9CnN1bW1hcnkocGF0ZW50ZXMpCnN1bShpcy5uYShwYXRlbnRlcykpCnNhcHBseShwYXRlbnRlcywgZnVuY3Rpb24oeCkgc3VtKGlzLm5hKHgpKSkgI05hwrRzIHBvciB2YXJpYWJsZSAKcGF0ZW50ZXMxIDwtIG5hLm9taXQocGF0ZW50ZXMpCgpgYGAKCgojIyAxLiBDb250cnVjY2nDs24gZGVsIG1vZGVsbyBkZSBkYXRvcyBlbiBwYW5lbCAKYGBge3Igd2FybmluZz1GQUxTRX0KcGFuZWxfcGF0ZW50ZXMgPC0gcGRhdGEuZnJhbWUocGF0ZW50ZXMxLCBpbmRleCA9IGMoImN1c2lwIiwgInllYXIiKSkKCgpgYGAKCgojIyAyLiBNb2RlbG8gZGUgZWZlY3RvcyBmaWpvcyB5IGFsZWF0b3Jpb3MgCmBgYHtyIHdhcm5pbmc9RkFMU0V9CgoKI01vZGVsbyBkZSBlZmVjdG9zIGZpam9zIAptb2RlbG9fZWZlY3Rvc19maWpvc19wYXRlbnRlcyA8LSBwbG0ocGF0ZW50cyB+IG1lcmdlciArIGVtcGxveSArIHJldHVybiArIHBhdGVudHNnICsgc3Rja3ByICsgcm5kICsgcm5kZWZsdAorIHJuZHN0Y2sgKyBzYWxlcyArIHNpYywgZGF0YT1wYW5lbF9wYXRlbnRlcywgIG1vZGVsPSAid2l0aGluIikKCnN1bW1hcnkobW9kZWxvX2VmZWN0b3NfZmlqb3NfcGF0ZW50ZXMpCgojTW9kZWxvIGRlIGVmZWN0b3MgYWxlYXRvcmlvcwptb2RlbG9fZWZlY3Rvc19hbGVhdG9yaW9zX3BhdGVudGVzIDwtIHBsbShwYXRlbnRzIH4gbWVyZ2VyICsgZW1wbG95ICsgcmV0dXJuICsgcGF0ZW50c2cgKyBzdGNrcHIgKyBybmQgKyBybmRlZmx0ICsgcm5kc3RjayArIHNhbGVzICsgc2ljLCBkYXRhPXBhbmVsX3BhdGVudGVzLCAgbW9kZWw9ICJyYW5kb20iKQoKc3VtbWFyeShtb2RlbG9fZWZlY3Rvc19hbGVhdG9yaW9zX3BhdGVudGVzKQoKI1BydWViYSBkZSBIYXVzbWFuCnBodGVzdChtb2RlbG9fZWZlY3Rvc19maWpvc19wYXRlbnRlcywgbW9kZWxvX2VmZWN0b3NfYWxlYXRvcmlvc19wYXRlbnRlcykKI0NvbW8gZWwgcC12YWx1ZSBlcyBtYXlvciBhIDAuMDUsIHVzYW1vcyBlbCBtb2RlbG8gZGUgZWZlY3RvcyBhbGV0b3Jpb3MuIAoKI1VzYXJlbW9zIGVsIG1vZGVsbyBkZSBlZmVjdG9zIGZpam9zIAoKYGBgCgoKCiMjIDMuIFBydWViYXMgZGUgaGV0ZXJvY2VkYXN0aWNpZGFkIHkgYXV0b2NvcnJlbGFjacOzbi4gCmBgYHtyIHdhcm5pbmc9RkFMU0V9CiNQcnVlYmEgZGUgSGV0ZXJvY2VkYXN0aWNpZGFkIHBhcmEgZWwgbW9kZWxvIGRlIGVmZWN0b3MgZmlqb3MgCmJwdGVzdChtb2RlbG9fZWZlY3Rvc19maWpvc19wYXRlbnRlcykKI0NvbW8gZWwgcHZhbHVlIGVzIDwwLjA1LCBoYXkgaGV0ZXJvY2VkYXN0aWNpZGFkIGVuIGxvcyByZXNpZHVvcyAocHJvYmxlbWEgZGV0ZWN0YWRvKQoKI1BydWViYSBkZSBIZXRlcm9jZWRhc3RpY2lkYWQgcGFyYSBlbCBtb2RlbG8gZGUgZWZlY3RvcyBmaWpvcwpicHRlc3QobW9kZWxvX2VmZWN0b3NfYWxlYXRvcmlvc19wYXRlbnRlcykKI0NvbW8gZWwgcHZhbHVlIGVzIDwwLjA1LCBoYXkgaGV0ZXJvY2VkYXN0aWNpZGFkIGVuIGxvcyByZXNpZHVvcyAocHJvYmxlbWEgZGV0ZWN0YWRvKQoKCgojUHJ1ZWJhIGRlIEF1dG9jb3JyZWxhY2nDs24gc2VyaWFsIHBhcmEgZWwgbW9kZWxvIGRlIGVmZWN0b3MgZmlqb3MKcHdhcnRlc3QobW9kZWxvX2VmZWN0b3NfZmlqb3NfcGF0ZW50ZXMpCiNDb21vIGVsIHB2YWx1ZSBlcyA8MC4wNSwgaGF5IGF1dG9jb3JyZWxhY2nDs24gc2VyaWFsIGVuIGVycm9yZXMKCgojUHJ1ZWJhIGRlIEF1dG9jb3JyZWxhY2nDs24gc2VyaWFsIHBhcmEgZWwgbW9kZWxvIGRlIGVmZWN0b3MgZmlqb3MKcGJuZnRlc3QobW9kZWxvX2VmZWN0b3NfYWxlYXRvcmlvc19wYXRlbnRlcykKI0NvbW8gZWwgdmFsb3IgIGVzIDwgZGUgMS41ICwgIGhheSBhdXRvY29ycmVsYWNpw7NuIHBvc2l0aXZhIHNpZ25pZmljYXRpdmEgCgoKI0NvcnJlY2nDs24gZGVsIG1vZGVsbyBjb24gZXJyb3JlcyBFc3RhbmRhciBSb2J1c3Rvcwpjb2VmaWNpZW50ZXNfY29ycmVnaWRvcyA8LSBjb2VmdGVzdChtb2RlbG9fZWZlY3Rvc19maWpvc19wYXRlbnRlcywKdmNvdj12Y292SEMobW9kZWxvX2VmZWN0b3NfZmlqb3NfcGF0ZW50ZXMsIHR5cGUgPSAiSEMwIikpCgpzb2xvX2NvZWZpY2llbnRlcyA8LSBjb2VmaWNpZW50ZXNfY29ycmVnaWRvc1ssMV0KCmBgYAoKIyMgNC4gR2VuZXJhciBwcm9ub3N0aWNvcyB5IGV2YWx1YXIgbW9kZWxvCmBgYHtyIHdhcm5pbmc9RkFMU0V9CmRhdG9zX2RlX3BydWViYSA8LSBkYXRhLmZyYW1lKG1lcmdlcj0wLCBlbXBsb3k9MTAsIHJldHVybj02LApwYXRlbnRzZyA9IDI0LCBzdGNrcHIgPSA0OCwgcm5kID0gMywgcm5kZWZsdCA9IDMsIHJuZHN0Y2sgPSAxNiwgc2FsZXMgPSAzNDQpCgpsZW5ndGgoZGF0b3NfZGVfcHJ1ZWJhKQpwcmludChkYXRvc19kZV9wcnVlYmEpCmxlbmd0aChzb2xvX2NvZWZpY2llbnRlcykKcHJpbnQoc29sb19jb2VmaWNpZW50ZXMpCgpwcmVkaWNjacOzbiA8LSBzdW0oc29sb19jb2VmaWNpZW50ZXMqYyhkYXRvc19kZV9wcnVlYmEkbWVyZ2VyLGRhdG9zX2RlX3BydWViYSRlbXBsb3ksIGRhdG9zX2RlX3BydWViYSRyZXR1cm4sIGRhdG9zX2RlX3BydWViYSRwYXRlbnRzZywgZGF0b3NfZGVfcHJ1ZWJhJHN0Y2twciwgZGF0b3NfZGVfcHJ1ZWJhJHJuZCwgZGF0b3NfZGVfcHJ1ZWJhJHJuZGVmbHQsIGRhdG9zX2RlX3BydWViYSRybmRzdGNrLCBkYXRvc19kZV9wcnVlYmEkc2FsZXMpKQoKcHJlZGljY2nDs24KYGBgCgo=