Tarea 3. Patentes

2024-02-26

EQUIPO 6

  • Alexa Mariana Marin Villar A00831342

  • Diego Martínez Ruibal A01740559

  • Oscar Emiliano Melendez Chavez A01276802

Importar datos

PATENT_3 <- read_csv("C:/Users/alexa/OneDrive/YO/patents_3.csv")
View(PATENT_3)

La base de datos cuenta con 13 columnas y 2,260 observaciones

Diccionario de variables

  1. cusip: firm identifier

  2. merger: factor = 1 if major merger

  3. employ = employees in 1000s

  4. return = return on stock, %

  5. patents = patents applied for

  6. patentsg =patents granted (variable endógena)

  7. stckpr = price common stock

  8. rnd = R&D expend, current mill $

  9. rndeflt = R&D expend, 1972 mill $

  10. rndstck = stock of R&D

  11. sales = sales, current mill. $

  12. sic = 4 digit industry year = 72 through 81

  13. year = 72 through 81

glimpse(PATENT_3)
## Rows: 2,260
## Columns: 13
## $ cusip    <dbl> 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 4626, 4626,…
## $ merger   <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ employ   <dbl> 10, 12, 12, 12, 13, 13, 14, 14, 13, 12, 5, 6, 7, 6, 5, 6, 6, …
## $ return   <dbl> 6, 6, 4, 5, 5, 5, 5, 5, 4, 5, 5, 7, 5, 6, 5, 5, 7, 8, 6, 5, 2…
## $ patents  <dbl> 22, 34, 31, 32, 40, 60, 57, 77, 38, 5, 7, 7, 5, 3, 3, 3, 0, 9…
## $ patentsg <dbl> 24, 32, 30, 34, 28, 33, 53, 47, 64, 70, 6, 10, 6, 10, 2, 4, 3…
## $ stckpr   <dbl> 48, 58, 33, 38, 35, 34, 31, 34, 46, 41, 17, 13, 7, 8, 10, 13,…
## $ rnd      <dbl> 3, 3, 3, 3, 4, 4, 5, 5, 7, 8, 1, 1, 1, 1, 2, 2, 2, 3, 4, 4, 0…
## $ rndeflt  <dbl> 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 0…
## $ rndstck  <dbl> 16, 17, 20, 22, 23, 25, 27, 30, 34, 38, 5, 5, 6, 7, 8, 9, 11,…
## $ sales    <dbl> 344, 436, 535, 567, 631, 706, 819, 992, 1045, 939, 96, 128, 1…
## $ sic      <dbl> 3740, 3740, 3740, 3740, 3740, 3740, 3740, 3740, 3740, 3740, 3…
## $ year     <dbl> 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2…

Observar valores nulos

#Identificar valores nulos
sum(is.na(PATENT_3))      
## [1] 191
colSums(is.na(PATENT_3))  
##    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
#Visualizacion de valores nulos
vis_miss(PATENT_3)

Existen valores nulos en ciertas variables por lo cual se decidio imputar con mice.

Imputar con mice

PATENT_3 <- mice(PATENT_3, m=2, maxit=1, meth='cart', seed=500)
## 
##  iter imp variable
##   1   1  employ  return  stckpr  rndstck  sales
##   1   2  employ  return  stckpr  rndstck  sales
PATENT_3 <- complete(PATENT_3)
vis_miss(PATENT_3)

Observar tipo de dato

summary(PATENT_3)
##      cusip            merger           employ           return       
##  Min.   :   800   Min.   :0.0000   Min.   :  0.00   Min.   :-73.000  
##  1st Qu.:368514   1st Qu.:0.0000   1st Qu.:  1.00   1st Qu.:  5.000  
##  Median :501116   Median :0.0000   Median :  4.00   Median :  8.000  
##  Mean   :514536   Mean   :0.0177   Mean   : 18.67   Mean   :  8.007  
##  3rd Qu.:754688   3rd Qu.:0.0000   3rd Qu.: 15.00   3rd Qu.: 11.000  
##  Max.   :878555   Max.   :1.0000   Max.   :507.00   Max.   : 49.000  
##     patents         patentsg           stckpr            rnd         
##  Min.   :  0.0   Min.   :   0.00   Min.   :  0.00   Min.   :   0.00  
##  1st Qu.:  1.0   1st Qu.:   1.00   1st Qu.:  8.00   1st Qu.:   1.00  
##  Median :  3.0   Median :   4.00   Median : 16.50   Median :   2.00  
##  Mean   : 22.9   Mean   :  27.14   Mean   : 22.66   Mean   :  29.32  
##  3rd Qu.: 15.0   3rd Qu.:  19.00   3rd Qu.: 29.00   3rd Qu.:  12.00  
##  Max.   :906.0   Max.   :1063.00   Max.   :402.00   Max.   :1719.00  
##     rndeflt          rndstck           sales              sic      
##  Min.   :   0.0   Min.   :   0.0   Min.   :    1.0   Min.   :2000  
##  1st Qu.:   0.0   1st Qu.:   5.0   1st Qu.:   53.0   1st Qu.:2890  
##  Median :   1.0   Median :  12.5   Median :  173.5   Median :3531  
##  Mean   :  19.7   Mean   : 153.3   Mean   : 1218.2   Mean   :3333  
##  3rd Qu.:   9.0   3rd Qu.:  65.0   3rd Qu.:  727.5   3rd Qu.:3661  
##  Max.   :1001.0   Max.   :9755.0   Max.   :44224.0   Max.   :9997  
##       year     
##  Min.   :2012  
##  1st Qu.:2014  
##  Median :2016  
##  Mean   :2016  
##  3rd Qu.:2019  
##  Max.   :2021

Cambiar tipo de dato

