#install.packages("WDI")
#install.packages("wbstats")
#install.packages("tidyverse")
#install.packages("shiny")
#install.packages("plm")
#install.packages(pglm)
#install.packages(lmtest)
library(WDI)
## Warning: package 'WDI' was built under R version 4.4.2
library(wbstats)
## Warning: package 'wbstats' was built under R version 4.4.2
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(ggplot2)
library(shiny)
library(gplots)
## 
## Adjuntando el paquete: 'gplots'
## 
## The following object is masked from 'package:stats':
## 
##     lowess
library(plm)
## Warning: package 'plm' was built under R version 4.4.2
## 
## Adjuntando el paquete: 'plm'
## 
## The following objects are masked from 'package:dplyr':
## 
##     between, lag, lead
library(readxl)
library(lmtest)
## Cargando paquete requerido: zoo
## 
## Adjuntando el paquete: 'zoo'
## 
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
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, color=iso3c)) + 
  geom_point() + 
  geom_line() + 
  labs(title="PIB per capita en Mexico (Current USD$)", 
       x="AÑO", 
       y="VALOR") +
  theme_minimal()

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") +
  theme_minimal()

MEGAPIB <- wb_data(country = c("MX", "US", "CA"), indicator = c("NY.GDP.PCAP.CD","SP.DYN.LE00.IN"),
                   start_date=1900, end_date=2025)

summary(MEGAPIB)
##     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
plotmeans(NY.GDP.PCAP.CD ~ country, main = "Heterogeneidad entre paises", xlab = "País", ylab = "PIB per Cápita" ,data = MEGAPIB )
## 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

#Alta heterogeneidad: Si los puntos (medias) estan muy separados entre países
#Baja heterogeneidad: Si los puntos (medias) estan cerca unos de los otros.
#En este caso, EUA y Canada tienen un PIB per Cápita mayor que México, mostrando alta heterogeneidad entre los paises.
Camas_PANEL <- wb_data(country = c("MX","US","CA"), indicator = "SH.MED.BEDS.ZS", start_date = 1900 , end_date = 2025)