PATENT_3$merger <- as.factor(PATENT_3$merger)
PATENT_3$sic <- as.factor(PATENT_3$sic)
PATENT_3$cusip <- as.factor(PATENT_3$cusip)
PATENT_3$employ <- as.numeric(PATENT_3$employ)
glimpse(PATENT_3)
## Rows: 2,260
## Columns: 13
## $ cusip    <fct> 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 4626, 4626,…
## $ merger   <fct> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ employ   <dbl> 10, 12, 12, 12, 13, 13, 14, 14, 13, 12, 5, 6, 7, 6, 5, 6, 6, …
## $ return   <dbl> 6, 6, 4, 5, 5, 5, 5, 5, 4, 5, 5, 7, 5, 6, 5, 5, 7, 8, 6, 5, 2…
## $ patents  <dbl> 22, 34, 31, 32, 40, 60, 57, 77, 38, 5, 7, 7, 5, 3, 3, 3, 0, 9…
## $ patentsg <dbl> 24, 32, 30, 34, 28, 33, 53, 47, 64, 70, 6, 10, 6, 10, 2, 4, 3…
## $ stckpr   <dbl> 48, 58, 33, 38, 35, 34, 31, 34, 46, 41, 17, 13, 7, 8, 10, 13,…
## $ rnd      <dbl> 3, 3, 3, 3, 4, 4, 5, 5, 7, 8, 1, 1, 1, 1, 2, 2, 2, 3, 4, 4, 0…
## $ rndeflt  <dbl> 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 0…
## $ rndstck  <dbl> 16, 17, 20, 22, 23, 25, 27, 30, 34, 38, 5, 5, 6, 7, 8, 9, 11,…
## $ sales    <dbl> 344, 436, 535, 567, 631, 706, 819, 992, 1045, 939, 96, 128, 1…
## $ sic      <fct> 3740, 3740, 3740, 3740, 3740, 3740, 3740, 3740, 3740, 3740, 3…
## $ year     <dbl> 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2…

1.- Construye un modelo de datos en panel

Añadiendo año y numero de empresa como datos en panel

PATENT_3 <- pdata.frame(PATENT_3,index = c("cusip","year"))
View(PATENT_3)

2.- Realiza las pruebas necesarias para detectar posibles errores en tu análisis. Verifica la presencia o ausencia de heterocedasticidad y autocorrelación serial.

#Heterogenidad entre empresas
plotmeans(patentsg ~ cusip, data= PATENT_3, main= " Heterogeneidad entre empresas")

Existe bastante variabildiad en los datos en comparación de las patentes otorgadas en las empresas.

#Heterogenidad entre empresas
plotmeans(patentsg ~ year, data= PATENT_3, main= " Heterogeneidad entre años")

Se observa una tendencia negativa desde el 2015 en las patentes otorgadas al paso de los años.

Seleccionar variables relevantes para el modelo

PATENT_3 <- select(PATENT_3, c(1,3,4,6,7,8,9,10,11,13))
View(PATENT_3)
glimpse(PATENT_3)
## Rows: 2,260
## Columns: 10
## $ cusip    <fct> 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 4626, 4626,…
## $ employ   <pseries> 10, 12, 12, 12, 13, 13, 14, 14, 13, 12, 5, 6, 7, 6, 5, 6,…
## $ return   <pseries> 6, 6, 4, 5, 5, 5, 5, 5, 4, 5, 5, 7, 5, 6, 5, 5, 7, 8, 6, …
## $ patentsg <pseries> 24, 32, 30, 34, 28, 33, 53, 47, 64, 70, 6, 10, 6, 10, 2, …
## $ stckpr   <pseries> 48, 58, 33, 38, 35, 34, 31, 34, 46, 41, 17, 13, 7, 8, 10,…
## $ rnd      <pseries> 3, 3, 3, 3, 4, 4, 5, 5, 7, 8, 1, 1, 1, 1, 2, 2, 2, 3, 4, …
## $ rndeflt  <pseries> 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 1, 1, 1, 1, 1, 1, 2, 2, 2, …
## $ rndstck  <pseries> 16, 17, 20, 22, 23, 25, 27, 30, 34, 38, 5, 5, 6, 7, 8, 9,…
## $ sales    <pseries> 344, 436, 535, 567, 631, 706, 819, 992, 1045, 939, 96, 12…
## $ year     <fct> 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2…

3.- Determina cuál es el modelo apropiado de datos panel para este caso (efectos fijos o efectos aleatorios)

Pregunta clave: ¿Qué factores afectan la cantidad de patentes otorgadas?

Agregar columna de employ para que el modelo no tome la variable como factor.

PATENT_3 <- PATENT_3 %>% 
  mutate(employ_2 = employ * 1)

glimpse(PATENT_3)
## Rows: 2,260
## Columns: 11
## $ cusip    <fct> 800, 800, 800, 800, 800, 800, 800, 800, 800, 800, 4626, 4626,…
## $ employ   <pseries> 10, 12, 12, 12, 13, 13, 14, 14, 13, 12, 5, 6, 7, 6, 5, 6,…
## $ return   <pseries> 6, 6, 4, 5, 5, 5, 5, 5, 4, 5, 5, 7, 5, 6, 5, 5, 7, 8, 6, …
## $ patentsg <pseries> 24, 32, 30, 34, 28, 33, 53, 47, 64, 70, 6, 10, 6, 10, 2, …
## $ stckpr   <pseries> 48, 58, 33, 38, 35, 34, 31, 34, 46, 41, 17, 13, 7, 8, 10,…
## $ rnd      <pseries> 3, 3, 3, 3, 4, 4, 5, 5, 7, 8, 1, 1, 1, 1, 2, 2, 2, 3, 4, …
## $ rndeflt  <pseries> 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 1, 1, 1, 1, 1, 1, 2, 2, 2, …
## $ rndstck  <pseries> 16, 17, 20, 22, 23, 25, 27, 30, 34, 38, 5, 5, 6, 7, 8, 9,…
## $ sales    <pseries> 344, 436, 535, 567, 631, 706, 819, 992, 1045, 939, 96, 12…
## $ year     <fct> 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2…
## $ employ_2 <pseries> 10, 12, 12, 12, 13, 13, 14, 14, 13, 12, 5, 6, 7, 6, 5, 6,…

Verificar correlación entre las variables

library(corrplot)
patent3_cor <- PATENT_3 %>% select (-year,-cusip)
corrplot(cor(patent3_cor),type='upper',order='hclust',addCoef.col='black')

Según el gráfico de correlación, las variables más relacionadas con la variable endógena (patentsg) son sales, employ, rndeflt, rnd y rndstck, y en menor medida, stckpr. De acuerdo con este gráfico,se realizaron distintas pruebas y se eligieron las variables más relevantes para el modelo.

Modelo 1. Regresion agrupada (pooled)

modelo1 <- plm(patentsg ~ rnd + rndstck + stckpr
 + employ_2 + sales  , data = PATENT_3, model = "pooling")
summary(modelo1)
## Pooling Model
## 
## Call:
## plm(formula = patentsg ~ rnd + rndstck + stckpr + employ_2 + 
##     sales, data = PATENT_3, model = "pooling")
## 
## Balanced Panel: n = 226, T = 10, N = 2260
## 
## Residuals:
##      Min.   1st Qu.    Median   3rd Qu.      Max. 
## -344.2625  -10.6528    1.4581    7.9749  541.0940 
## 
## Coefficients:
##                Estimate  Std. Error t-value  Pr(>|t|)    
## (Intercept) -1.0841e+01  1.4279e+00 -7.5926 4.564e-14 ***
## rnd         -5.5142e-01  6.6201e-02 -8.3294 < 2.2e-16 ***
## rndstck      8.3943e-02  1.2190e-02  6.8859 7.418e-12 ***
## stckpr       7.6304e-01  4.4616e-02 17.1024 < 2.2e-16 ***
## employ_2     1.4543e+00  4.5120e-02 32.2312 < 2.2e-16 ***
## sales       -2.6012e-03  5.0729e-04 -5.1276 3.184e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    14168000
## Residual Sum of Squares: 5443200
## R-Squared:      0.6158
## Adj. R-Squared: 0.61495
## F-statistic: 722.561 on 5 and 2254 DF, p-value: < 2.22e-16

Modelo 2. Efectos fijos (within)

modelo1.2 <- plm(patentsg ~ rndstck + rnd
 + employ_2 +sales  , data = PATENT_3, model = "within")
summary(modelo1.2)
## Oneway (individual) effect Within Model
## 
## Call:
## plm(formula = patentsg ~ rndstck + rnd + employ_2 + sales, data = PATENT_3, 
##     model = "within")
## 
## Balanced Panel: n = 226, T = 10, N = 2260
## 
## Residuals:
##       Min.    1st Qu.     Median    3rd Qu.       Max. 
## -220.27281   -1.90765   -0.30664    1.53627  267.96353 
## 
## Coefficients:
##             Estimate  Std. Error t-value  Pr(>|t|)    
## rndstck  -0.01770063  0.00551595 -3.2090  0.001353 ** 
## rnd      -0.04595159  0.03285921 -1.3984  0.162134    
## employ_2 -0.15535677  0.06766362 -2.2960  0.021776 *  
## sales    -0.00162114  0.00035107 -4.6177 4.122e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    715640
## Residual Sum of Squares: 587400
## R-Squared:      0.1792
## Adj. R-Squared: 0.086603
## F-statistic: 110.796 on 4 and 2030 DF, p-value: < 2.22e-16

Prueba pF

pFtest(modelo1.2,modelo1)
## 
##  F test for individual effects
## 
## data:  patentsg ~ rndstck + rnd + employ_2 + sales
## F = 74.917, df1 = 224, df2 = 2030, p-value < 2.2e-16
## alternative hypothesis: significant effects

En este caso, existen diferencias claras entre ambos modelos, por lo cual el modelo pooled es el elegido, ya que tiene una R cuadrada ajustada con un resultado de 0.61495.

Modelo 3. Efectos aleatorios (random) - Metodo walhus

modelo1.3 <- plm(patentsg ~ rndstck
 + employ_2 +sales + return ,
                 data = PATENT_3,
                 model = "random", 
                 random.method = "walhus")
summary(modelo1.3)
## Oneway (individual) effect Random Effect Model 
##    (Wallace-Hussain's transformation)
## 
## Call:
## plm(formula = patentsg ~ rndstck + employ_2 + sales + return, 
##     data = PATENT_3, model = "random", random.method = "walhus")
## 
## Balanced Panel: n = 226, T = 10, N = 2260
## 
## Effects:
##                   var std.dev share
## idiosyncratic  423.37   20.58 0.154
## individual    2320.27   48.17 0.846
## theta: 0.8661
## 
## Residuals:
##       Min.    1st Qu.     Median    3rd Qu.       Max. 
## -148.13707   -3.98856   -2.63183   -0.17916  318.04608 
## 
## Coefficients:
##                Estimate  Std. Error z-value  Pr(>|z|)    
## (Intercept) 18.58788974  3.21731070  5.7775 7.584e-09 ***
## rndstck     -0.01488748  0.00215097 -6.9213 4.476e-12 ***
## employ_2     0.74580257  0.04840702 15.4069 < 2.2e-16 ***
## sales       -0.00294027  0.00036646 -8.0235 1.028e-15 ***
## return       0.06071222  0.09873950  0.6149    0.5386    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    956700
## Residual Sum of Squares: 825730
## R-Squared:      0.13689
## Adj. R-Squared: 0.13536
## Chisq: 357.645 on 4 DF, p-value: < 2.22e-16

Modelo 3.2 Efectos aleatorios (random) - Metodo ameniya

modelo1.4 <- plm(patentsg ~ rnd + sales + employ_2 + stckpr ,
                 data = PATENT_3,
                 model = "random", 
                 random.method = "amemiya")
summary(modelo1.4)
## Oneway (individual) effect Random Effect Model 
##    (Amemiya's transformation)
## 
## Call:
## plm(formula = patentsg ~ rnd + sales + employ_2 + stckpr, data = PATENT_3, 
##     model = "random", random.method = "amemiya")
## 
## Balanced Panel: n = 226, T = 10, N = 2260
## 
## Effects:
##                   var std.dev share
## idiosyncratic  289.82   17.02 0.031
## individual    8911.30   94.40 0.969
## theta: 0.9431
## 
## Residuals:
##       Min.    1st Qu.     Median    3rd Qu.       Max. 
## -175.65467   -3.13535   -1.68380    0.52293  287.54690 
## 
## Coefficients:
##                Estimate  Std. Error  z-value  Pr(>|z|)    
## (Intercept) 26.86830728  6.36545620   4.2210 2.433e-05 ***
## rnd         -0.12634831  0.01203625 -10.4973 < 2.2e-16 ***
## sales       -0.00187386  0.00034705  -5.3994 6.688e-08 ***
## employ_2     0.23128502  0.05536722   4.1773 2.950e-05 ***
## stckpr       0.08543410  0.02615904   3.2659  0.001091 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    759240
## Residual Sum of Squares: 646060
## R-Squared:      0.14907
## Adj. R-Squared: 0.14756
## Chisq: 395.046 on 4 DF, p-value: < 2.22e-16

Modelo 3.3

modelo1.5 <- plm(patentsg ~ rndstck
 + employ_2 +sales + return ,
                 data = PATENT_3,
                 model = "random", 
                 random.method = "nerlove")