summary(Camas_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  
##                                                                         
##  SH.MED.BEDS.ZS      unit            obs_status          footnote        
##  Min.   :0.700   Length:192         Length:192         Length:192        
##  1st Qu.:2.197   Class :character   Class :character   Class :character  
##  Median :3.285   Mode  :character   Mode  :character   Mode  :character  
##  Mean   :3.772                                                           
##  3rd Qu.:5.800                                                           
##  Max.   :9.200                                                           
##  NA's   :60                                                              
##   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(Camas_PANEL, aes(x=date, y=SH.MED.BEDS.ZS, color=iso3c)) + 
  geom_point() + 
  geom_line() + 
  labs(title="Camas hospitalarias (por cada 1.000 personas)", 
       x="AÑO", 
       y="VALOR") +
  theme_minimal()
## Warning: Removed 60 rows containing missing values or values outside the scale range
## (`geom_point()`).
## Warning: Removed 28 rows containing missing values or values outside the scale range
## (`geom_line()`).

Mortalidad_PANEL <- wb_data(country = c("MX","US","CA"), indicator = "SP.DYN.CDRT.IN", start_date = 1900 , end_date = 2025)

summary(Mortalidad_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  
##                                                                         
##  SP.DYN.CDRT.IN       unit            obs_status          footnote        
##  Min.   : 4.946   Length:192         Length:192         Length:192        
##  1st Qu.: 7.100   Class :character   Class :character   Class :character  
##  Median : 7.600   Mode  :character   Mode  :character   Mode  :character  
##  Mean   : 7.794                                                           
##  3rd Qu.: 8.700                                                           
##  Max.   :13.435                                                           
##  NA's   :3                                                                
##   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(Mortalidad_PANEL, aes(x=date, y=SP.DYN.CDRT.IN, color=iso3c)) + 
  geom_point() + 
  geom_line() + 
  labs(title="Tasa de mortalidad, bruta (por cada 1.000 personas)", 
       x="AÑO", 
       y="VALOR") +
  theme_minimal()
## Warning: Removed 3 rows containing missing values or values outside the scale range
## (`geom_point()`).
## Warning: Removed 3 rows containing missing values or values outside the scale range
## (`geom_line()`).

PBL65_PANEL <- wb_data(country = c("MX","US","CA"), indicator = "SP.POP.65UP.TO.ZS", start_date = 1900 , end_date = 2025)

summary(PBL65_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  
##  SP.POP.65UP.TO.ZS     unit            obs_status          footnote        
##  Min.   : 2.663    Length:192         Length:192         Length:192        
##  1st Qu.: 5.933    Class :character   Class :character   Class :character  
##  Median : 9.657    Mode  :character   Mode  :character   Mode  :character  
##  Mean   : 9.365                                                            
##  3rd Qu.:12.345                                                            
##  Max.   :19.358                                                            
##   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(PBL65_PANEL, aes(x=date, y=SP.POP.65UP.TO.ZS, color=iso3c)) + 
  geom_point() + 
  geom_line() + 
  labs(title="Población de 65 años de edad y más (% del total)", 
       x="AÑO", 
       y="VALOR") +
  theme_minimal()

datos_panel <- pdata.frame(PIB_PANEL, index = c("country","date"))

#Modelo 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 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 Hausman

phtest(modelo_efectos_fijos, modelo_efectos_aleatorios)
## 
##  Hausman Test
## 
## data:  NY.GDP.PCAP.CD ~ date
## chisq = 3.8736e-13, df = 63, p-value = 1
## alternative hypothesis: one model is inconsistent
#El p-value es superior a 0.5, utilizamos el modelo de efectos aleatorios

Aplicación de Shiny (Ejemplo en Clase y Sesión 3 por mesa)

[Dar clic para ir a la app de Shiny] (https://a01252531.shinyapps.io/Act1shiny/)

Actividad Patentes

Importar la Base de datos

#file.choose()
patentes <- read_xls("C:/Users/Adrian Quezada/Downloads/PATENT 3.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)))
##    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 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 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
#2
#Prueba Hausman

phtest(modelo_efectos_fijos, modelo_efectos_aleatorios)
## 
##  Hausman Test
## 
## data:  NY.GDP.PCAP.CD ~ date
## chisq = 3.8736e-13, df = 63, p-value = 1
## alternative hypothesis: one model is inconsistent
#El p-value es superior a 0.5, utilizamos el modelo de efectos aleatorios

3. Prueba de Heterocedasticidad y Autocorrelación Serial

# 3 Prueba de Heterocedasticidad para modelo 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
print("Como el p-value es < 0.05, hay heterocedasticidad en los residuos (Problema detectado)")
## [1] "Como el p-value es < 0.05, hay heterocedasticidad en los residuos (Problema detectado)"
# Prueba de Heterocedasticidad para modelo Efectos Aleatorios
bptest(modelo_efectos_aleatorios_patentes)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo_efectos_aleatorios_patentes
## BP = 617.25, df = 10, p-value < 2.2e-16
print("Como el p-value es < 0.05, hay heterocedasticidad en los residuos (Problema detectado)")
## [1] "Como el p-value es < 0.05, hay heterocedasticidad en los residuos (Problema detectado)"
#Prueba de autocorrelacion 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
print("Como el p-value es < 0.05, hay autocorrelacion en errores (Problema detectado)")
## [1] "Como el p-value es < 0.05, hay autocorrelacion en errores (Problema detectado)"
#Prueba de autocorrelacion Serial para el modelo de efectos aleatorios
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
print("Como el valor es <1.5 hay autocorrelacion Serial positiva significativa")
## [1] "Como el valor es <1.5 hay autocorrelacion Serial positiva significativa"
#Correccion del modelo con errores estandar robustos (Modelo Efectos Fijos)
coeficientes_corregidos_modelo_Fijo <- coeftest(modelo_efectos_fijos_patentes, 
         vcov=vcovHC(modelo_efectos_fijos_patentes, type = "HC0"))
solo_coeficientes <- coeficientes_corregidos_modelo_Fijo [,1]

4. Genera 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)

prediccion <- 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))
print("El valor esoerado de la prediccion es 22, y el resultado fue 4.2, por lo que tenemos una diferencia significativa")
## [1] "El valor esoerado de la prediccion es 22, y el resultado fue 4.2, por lo que tenemos una diferencia significativa"
prediccion
## [1] 4.199779
# El valor esperado de la predicción es 22, y el resultado fue 4.2, por lo que tenemos una diferencia significativa.
LS0tDQp0aXRsZTogIkFjdCBTZXNpb24gMS4gTW9kZWxvIEVjb25vbWV0cmljbyBBMDEyNTI1MzEiDQphdXRob3I6ICJBZHJpYW4gUXVlemFkYSBBMDEyNTI1MzEiDQpkYXRlOiAiMjAyNS0wMi0xMyINCm91dHB1dDogDQogIGh0bWxfZG9jdW1lbnQ6DQogICAgdG9jOiBUUlVFDQogICAgdG9jX2Zsb2F0OiBUUlVFDQogICAgY29kZV9kb3dubG9hZDogVFJVRQ0KICAgIHRoZW1lOiBjZXJ1bGVhbg0KLS0tDQoNCiFbXShDOi9Vc2Vycy9BZHJpYW4lMjBRdWV6YWRhL0Rvd25sb2Fkcy9wYXRlbnRnaWYuZ2lmKQ0KDQpgYGB7cn0NCiNpbnN0YWxsLnBhY2thZ2VzKCJXREkiKQ0KI2luc3RhbGwucGFja2FnZXMoIndic3RhdHMiKQ0KI2luc3RhbGwucGFja2FnZXMoInRpZHl2ZXJzZSIpDQojaW5zdGFsbC5wYWNrYWdlcygic2hpbnkiKQ0KI2luc3RhbGwucGFja2FnZXMoInBsbSIpDQojaW5zdGFsbC5wYWNrYWdlcyhwZ2xtKQ0KI2luc3RhbGwucGFja2FnZXMobG10ZXN0KQ0KYGBgDQoNCmBgYHtyfQ0KbGlicmFyeShXREkpDQpsaWJyYXJ5KHdic3RhdHMpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkoc2hpbnkpDQpsaWJyYXJ5KGdwbG90cykNCmxpYnJhcnkocGxtKQ0KbGlicmFyeShyZWFkeGwpDQpsaWJyYXJ5KGxtdGVzdCkNCg0KYGBgDQoNCmBgYHtyfQ0KUElCX01FWCA8LSB3Yl9kYXRhKGNvdW50cnkgPSAiTVgiLCBpbmRpY2F0b3IgPSAiTlkuR0RQLlBDQVAuQ0QiLA0KICAgICAgICAgICAgICAgICAgIHN0YXJ0X2RhdGUgPSAxOTAwICwgZW5kX2RhdGUgPSAyMDI1KQ0KDQpzdW1tYXJ5KFBJQl9NRVgpDQoNCmBgYA0KDQpgYGB7cn0NCg0KDQpnZ3Bsb3QoUElCX01FWCwgYWVzKHg9ZGF0ZSwgeT1OWS5HRFAuUENBUC5DRCwgY29sb3I9aXNvM2MpKSArIA0KICBnZW9tX3BvaW50KCkgKyANCiAgZ2VvbV9saW5lKCkgKyANCiAgbGFicyh0aXRsZT0iUElCIHBlciBjYXBpdGEgZW4gTWV4aWNvIChDdXJyZW50IFVTRCQpIiwgDQogICAgICAgeD0iQcORTyIsIA0KICAgICAgIHk9IlZBTE9SIikgKw0KICB0aGVtZV9taW5pbWFsKCkNCmBgYA0KDQpgYGB7cn0NClBJQl9QQU5FTCA8LSB3Yl9kYXRhKGNvdW50cnkgPSBjKCJNWCIsIlVTIiwiQ0EiKSwgaW5kaWNhdG9yID0gIk5ZLkdEUC5QQ0FQLkNEIiwgDQogICAgICAgICAgICAgICAgICAgICBzdGFydF9kYXRlID0gMTkwMCAsIGVuZF9kYXRlID0gMjAyNSkNCg0Kc3VtbWFyeShQSUJfUEFORUwpDQoNCmdncGxvdChQSUJfUEFORUwsIGFlcyh4PWRhdGUsIHk9TlkuR0RQLlBDQVAuQ0QsIGNvbG9yPWlzbzNjKSkgKyANCiAgZ2VvbV9wb2ludCgpICsgDQogIGdlb21fbGluZSgpICsgDQogIGxhYnModGl0bGU9IlBJQiBwZXIgY2FwaXRhIGVuIE5vcnRlYW3DqXJpY2EgKEN1cnJlbnQgVVNEJCkiLCANCiAgICAgICB4PSJBw5FPIiwgDQogICAgICAgeT0iVkFMT1IiKSArDQogIHRoZW1lX21pbmltYWwoKQ0KYGBgDQoNCmBgYHtyfQ0KTUVHQVBJQiA8LSB3Yl9kYXRhKGNvdW50cnkgPSBjKCJNWCIsICJVUyIsICJDQSIpLCBpbmRpY2F0b3IgPSBjKCJOWS5HRFAuUENBUC5DRCIsIlNQLkRZTi5MRTAwLklOIiksDQogICAgICAgICAgICAgICAgICAgc3RhcnRfZGF0ZT0xOTAwLCBlbmRfZGF0ZT0yMDI1KQ0KDQpzdW1tYXJ5KE1FR0FQSUIpDQpgYGANCg0KYGBge3J9DQoNCg0KDQoNCnBsb3RtZWFucyhOWS5HRFAuUENBUC5DRCB+IGNvdW50cnksIG1haW4gPSAiSGV0ZXJvZ2VuZWlkYWQgZW50cmUgcGFpc2VzIiwgeGxhYiA9ICJQYcOtcyIsIHlsYWIgPSAiUElCIHBlciBDw6FwaXRhIiAsZGF0YSA9IE1FR0FQSUIgKQ0KI0FsdGEgaGV0ZXJvZ2VuZWlkYWQ6IFNpIGxvcyBwdW50b3MgKG1lZGlhcykgZXN0YW4gbXV5IHNlcGFyYWRvcyBlbnRyZSBwYcOtc2VzDQojQmFqYSBoZXRlcm9nZW5laWRhZDogU2kgbG9zIHB1bnRvcyAobWVkaWFzKSBlc3RhbiBjZXJjYSB1bm9zIGRlIGxvcyBvdHJvcy4NCiNFbiBlc3RlIGNhc28sIEVVQSB5IENhbmFkYSB0aWVuZW4gdW4gUElCIHBlciBDw6FwaXRhIG1heW9yIHF1ZSBNw6l4aWNvLCBtb3N0cmFuZG8gYWx0YSBoZXRlcm9nZW5laWRhZCBlbnRyZSBsb3MgcGFpc2VzLg0KYGBgDQoNCmBgYHtyfQ0KDQoNCkNhbWFzX1BBTkVMIDwtIHdiX2RhdGEoY291bnRyeSA9IGMoIk1YIiwiVVMiLCJDQSIpLCBpbmRpY2F0b3IgPSAiU0guTUVELkJFRFMuWlMiLCBzdGFydF9kYXRlID0gMTkwMCAsIGVuZF9kYXRlID0gMjAyNSkNCg0Kc3VtbWFyeShDYW1hc19QQU5FTCkNCg0KZ2dwbG90KENhbWFzX1BBTkVMLCBhZXMoeD1kYXRlLCB5PVNILk1FRC5CRURTLlpTLCBjb2xvcj1pc28zYykpICsgDQogIGdlb21fcG9pbnQoKSArIA0KICBnZW9tX2xpbmUoKSArIA0KICBsYWJzKHRpdGxlPSJDYW1hcyBob3NwaXRhbGFyaWFzIChwb3IgY2FkYSAxLjAwMCBwZXJzb25hcykiLCANCiAgICAgICB4PSJBw5FPIiwgDQogICAgICAgeT0iVkFMT1IiKSArDQogIHRoZW1lX21pbmltYWwoKQ0KYGBgDQoNCmBgYHtyfQ0KTW9ydGFsaWRhZF9QQU5FTCA8LSB3Yl9kYXRhKGNvdW50cnkgPSBjKCJNWCIsIlVTIiwiQ0EiKSwgaW5kaWNhdG9yID0gIlNQLkRZTi5DRFJULklOIiwgc3RhcnRfZGF0ZSA9IDE5MDAgLCBlbmRfZGF0ZSA9IDIwMjUpDQoNCnN1bW1hcnkoTW9ydGFsaWRhZF9QQU5FTCkNCg0KZ2dwbG90KE1vcnRhbGlkYWRfUEFORUwsIGFlcyh4PWRhdGUsIHk9U1AuRFlOLkNEUlQuSU4sIGNvbG9yPWlzbzNjKSkgKyANCiAgZ2VvbV9wb2ludCgpICsgDQogIGdlb21fbGluZSgpICsgDQogIGxhYnModGl0bGU9IlRhc2EgZGUgbW9ydGFsaWRhZCwgYnJ1dGEgKHBvciBjYWRhIDEuMDAwIHBlcnNvbmFzKSIsIA0KICAgICAgIHg9IkHDkU8iLCANCiAgICAgICB5PSJWQUxPUiIpICsNCiAgdGhlbWVfbWluaW1hbCgpDQpgYGANCg0KYGBge3J9DQoNClBCTDY1X1BBTkVMIDwtIHdiX2RhdGEoY291bnRyeSA9IGMoIk1YIiwiVVMiLCJDQSIpLCBpbmRpY2F0b3IgPSAiU1AuUE9QLjY1VVAuVE8uWlMiLCBzdGFydF9kYXRlID0gMTkwMCAsIGVuZF9kYXRlID0gMjAyNSkNCg0Kc3VtbWFyeShQQkw2NV9QQU5FTCkNCg0KZ2dwbG90KFBCTDY1X1BBTkVMLCBhZXMoeD1kYXRlLCB5PVNQLlBPUC42NVVQLlRPLlpTLCBjb2xvcj1pc28zYykpICsgDQogIGdlb21fcG9pbnQoKSArIA0KICBnZW9tX2xpbmUoKSArIA0KICBsYWJzKHRpdGxlPSJQb2JsYWNpw7NuIGRlIDY1IGHDsW9zIGRlIGVkYWQgeSBtw6FzICglIGRlbCB0b3RhbCkiLCANCiAgICAgICB4PSJBw5FPIiwgDQogICAgICAgeT0iVkFMT1IiKSArDQogIHRoZW1lX21pbmltYWwoKQ0KYGBgDQoNCmBgYHtyfQ0KDQoNCmRhdG9zX3BhbmVsIDwtIHBkYXRhLmZyYW1lKFBJQl9QQU5FTCwgaW5kZXggPSBjKCJjb3VudHJ5IiwiZGF0ZSIpKQ0KDQojTW9kZWxvIEVmZWN0b3MgRmlqb3MNCg0KbW9kZWxvX2VmZWN0b3NfZmlqb3MgPC0gcGxtKE5ZLkdEUC5QQ0FQLkNEIH4gZGF0ZSwgZGF0YT1kYXRvc19wYW5lbCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbCA9ICJ3aXRoaW4iKQ0KDQpzdW1tYXJ5KG1vZGVsb19lZmVjdG9zX2Zpam9zKQ0KYGBgDQoNCmBgYHtyfQ0KI01vZGVsbyBFZmVjdG9zIEFsZWF0b3Jpb3MNCg0KbW9kZWxvX2VmZWN0b3NfYWxlYXRvcmlvcyA8LSBwbG0oTlkuR0RQLlBDQVAuQ0QgfiBkYXRlLCBkYXRhPWRhdG9zX3BhbmVsLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsID0gInJhbmRvbSIpDQpzdW1tYXJ5KG1vZGVsb19lZmVjdG9zX2FsZWF0b3Jpb3MpDQpgYGANCg0KYGBge3J9DQojUHJ1ZWJhIEhhdXNtYW4NCg0KcGh0ZXN0KG1vZGVsb19lZmVjdG9zX2Zpam9zLCBtb2RlbG9fZWZlY3Rvc19hbGVhdG9yaW9zKQ0KDQoNCiNFbCBwLXZhbHVlIGVzIHN1cGVyaW9yIGEgMC41LCB1dGlsaXphbW9zIGVsIG1vZGVsbyBkZSBlZmVjdG9zIGFsZWF0b3Jpb3MNCg0KDQpgYGANCg0KIyMgQXBsaWNhY2nDs24gZGUgU2hpbnkgKEVqZW1wbG8gZW4gQ2xhc2UgeSBTZXNpw7NuIDMgcG9yIG1lc2EpDQoNCltEYXIgY2xpYyBwYXJhIGlyIGEgbGEgYXBwIGRlIFNoaW55XSAoPGh0dHBzOi8vYTAxMjUyNTMxLnNoaW55YXBwcy5pby9BY3Qxc2hpbnkvPikNCg0KIyMgQWN0aXZpZGFkIFBhdGVudGVzDQoNCiMjIEltcG9ydGFyIGxhIEJhc2UgZGUgZGF0b3MNCg0KYGBge3J9DQojZmlsZS5jaG9vc2UoKQ0KcGF0ZW50ZXMgPC0gcmVhZF94bHMoIkM6L1VzZXJzL0FkcmlhbiBRdWV6YWRhL0Rvd25sb2Fkcy9QQVRFTlQgMy54bHMiKQ0KDQpgYGANCg0KIyMgRW50ZW5kZXIgbGEgQmFzZSBkZSBEYXRvcw0KDQpgYGB7cn0NCnN1bW1hcnkocGF0ZW50ZXMpDQpzdW0oaXMubmEocGF0ZW50ZXMpKQ0Kc2FwcGx5KHBhdGVudGVzLCBmdW5jdGlvbih4KSBzdW0oaXMubmEoeCkpKQ0KcGF0ZW50ZXMxIDwtIG5hLm9taXQocGF0ZW50ZXMpDQoNCmBgYA0KDQojIyAxLiBDb250cnVjY2nDs24gZGVsIG1vZGVsbyBkZSBkYXRvcyBlbiBwYW5lbA0KDQpgYGB7cn0NCg0KcGFuZWxfcGF0ZW50ZXMgPC0gcGRhdGEuZnJhbWUocGF0ZW50ZXMxLCBpbmRleCA9IGMoImN1c2lwIiwgInllYXIiKSkNCg0KYGBgDQoNCiMjIDIuIE1vZGVsbyBkZSBFZmVjdG9zIGZpam9zIHkgQWxlYXRvcmlvcw0KDQpgYGB7cn0NCg0KI01vZGVsbyBFZmVjdG9zIEZpam9zDQoNCm1vZGVsb19lZmVjdG9zX2Zpam9zX3BhdGVudGVzIDwtIHBsbShwYXRlbnRzIH4gbWVyZ2VyICsgZW1wbG95ICsgcmV0dXJuICsgcGF0ZW50c2cgK3N0Y2twciArIHJuZCArIHJuZGVmbHQgKyBybmRzdGNrICsgc2FsZXMgKyBzaWMsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9cGFuZWxfcGF0ZW50ZXMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWwgPSAid2l0aGluIikNCg0Kc3VtbWFyeShtb2RlbG9fZWZlY3Rvc19maWpvc19wYXRlbnRlcykNCmBgYA0KDQpgYGB7cn0NCiNNb2RlbG8gRWZlY3RvcyBBbGVhdG9yaW9zDQoNCm1vZGVsb19lZmVjdG9zX2FsZWF0b3Jpb3NfcGF0ZW50ZXMgPC0gcGxtKHBhdGVudHMgfiBtZXJnZXIgKyBlbXBsb3kgKyByZXR1cm4gKyBwYXRlbnRzZyArc3Rja3ByICsgcm5kICsgcm5kZWZsdCArIHJuZHN0Y2sgKyBzYWxlcyArIHNpYywgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1wYW5lbF9wYXRlbnRlcywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbCA9ICJyYW5kb20iKQ0Kc3VtbWFyeShtb2RlbG9fZWZlY3Rvc19hbGVhdG9yaW9zX3BhdGVudGVzKQ0KYGBgDQoNCmBgYHtyfQ0KDQojMg0KI1BydWViYSBIYXVzbWFuDQoNCnBodGVzdChtb2RlbG9fZWZlY3Rvc19maWpvcywgbW9kZWxvX2VmZWN0b3NfYWxlYXRvcmlvcykNCg0KDQojRWwgcC12YWx1ZSBlcyBzdXBlcmlvciBhIDAuNSwgdXRpbGl6YW1vcyBlbCBtb2RlbG8gZGUgZWZlY3RvcyBhbGVhdG9yaW9zDQpgYGANCg0KIyMgMy4gUHJ1ZWJhIGRlIEhldGVyb2NlZGFzdGljaWRhZCB5IEF1dG9jb3JyZWxhY2nDs24gU2VyaWFsDQoNCmBgYHtyfQ0KIyAzIFBydWViYSBkZSBIZXRlcm9jZWRhc3RpY2lkYWQgcGFyYSBtb2RlbG8gRWZlY3RvcyBGaWpvcw0KDQpicHRlc3QobW9kZWxvX2VmZWN0b3NfZmlqb3NfcGF0ZW50ZXMpDQpwcmludCgiQ29tbyBlbCBwLXZhbHVlIGVzIDwgMC4wNSwgaGF5IGhldGVyb2NlZGFzdGljaWRhZCBlbiBsb3MgcmVzaWR1b3MgKFByb2JsZW1hIGRldGVjdGFkbykiKQ0KDQoNCg0KDQojIFBydWViYSBkZSBIZXRlcm9jZWRhc3RpY2lkYWQgcGFyYSBtb2RlbG8gRWZlY3RvcyBBbGVhdG9yaW9zDQpicHRlc3QobW9kZWxvX2VmZWN0b3NfYWxlYXRvcmlvc19wYXRlbnRlcykNCnByaW50KCJDb21vIGVsIHAtdmFsdWUgZXMgPCAwLjA1LCBoYXkgaGV0ZXJvY2VkYXN0aWNpZGFkIGVuIGxvcyByZXNpZHVvcyAoUHJvYmxlbWEgZGV0ZWN0YWRvKSIpDQoNCg0KDQoNCg0KDQojUHJ1ZWJhIGRlIGF1dG9jb3JyZWxhY2lvbiBTZXJpYWwgcGFyYSBlbCBtb2RlbG8gZGUgZWZlY3RvcyBmaWpvcw0KcHdhcnRlc3QobW9kZWxvX2VmZWN0b3NfZmlqb3NfcGF0ZW50ZXMpDQpwcmludCgiQ29tbyBlbCBwLXZhbHVlIGVzIDwgMC4wNSwgaGF5IGF1dG9jb3JyZWxhY2lvbiBlbiBlcnJvcmVzIChQcm9ibGVtYSBkZXRlY3RhZG8pIikNCg0KDQoNCg0KDQoNCiNQcnVlYmEgZGUgYXV0b2NvcnJlbGFjaW9uIFNlcmlhbCBwYXJhIGVsIG1vZGVsbyBkZSBlZmVjdG9zIGFsZWF0b3Jpb3MNCnBibmZ0ZXN0KG1vZGVsb19lZmVjdG9zX2FsZWF0b3Jpb3NfcGF0ZW50ZXMpDQpwcmludCgiQ29tbyBlbCB2YWxvciBlcyA8MS41IGhheSBhdXRvY29ycmVsYWNpb24gU2VyaWFsIHBvc2l0aXZhIHNpZ25pZmljYXRpdmEiKQ0KDQoNCg0KI0NvcnJlY2Npb24gZGVsIG1vZGVsbyBjb24gZXJyb3JlcyBlc3RhbmRhciByb2J1c3RvcyAoTW9kZWxvIEVmZWN0b3MgRmlqb3MpDQpjb2VmaWNpZW50ZXNfY29ycmVnaWRvc19tb2RlbG9fRmlqbyA8LSBjb2VmdGVzdChtb2RlbG9fZWZlY3Rvc19maWpvc19wYXRlbnRlcywgDQogICAgICAgICB2Y292PXZjb3ZIQyhtb2RlbG9fZWZlY3Rvc19maWpvc19wYXRlbnRlcywgdHlwZSA9ICJIQzAiKSkNCnNvbG9fY29lZmljaWVudGVzIDwtIGNvZWZpY2llbnRlc19jb3JyZWdpZG9zX21vZGVsb19GaWpvIFssMV0NCg0KDQoNCg0KYGBgDQoNCiMjIDQuIEdlbmVyYSBQcm9ub3N0aWNvcyB5IGV2YWx1YXIgbW9kZWxvDQoNCmBgYHtyfQ0KDQpkYXRvc19kZV9wcnVlYmEgPC0gZGF0YS5mcmFtZShtZXJnZXIgPSAwLCAgZW1wbG95ID0gMTAsICByZXR1cm4gPSA2LCAgcGF0ZW50c2cgPSAyNCwgIHN0Y2twciA9IDQ4LCAgcm5kID0gMywgIHJuZGVmbHQgPSAzLCAgcm5kc3RjayA9IDE2LCAgc2FsZXMgPSAzNDQpDQoNCnByZWRpY2Npb24gPC0gc3VtKHNvbG9fY29lZmljaWVudGVzKmMoZGF0b3NfZGVfcHJ1ZWJhJG1lcmdlciwgZGF0b3NfZGVfcHJ1ZWJhJGVtcGxveSwgZGF0b3NfZGVfcHJ1ZWJhJHJldHVybiwgZGF0b3NfZGVfcHJ1ZWJhJHBhdGVudHNnLCBkYXRvc19kZV9wcnVlYmEkc3Rja3ByLCBkYXRvc19kZV9wcnVlYmEkcm5kLCBkYXRvc19kZV9wcnVlYmEkcm5kZWZsdCwgZGF0b3NfZGVfcHJ1ZWJhJHJuZHN0Y2ssIGRhdG9zX2RlX3BydWViYSRzYWxlcykpDQpwcmludCgiRWwgdmFsb3IgZXNvZXJhZG8gZGUgbGEgcHJlZGljY2lvbiBlcyAyMiwgeSBlbCByZXN1bHRhZG8gZnVlIDQuMiwgcG9yIGxvIHF1ZSB0ZW5lbW9zIHVuYSBkaWZlcmVuY2lhIHNpZ25pZmljYXRpdmEiKQ0KDQpwcmVkaWNjaW9uDQoNCmBgYA0KDQpgYGB7cn0NCiMgRWwgdmFsb3IgZXNwZXJhZG8gZGUgbGEgcHJlZGljY2nDs24gZXMgMjIsIHkgZWwgcmVzdWx0YWRvIGZ1ZSA0LjIsIHBvciBsbyBxdWUgdGVuZW1vcyB1bmEgZGlmZXJlbmNpYSBzaWduaWZpY2F0aXZhLg0KYGBgDQo=