summary(modelo1.5)
## Oneway (individual) effect Random Effect Model 
##    (Nerlove's transformation)
## 
## Call:
## plm(formula = patentsg ~ rndstck + employ_2 + sales + return, 
##     data = PATENT_3, model = "random", random.method = "nerlove")
## 
## Balanced Panel: n = 226, T = 10, N = 2260
## 
## Effects:
##                    var  std.dev share
## idiosyncratic   260.16    16.13 0.025
## individual    10206.88   101.03 0.975
## theta: 0.9496
## 
## Residuals:
##       Min.    1st Qu.     Median    3rd Qu.       Max. 
## -179.12092   -3.01478   -1.79495    0.32332  289.26828 
## 
## Coefficients:
##                Estimate  Std. Error  z-value  Pr(>|z|)    
## (Intercept) 31.97458162  7.13256678   4.4829 7.364e-06 ***
## rndstck     -0.02218211  0.00196376 -11.2957 < 2.2e-16 ***
## employ_2     0.05723143  0.05598187   1.0223    0.3066    
## sales       -0.00207946  0.00033252  -6.2536 4.010e-10 ***
## return       0.00327146  0.08753231   0.0374    0.9702    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    749840
## Residual Sum of Squares: 639690
## R-Squared:      0.14689
## Adj. R-Squared: 0.14537
## Chisq: 388.264 on 4 DF, p-value: < 2.22e-16

Prueba de Hausman

phtest(modelo1.4,modelo1)
## 
##  Hausman Test
## 
## data:  patentsg ~ rnd + sales + employ_2 + stckpr
## chisq = 762.49, df = 4, p-value < 2.2e-16
## alternative hypothesis: one model is inconsistent

En este caso, el Modelo 1 del tipo fijo pooled cuenta con un coeficiente de r cuadrada ajustada de 0.61495. mientras que el Modelo 1.4 del tipo aleatorio amemiya tiene un valor de 0.14756 Cabe recalcar que se probo el modelo con distintas variables y en ambos fue el resultado más alto. Como se puede observar existe una gran diferencia entre la variabilidad explicada por el modelo del tipo fijo pooled y el aleatorio amemiya, por lo cual el modelo tipo pooled en este caso es el modelo elegido.

4.- Interpreta los resultados y comenta que tan buenos serían los pronósticos generados con el modelo propuesto:

Test de la presencia o ausencia de heterocedasticidad en el Modelo 1

Hipótesis Nula (H0): Presencia de homocedasticidad Hipótesis Alternativa (H1):Presencia de heterocedasticidad

library(lmtest)
bptest(modelo1)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo1
## BP = 1329.1, df = 5, p-value < 2.2e-16

El valor de p-value es menor a 0.01, por lo cual se rechaza la hipótesis nula de la presencia de homocedasticidad e indica que existe una presencia de heterocedasticidad en el modelo. Esto señala que la varianza de los errores no es constante.

Se investigo más a fondo la presencia de heteroscedasticidad en el modelo y según economipedia

“Las situaciones principales en las que aparecen perturbaciones heterocedásticas son los análisis con datos de corte transversal donde los elementos seleccionados, ya sean empresas, individuos o elementos económicos no tienen un comportamiento homogéneo entre ellos.”

En el caso del análisis de las patentes otorgadas, incluso al tener una base de datos del tipo panel, no existe un comportamiento homogéneo entre las empresas. Esta puede ser una razón por la cual se cuenta con heterocedasticidad dentro del modelo.La heterocedasticidad puede llegar a distorsionar la interpretación de la significancia estadística de los coeficientes, así como sesgar los errores y los intervalos de confianza.

Se decidió interpretar el modelo a pesar de contar con la presencia de heteroscedasdticidad con fines de completar la actividad.

summary(modelo1)
## Pooling Model
## 
## Call:
## plm(formula = patentsg ~ rnd + rndstck + stckpr + employ_2 + 
##     sales, data = PATENT_3, model = "pooling")
## 
## Balanced Panel: n = 226, T = 10, N = 2260
## 
## Residuals:
##      Min.   1st Qu.    Median   3rd Qu.      Max. 
## -344.2625  -10.6528    1.4581    7.9749  541.0940 
## 
## Coefficients:
##                Estimate  Std. Error t-value  Pr(>|t|)    
## (Intercept) -1.0841e+01  1.4279e+00 -7.5926 4.564e-14 ***
## rnd         -5.5142e-01  6.6201e-02 -8.3294 < 2.2e-16 ***
## rndstck      8.3943e-02  1.2190e-02  6.8859 7.418e-12 ***
## stckpr       7.6304e-01  4.4616e-02 17.1024 < 2.2e-16 ***
## employ_2     1.4543e+00  4.5120e-02 32.2312 < 2.2e-16 ***
## sales       -2.6012e-03  5.0729e-04 -5.1276 3.184e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    14168000
## Residual Sum of Squares: 5443200
## R-Squared:      0.6158
## Adj. R-Squared: 0.61495
## F-statistic: 722.561 on 5 and 2254 DF, p-value: < 2.22e-16

En el modelo elegido las 5 variables rnd,rndstck,stckpr,employ_2 y sales son estadisticamente significativas con un 99% se confianza lo que indica que tienen un impacto significativo en la cantidad de patentes otorgadas.

LS0tDQp0aXRsZTogIlRhcmVhIDMuIFBhdGVudGVzIg0KZGF0ZTogImByIFN5cy5EYXRlKClgIg0Kb3V0cHV0Og0KICBybWRmb3JtYXRzOjpkb3duY3V0ZToNCiAgICBzZWxmX2NvbnRhaW5lZDogdHJ1ZQ0KICAgIGRlZmF1bHRfc3R5bGU6ICJsaWdodCINCiAgICBkb3duY3V0ZV90aGVtZTogImRlZmF1bHQiDQogICAgY29kZV9kb3dubG9hZCA6IHRydWUNCmVkaXRvcl9vcHRpb25zOiANCiAgbWFya2Rvd246IA0KICAgIHdyYXA6IDcyDQotLS0NCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoY2FjaGUgPSBUUlVFLGVjaG8gPSBUUlVFLHdhcm5pbmcgPSBGQUxTRSxtZXNzYWdlID0gRkFMU0UpDQpgYGANCg0KIVtdKGdpcGh5LmdpZil7d2lkdGg9IjM0OSJ9DQoNCmBgYHtyLGluY2x1ZGU9RkFMU0V9DQojTGlicmVyaWFzDQpsaWJyYXJ5KHJlYWRyKQ0KbGlicmFyeSh2aXNkYXQpDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShtaWNlKQ0KbGlicmFyeSh2aXNkYXQpDQpsaWJyYXJ5KFdESSkNCmxpYnJhcnkod2JzdGF0cykNCmxpYnJhcnkodGlkeXZlcnNlKSAjI2xpbXBpYSBkZSBkYXRvcyBpbmNsdXllIGRwbHlyIHl0aWR5aXINCmxpYnJhcnkoZ3Bsb3RzKQ0KbGlicmFyeShwbG0pDQpsaWJyYXJ5KGp0b29scykgICAgICAgIyBwcmVzZW50YXRpb24gb2YgcmVncmVzc2lvbiBhbmFseXNpcyANCmxpYnJhcnkobG10ZXN0KSAgICAgICAjIGRpYWdub3N0aWMgY2hlY2tzIC0gbGluZWFyIHJlZ3Jlc3Npb24gYW5hbHlzaXMgDQpsaWJyYXJ5KGNhcikgICAgICAgICAgIyBkaWFnbm9zdGljIGNoZWNrcyAtIGxpbmVhciByZWdyZXNzaW9uIGFuYWx5c2lzDQpsaWJyYXJ5KG9sc3JyKQ0KYGBgDQoNCioqRVFVSVBPIDYqKg0KDQotICAgQWxleGEgTWFyaWFuYSBNYXJpbiBWaWxsYXIgQTAwODMxMzQyDQoNCi0gICBEaWVnbyBNYXJ0w61uZXogUnVpYmFsIEEwMTc0MDU1OQ0KDQotICAgT3NjYXIgRW1pbGlhbm8gTWVsZW5kZXogQ2hhdmV6IEEwMTI3NjgwMg0KDQojICoqSW1wb3J0YXIgZGF0b3MqKg0KDQpgYGB7cn0NClBBVEVOVF8zIDwtIHJlYWRfY3N2KCJDOi9Vc2Vycy9hbGV4YS9PbmVEcml2ZS9ZTy9wYXRlbnRzXzMuY3N2IikNClZpZXcoUEFURU5UXzMpDQoNCmBgYA0KDQpMYSBiYXNlIGRlIGRhdG9zIGN1ZW50YSBjb24gMTMgY29sdW1uYXMgeSAyLDI2MCBvYnNlcnZhY2lvbmVzDQoNCiMjIyAqKipEaWNjaW9uYXJpbyBkZSB2YXJpYWJsZXMqKioNCg0KMS4gIGN1c2lwOiBmaXJtIGlkZW50aWZpZXINCg0KMi4gIG1lcmdlcjogZmFjdG9yID0gMSBpZiBtYWpvciBtZXJnZXINCg0KMy4gIGVtcGxveSA9IGVtcGxveWVlcyBpbiAxMDAwcw0KDQo0LiAgcmV0dXJuID0gcmV0dXJuIG9uIHN0b2NrLCAlDQoNCjUuICBwYXRlbnRzID0gcGF0ZW50cyBhcHBsaWVkIGZvcg0KDQo2LiAgKipwYXRlbnRzZyoqID1wYXRlbnRzIGdyYW50ZWQgKHZhcmlhYmxlIGVuZMOzZ2VuYSkNCg0KNy4gIHN0Y2twciA9IHByaWNlIGNvbW1vbiBzdG9jaw0KDQo4LiAgcm5kID0gUiZEIGV4cGVuZCwgY3VycmVudCBtaWxsIFwkDQoNCjkuICBybmRlZmx0ID0gUiZEIGV4cGVuZCwgMTk3MiBtaWxsIFwkDQoNCjEwLiBybmRzdGNrID0gc3RvY2sgb2YgUiZEDQoNCjExLiBzYWxlcyA9IHNhbGVzLCBjdXJyZW50IG1pbGwuIFwkDQoNCjEyLiBzaWMgPSA0IGRpZ2l0IGluZHVzdHJ5IHllYXIgPSA3MiB0aHJvdWdoIDgxDQoNCjEzLiB5ZWFyID0gNzIgdGhyb3VnaCA4MQ0KDQpgYGB7cn0NCmdsaW1wc2UoUEFURU5UXzMpDQpgYGANCg0KIyMgKipPYnNlcnZhciB2YWxvcmVzIG51bG9zKioNCg0KYGBge3J9DQojSWRlbnRpZmljYXIgdmFsb3JlcyBudWxvcw0Kc3VtKGlzLm5hKFBBVEVOVF8zKSkgICAgICANCmNvbFN1bXMoaXMubmEoUEFURU5UXzMpKSAgDQojVmlzdWFsaXphY2lvbiBkZSB2YWxvcmVzIG51bG9zDQp2aXNfbWlzcyhQQVRFTlRfMykNCmBgYA0KDQpFeGlzdGVuIHZhbG9yZXMgbnVsb3MgZW4gY2llcnRhcyB2YXJpYWJsZXMgcG9yIGxvIGN1YWwgc2UgZGVjaWRpbw0KaW1wdXRhciBjb24gbWljZS4NCg0KIyMgKipJbXB1dGFyIGNvbiBtaWNlKioNCg0KYGBge3J9DQpQQVRFTlRfMyA8LSBtaWNlKFBBVEVOVF8zLCBtPTIsIG1heGl0PTEsIG1ldGg9J2NhcnQnLCBzZWVkPTUwMCkNClBBVEVOVF8zIDwtIGNvbXBsZXRlKFBBVEVOVF8zKQ0KdmlzX21pc3MoUEFURU5UXzMpDQpgYGANCg0KIyMgKipPYnNlcnZhciB0aXBvIGRlIGRhdG8qKg0KDQpgYGB7cn0NCnN1bW1hcnkoUEFURU5UXzMpDQpgYGANCg0KIyMgKipDYW1iaWFyIHRpcG8gZGUgZGF0byoqDQoNCmBgYHtyfQ0KUEFURU5UXzMkbWVyZ2VyIDwtIGFzLmZhY3RvcihQQVRFTlRfMyRtZXJnZXIpDQpQQVRFTlRfMyRzaWMgPC0gYXMuZmFjdG9yKFBBVEVOVF8zJHNpYykNClBBVEVOVF8zJGN1c2lwIDwtIGFzLmZhY3RvcihQQVRFTlRfMyRjdXNpcCkNClBBVEVOVF8zJGVtcGxveSA8LSBhcy5udW1lcmljKFBBVEVOVF8zJGVtcGxveSkNCmdsaW1wc2UoUEFURU5UXzMpDQoNCmBgYA0KDQojICoqMS4tIENvbnN0cnV5ZSB1biBtb2RlbG8gZGUgZGF0b3MgZW4gcGFuZWwqKg0KDQojIyAqKkHDsWFkaWVuZG8gYcOxbyB5IG51bWVybyBkZSBlbXByZXNhIGNvbW8gZGF0b3MgZW4gcGFuZWwqKg0KDQpgYGB7cn0NClBBVEVOVF8zIDwtIHBkYXRhLmZyYW1lKFBBVEVOVF8zLGluZGV4ID0gYygiY3VzaXAiLCJ5ZWFyIikpDQpWaWV3KFBBVEVOVF8zKQ0KYGBgDQoNCiMjICoqMi4tIFJlYWxpemEgbGFzIHBydWViYXMgbmVjZXNhcmlhcyBwYXJhIGRldGVjdGFyIHBvc2libGVzIGVycm9yZXMgZW4gdHUgYW7DoWxpc2lzLiBWZXJpZmljYSBsYSBwcmVzZW5jaWEgbyBhdXNlbmNpYSBkZSBoZXRlcm9jZWRhc3RpY2lkYWQgeSBhdXRvY29ycmVsYWNpw7NuIHNlcmlhbC4qKg0KDQpgYGB7cixtZXNzYWdlPUZBTFNFLHdhcm5pbmc9RkFMU0V9DQojSGV0ZXJvZ2VuaWRhZCBlbnRyZSBlbXByZXNhcw0KcGxvdG1lYW5zKHBhdGVudHNnIH4gY3VzaXAsIGRhdGE9IFBBVEVOVF8zLCBtYWluPSAiIEhldGVyb2dlbmVpZGFkIGVudHJlIGVtcHJlc2FzIikNCmBgYA0KDQpFeGlzdGUgYmFzdGFudGUgdmFyaWFiaWxkaWFkIGVuIGxvcyBkYXRvcyBlbiBjb21wYXJhY2nDs24gZGUgbGFzIHBhdGVudGVzDQpvdG9yZ2FkYXMgZW4gbGFzIGVtcHJlc2FzLg0KDQpgYGB7cn0NCiNIZXRlcm9nZW5pZGFkIGVudHJlIGVtcHJlc2FzDQpwbG90bWVhbnMocGF0ZW50c2cgfiB5ZWFyLCBkYXRhPSBQQVRFTlRfMywgbWFpbj0gIiBIZXRlcm9nZW5laWRhZCBlbnRyZSBhw7FvcyIpDQoNCmBgYA0KDQpTZSBvYnNlcnZhIHVuYSB0ZW5kZW5jaWEgbmVnYXRpdmEgZGVzZGUgZWwgMjAxNSBlbiBsYXMgcGF0ZW50ZXMNCm90b3JnYWRhcyBhbCBwYXNvIGRlIGxvcyBhw7Fvcy4NCg0KIyMgKipTZWxlY2Npb25hciB2YXJpYWJsZXMgcmVsZXZhbnRlcyBwYXJhIGVsIG1vZGVsbyoqDQoNCmBgYHtyLGluY2x1ZGU9RkFMU0V9DQpQQVRFTlRfMw0KYGBgDQoNCmBgYHtyfQ0KUEFURU5UXzMgPC0gc2VsZWN0KFBBVEVOVF8zLCBjKDEsMyw0LDYsNyw4LDksMTAsMTEsMTMpKQ0KVmlldyhQQVRFTlRfMykNCmdsaW1wc2UoUEFURU5UXzMpDQpgYGANCg0KIyAqKjMuLSBEZXRlcm1pbmEgY3XDoWwgZXMgZWwgbW9kZWxvIGFwcm9waWFkbyBkZSBkYXRvcyBwYW5lbCBwYXJhIGVzdGUgY2FzbyAoZWZlY3RvcyBmaWpvcyBvIGVmZWN0b3MgYWxlYXRvcmlvcykqKg0KDQojIyAqKlByZWd1bnRhIGNsYXZlOiDCv1F1w6kgZmFjdG9yZXMgYWZlY3RhbiBsYSBjYW50aWRhZCBkZSBwYXRlbnRlcyBvdG9yZ2FkYXM/KioNCg0KIyMjICoqQWdyZWdhciBjb2x1bW5hIGRlIGVtcGxveSBwYXJhIHF1ZSBlbCBtb2RlbG8gbm8gdG9tZSBsYSB2YXJpYWJsZSBjb21vIGZhY3Rvci4qKg0KDQpgYGB7cn0NClBBVEVOVF8zIDwtIFBBVEVOVF8zICU+JSANCiAgbXV0YXRlKGVtcGxveV8yID0gZW1wbG95ICogMSkNCg0KZ2xpbXBzZShQQVRFTlRfMykNCmBgYA0KDQojIyAqKlZlcmlmaWNhciBjb3JyZWxhY2nDs24gZW50cmUgbGFzIHZhcmlhYmxlcyoqDQoNCmBgYHtyfQ0KbGlicmFyeShjb3JycGxvdCkNCnBhdGVudDNfY29yIDwtIFBBVEVOVF8zICU+JSBzZWxlY3QgKC15ZWFyLC1jdXNpcCkNCmNvcnJwbG90KGNvcihwYXRlbnQzX2NvciksdHlwZT0ndXBwZXInLG9yZGVyPSdoY2x1c3QnLGFkZENvZWYuY29sPSdibGFjaycpDQpgYGANCg0KU2Vnw7puIGVsIGdyw6FmaWNvIGRlIGNvcnJlbGFjacOzbiwgbGFzIHZhcmlhYmxlcyBtw6FzIHJlbGFjaW9uYWRhcyBjb24gbGENCnZhcmlhYmxlIGVuZMOzZ2VuYSAocGF0ZW50c2cpIHNvbiBzYWxlcywgZW1wbG95LCBybmRlZmx0LCBybmQgeSBybmRzdGNrLA0KeSBlbiBtZW5vciBtZWRpZGEsIHN0Y2twci4gRGUgYWN1ZXJkbyBjb24gZXN0ZSBncsOhZmljbyxzZSByZWFsaXphcm9uDQpkaXN0aW50YXMgcHJ1ZWJhcyB5IHNlIGVsaWdpZXJvbiBsYXMgdmFyaWFibGVzIG3DoXMgcmVsZXZhbnRlcyBwYXJhIGVsDQptb2RlbG8uDQoNCiMjICoqTW9kZWxvIDEuIFJlZ3Jlc2lvbiBhZ3J1cGFkYSAocG9vbGVkKSoqDQoNCmBgYHtyfQ0KbW9kZWxvMSA8LSBwbG0ocGF0ZW50c2cgfiBybmQgKyBybmRzdGNrICsgc3Rja3ByDQogKyBlbXBsb3lfMiArIHNhbGVzICAsIGRhdGEgPSBQQVRFTlRfMywgbW9kZWwgPSAicG9vbGluZyIpDQpzdW1tYXJ5KG1vZGVsbzEpDQpgYGANCg0KIyMgKipNb2RlbG8gMi4gRWZlY3RvcyBmaWpvcyAod2l0aGluKSoqDQoNCmBgYHtyfQ0KbW9kZWxvMS4yIDwtIHBsbShwYXRlbnRzZyB+IHJuZHN0Y2sgKyBybmQNCiArIGVtcGxveV8yICtzYWxlcyAgLCBkYXRhID0gUEFURU5UXzMsIG1vZGVsID0gIndpdGhpbiIpDQpzdW1tYXJ5KG1vZGVsbzEuMikNCmBgYA0KDQojIyAqKlBydWViYSBwRioqDQoNCmBgYHtyfQ0KcEZ0ZXN0KG1vZGVsbzEuMixtb2RlbG8xKQ0KYGBgDQoNCkVuIGVzdGUgY2FzbywgZXhpc3RlbiBkaWZlcmVuY2lhcyBjbGFyYXMgZW50cmUgYW1ib3MgbW9kZWxvcywgcG9yIGxvDQpjdWFsIGVsIG1vZGVsbyBwb29sZWQgZXMgZWwgZWxlZ2lkbywgeWEgcXVlIHRpZW5lIHVuYSBSIGN1YWRyYWRhDQphanVzdGFkYSBjb24gdW4gcmVzdWx0YWRvIGRlIDAuNjE0OTUuDQoNCiMjICoqTW9kZWxvIDMuIEVmZWN0b3MgYWxlYXRvcmlvcyAocmFuZG9tKSAtIE1ldG9kbyB3YWxodXMqKg0KDQpgYGB7cn0NCm1vZGVsbzEuMyA8LSBwbG0ocGF0ZW50c2cgfiBybmRzdGNrDQogKyBlbXBsb3lfMiArc2FsZXMgKyByZXR1cm4gLA0KICAgICAgICAgICAgICAgICBkYXRhID0gUEFURU5UXzMsDQogICAgICAgICAgICAgICAgIG1vZGVsID0gInJhbmRvbSIsIA0KICAgICAgICAgICAgICAgICByYW5kb20ubWV0aG9kID0gIndhbGh1cyIpDQpzdW1tYXJ5KG1vZGVsbzEuMykNCmBgYA0KDQojIyAqKk1vZGVsbyAzLjIgRWZlY3RvcyBhbGVhdG9yaW9zIChyYW5kb20pIC0gTWV0b2RvIGFtZW5peWEqKg0KDQpgYGB7cn0NCm1vZGVsbzEuNCA8LSBwbG0ocGF0ZW50c2cgfiBybmQgKyBzYWxlcyArIGVtcGxveV8yICsgc3Rja3ByICwNCiAgICAgICAgICAgICAgICAgZGF0YSA9IFBBVEVOVF8zLA0KICAgICAgICAgICAgICAgICBtb2RlbCA9ICJyYW5kb20iLCANCiAgICAgICAgICAgICAgICAgcmFuZG9tLm1ldGhvZCA9ICJhbWVtaXlhIikNCnN1bW1hcnkobW9kZWxvMS40KQ0KYGBgDQoNCg0KIyMgKipNb2RlbG8gMy4zKioNCg0KYGBge3J9DQptb2RlbG8xLjUgPC0gcGxtKHBhdGVudHNnIH4gcm5kc3Rjaw0KICsgZW1wbG95XzIgK3NhbGVzICsgcmV0dXJuICwNCiAgICAgICAgICAgICAgICAgZGF0YSA9IFBBVEVOVF8zLA0KICAgICAgICAgICAgICAgICBtb2RlbCA9ICJyYW5kb20iLCANCiAgICAgICAgICAgICAgICAgcmFuZG9tLm1ldGhvZCA9ICJuZXJsb3ZlIikNCnN1bW1hcnkobW9kZWxvMS41KQ0KYGBgDQoNCiMjICoqUHJ1ZWJhIGRlIEhhdXNtYW4qKg0KDQpgYGB7cn0NCnBodGVzdChtb2RlbG8xLjQsbW9kZWxvMSkNCmBgYA0KDQpFbiBlc3RlIGNhc28sIGVsIE1vZGVsbyAxIGRlbCB0aXBvIGZpam8gcG9vbGVkIGN1ZW50YSBjb24gdW4gY29lZmljaWVudGUNCmRlIHIgY3VhZHJhZGEgYWp1c3RhZGEgZGUgMC42MTQ5NS4gbWllbnRyYXMgcXVlIGVsIE1vZGVsbyAxLjQgZGVsIHRpcG8NCmFsZWF0b3JpbyBhbWVtaXlhIHRpZW5lIHVuIHZhbG9yIGRlIDAuMTQ3NTYgQ2FiZSByZWNhbGNhciBxdWUgc2UgcHJvYm8NCmVsIG1vZGVsbyBjb24gZGlzdGludGFzIHZhcmlhYmxlcyB5IGVuIGFtYm9zIGZ1ZSBlbCByZXN1bHRhZG8gbcOhcyBhbHRvLg0KQ29tbyBzZSBwdWVkZSBvYnNlcnZhciBleGlzdGUgdW5hIGdyYW4gZGlmZXJlbmNpYSBlbnRyZSBsYSB2YXJpYWJpbGlkYWQNCmV4cGxpY2FkYSBwb3IgZWwgbW9kZWxvIGRlbCB0aXBvIGZpam8gcG9vbGVkIHkgZWwgYWxlYXRvcmlvIGFtZW1peWEsIHBvcg0KbG8gY3VhbCBlbCBtb2RlbG8gdGlwbyBwb29sZWQgZW4gZXN0ZSBjYXNvIGVzIGVsIG1vZGVsbyBlbGVnaWRvLg0KDQojICoqNC4tIEludGVycHJldGEgbG9zIHJlc3VsdGFkb3MgeSBjb21lbnRhIHF1ZSB0YW4gYnVlbm9zIHNlcsOtYW4gbG9zIHByb27Ds3N0aWNvcyBnZW5lcmFkb3MgY29uIGVsIG1vZGVsbyBwcm9wdWVzdG86KioNCg0KIyMgKipUZXN0IGRlIGxhIHByZXNlbmNpYSBvIGF1c2VuY2lhIGRlIGhldGVyb2NlZGFzdGljaWRhZCBlbiBlbCBNb2RlbG8gMSoqDQoNCkhpcMOzdGVzaXMgTnVsYSAoSDApOiBQcmVzZW5jaWEgZGUgaG9tb2NlZGFzdGljaWRhZCBIaXDDs3Rlc2lzIEFsdGVybmF0aXZhDQooSDEpOlByZXNlbmNpYSBkZSBoZXRlcm9jZWRhc3RpY2lkYWQNCg0KYGBge3J9DQpsaWJyYXJ5KGxtdGVzdCkNCmJwdGVzdChtb2RlbG8xKQ0KYGBgDQoNCkVsIHZhbG9yIGRlIHAtdmFsdWUgZXMgbWVub3IgYSAwLjAxLCBwb3IgbG8gY3VhbCBzZSByZWNoYXphIGxhIGhpcMOzdGVzaXMNCm51bGEgZGUgbGEgcHJlc2VuY2lhIGRlIGhvbW9jZWRhc3RpY2lkYWQgZSBpbmRpY2EgcXVlIGV4aXN0ZSB1bmENCnByZXNlbmNpYSBkZSBoZXRlcm9jZWRhc3RpY2lkYWQgZW4gZWwgbW9kZWxvLiBFc3RvIHNlw7FhbGEgcXVlIGxhDQp2YXJpYW56YSBkZSBsb3MgZXJyb3JlcyBubyBlcyBjb25zdGFudGUuDQoNClNlIGludmVzdGlnbyBtw6FzIGEgZm9uZG8gbGEgcHJlc2VuY2lhIGRlIGhldGVyb3NjZWRhc3RpY2lkYWQgZW4gZWwNCm1vZGVsbyB5IHNlZ8O6bg0KWyoqZWNvbm9taXBlZGlhKipdKGh0dHBzOi8vZWNvbm9taXBlZGlhLmNvbS9kZWZpbmljaW9uZXMvaGV0ZXJvY2VkYXN0aWNpZGFkLmh0bWwpDQoNCiJMYXMgc2l0dWFjaW9uZXMgcHJpbmNpcGFsZXMgZW4gbGFzIHF1ZSBhcGFyZWNlbiBwZXJ0dXJiYWNpb25lcw0KaGV0ZXJvY2Vkw6FzdGljYXMgc29uIGxvcyBhbsOhbGlzaXMgY29uIGRhdG9zIGRlIGNvcnRlIHRyYW5zdmVyc2FsIGRvbmRlDQpsb3MgZWxlbWVudG9zIHNlbGVjY2lvbmFkb3MsIHlhIHNlYW4gZW1wcmVzYXMsIGluZGl2aWR1b3MgbyBlbGVtZW50b3MNCmVjb27Ds21pY29zIG5vIHRpZW5lbiB1biBjb21wb3J0YW1pZW50byBob21vZ8OpbmVvIGVudHJlIGVsbG9zLiINCg0KRW4gZWwgY2FzbyBkZWwgYW7DoWxpc2lzIGRlIGxhcyBwYXRlbnRlcyBvdG9yZ2FkYXMsIGluY2x1c28gYWwgdGVuZXIgdW5hDQpiYXNlIGRlIGRhdG9zIGRlbCB0aXBvIHBhbmVsLCBubyBleGlzdGUgdW4gY29tcG9ydGFtaWVudG8gaG9tb2fDqW5lbw0KZW50cmUgbGFzIGVtcHJlc2FzLiBFc3RhIHB1ZWRlIHNlciB1bmEgcmF6w7NuIHBvciBsYSBjdWFsIHNlIGN1ZW50YSBjb24NCmhldGVyb2NlZGFzdGljaWRhZCBkZW50cm8gZGVsIG1vZGVsby5MYSBoZXRlcm9jZWRhc3RpY2lkYWQgcHVlZGUgbGxlZ2FyDQphIGRpc3RvcnNpb25hciBsYSBpbnRlcnByZXRhY2nDs24gZGUgbGEgc2lnbmlmaWNhbmNpYSBlc3RhZMOtc3RpY2EgZGUgbG9zDQpjb2VmaWNpZW50ZXMsIGFzw60gY29tbyBzZXNnYXIgbG9zIGVycm9yZXMgeSBsb3MgaW50ZXJ2YWxvcyBkZSBjb25maWFuemEuDQoNClNlIGRlY2lkacOzIGludGVycHJldGFyIGVsIG1vZGVsbyBhIHBlc2FyIGRlIGNvbnRhciBjb24gbGEgcHJlc2VuY2lhIGRlDQpoZXRlcm9zY2VkYXNkdGljaWRhZCBjb24gZmluZXMgZGUgY29tcGxldGFyIGxhIGFjdGl2aWRhZC4NCg0KYGBge3J9DQpzdW1tYXJ5KG1vZGVsbzEpDQpgYGANCg0KRW4gZWwgbW9kZWxvIGVsZWdpZG8gbGFzIDUgdmFyaWFibGVzICpybmQqLCpybmRzdGNrKiwqc3Rja3ByKiwqZW1wbG95XzIqDQp5ICpzYWxlcyogc29uIGVzdGFkaXN0aWNhbWVudGUgc2lnbmlmaWNhdGl2YXMgY29uIHVuIDk5JSBzZSBjb25maWFuemEgbG8NCnF1ZSBpbmRpY2EgcXVlIHRpZW5lbiB1biBpbXBhY3RvIHNpZ25pZmljYXRpdm8gZW4gbGEgY2FudGlkYWQgZGUNCnBhdGVudGVzIG90b3JnYWRhcy4NCg==