Actividad 1. Actividades R Parte 1 y 2

2024-02-26

EQUIPO 6

  • Alexa Mariana Marin Villar A00831342

  • Diego Martínez Ruibal A01740559

  • Oscar Emiliano Melendez Chavez A01276802

Ejercicio en clase

1.Obtener Indicadores del Banco Mundial

#install.packages("WDI")
#install.packages("wbstats")
#install.packages ("gplots")
#install.packages("plm")
library(WDI)
library(wbstats)
library(tidyverse) ##limpia de datos incluye dplyr ytidyir
library(gplots)
library(plm)
library(mice)
#Imputacion PMM Mice
library(visdat)

Obtener información por país y eliminar columnas inservibles para el análisis

# PIB
# wb_data funcion para sacar la informacion del banco mundial los codigoss del pais son de dos letras
gdp_data <- wb_data(country = "MX", indicator = "NY.GDP.PCAP.CD", start_date = 2013, end_date = 2023)
gdp_data
## # A tibble: 10 × 9
##    iso2c iso3c country  date NY.GDP.PCAP.CD unit  obs_status footnote last_upd…¹
##    <chr> <chr> <chr>   <dbl>          <dbl> <chr> <chr>      <chr>    <date>    
##  1 MX    MEX   Mexico   2013         11317. <NA>  <NA>       <NA>     2023-12-19
##  2 MX    MEX   Mexico   2014         11490. <NA>  <NA>       <NA>     2023-12-19
##  3 MX    MEX   Mexico   2015         10098. <NA>  <NA>       <NA>     2023-12-19
##  4 MX    MEX   Mexico   2016          9153. <NA>  <NA>       <NA>     2023-12-19
##  5 MX    MEX   Mexico   2017          9693. <NA>  <NA>       <NA>     2023-12-19
##  6 MX    MEX   Mexico   2018         10130. <NA>  <NA>       <NA>     2023-12-19
##  7 MX    MEX   Mexico   2019         10435. <NA>  <NA>       <NA>     2023-12-19
##  8 MX    MEX   Mexico   2020          8895. <NA>  <NA>       <NA>     2023-12-19
##  9 MX    MEX   Mexico   2021         10359. <NA>  <NA>       <NA>     2023-12-19
## 10 MX    MEX   Mexico   2022         11497. <NA>  <NA>       <NA>     2023-12-19
## # … with abbreviated variable name ¹​last_updated
gdp_data<- select(gdp_data,-c(unit,obs_status,footnote))
gdp_data
## # A tibble: 10 × 6
##    iso2c iso3c country  date NY.GDP.PCAP.CD last_updated
##    <chr> <chr> <chr>   <dbl>          <dbl> <date>      
##  1 MX    MEX   Mexico   2013         11317. 2023-12-19  
##  2 MX    MEX   Mexico   2014         11490. 2023-12-19  
##  3 MX    MEX   Mexico   2015         10098. 2023-12-19  
##  4 MX    MEX   Mexico   2016          9153. 2023-12-19  
##  5 MX    MEX   Mexico   2017          9693. 2023-12-19  
##  6 MX    MEX   Mexico   2018         10130. 2023-12-19  
##  7 MX    MEX   Mexico   2019         10435. 2023-12-19  
##  8 MX    MEX   Mexico   2020          8895. 2023-12-19  
##  9 MX    MEX   Mexico   2021         10359. 2023-12-19  
## 10 MX    MEX   Mexico   2022         11497. 2023-12-19

Obtener información distintos países

gdp_data2 <- wb_data(country = c("MX","EC","CA"), indicator = "NY.GDP.PCAP.CD", start_date = 2013, end_date = 2023)
gdp_data2
## # A tibble: 30 × 9
##    iso2c iso3c country  date NY.GDP.PCAP.CD unit  obs_status footnote last_upd…¹
##    <chr> <chr> <chr>   <dbl>          <dbl> <chr> <chr>      <chr>    <date>    
##  1 CA    CAN   Canada   2013         52635. <NA>  <NA>       <NA>     2023-12-19
##  2 CA    CAN   Canada   2014         50956. <NA>  <NA>       <NA>     2023-12-19
##  3 CA    CAN   Canada   2015         43596. <NA>  <NA>       <NA>     2023-12-19
##  4 CA    CAN   Canada   2016         42316. <NA>  <NA>       <NA>     2023-12-19
##  5 CA    CAN   Canada   2017         45129. <NA>  <NA>       <NA>     2023-12-19
##  6 CA    CAN   Canada   2018         46549. <NA>  <NA>       <NA>     2023-12-19
##  7 CA    CAN   Canada   2019         46374. <NA>  <NA>       <NA>     2023-12-19
##  8 CA    CAN   Canada   2020         43350. <NA>  <NA>       <NA>     2023-12-19
##  9 CA    CAN   Canada   2021         52359. <NA>  <NA>       <NA>     2023-12-19
## 10 CA    CAN   Canada   2022         54918. <NA>  <NA>       <NA>     2023-12-19
## # … with 20 more rows, and abbreviated variable name ¹​last_updated
gdp_date<- select(gdp_data2,-c(unit,obs_status,footnote))
gdp_date
## # A tibble: 30 × 6
##    iso2c iso3c country  date NY.GDP.PCAP.CD last_updated
##    <chr> <chr> <chr>   <dbl>          <dbl> <date>      
##  1 CA    CAN   Canada   2013         52635. 2023-12-19  
##  2 CA    CAN   Canada   2014         50956. 2023-12-19  
##  3 CA    CAN   Canada   2015         43596. 2023-12-19  
##  4 CA    CAN   Canada   2016         42316. 2023-12-19  
##  5 CA    CAN   Canada   2017         45129. 2023-12-19  
##  6 CA    CAN   Canada   2018         46549. 2023-12-19  
##  7 CA    CAN   Canada   2019         46374. 2023-12-19  
##  8 CA    CAN   Canada   2020         43350. 2023-12-19  
##  9 CA    CAN   Canada   2021         52359. 2023-12-19  
## 10 CA    CAN   Canada   2022         54918. 2023-12-19  
## # … with 20 more rows

Generar un conjunto de datos de panel solo con las variables necesarias

panel <- select(gdp_date,country,date,NY.GDP.PCAP.CD)
panel
## # A tibble: 30 × 3
##    country  date NY.GDP.PCAP.CD
##    <chr>   <dbl>          <dbl>
##  1 Canada   2013         52635.
##  2 Canada   2014         50956.
##  3 Canada   2015         43596.
##  4 Canada   2016         42316.
##  5 Canada   2017         45129.
##  6 Canada   2018         46549.
##  7 Canada   2019         46374.
##  8 Canada   2020         43350.
##  9 Canada   2021         52359.
## 10 Canada   2022         54918.
## # … with 20 more rows

1.1 Conjunto de Datos de Panel con Indicadores del Banco Mundial

Elabora un conjunto de datos de panel utilizando R. Elige una variable endógena dependiendo del tema que sea por equipo y selecciona otras variables como factores.

Tema equipo 6 : Género

Variable endógena:

  1. GENDER: SL.IND.EMPL.FE.ZS = Employment in industry, female (% of female employment) (modeled ILO estimate)

Factores

  1. ECONOMY = NY.GDP.PCAP.CD = GDP per capita (current US)

  2. EDUCATIONSE.XPD.TOTL.GD.ZS = Government expenditure on education, total (% of GDP)

  3. EDUCATION SL.TLF.TOTL.FE.ZS = Labor force, female (% of total labor force)

  4. SOCIAL DEVELOPMENT SP.DYN.LE00.FE.IN = Life expectancy at birth, female (years)

  5. SOCIAL DEVELOPMENT SG.GEN.PARL.ZS= Proportion of seats held by women in national parliaments (%)

exercise_1 <- wb_data(country = c("MX","IT","JP","BR"), indicator = c("SL.IND.EMPL.FE.ZS","NY.GDP.PCAP.CD","SE.XPD.TOTL.GD.ZS","SL.TLF.TOTL.FE.ZS","SP.DYN.LE00.FE.IN","SG.GEN.PARL.ZS"), start_date = 2011, end_date = 2021)

Observar valores nulos

#Identificar valores nulos
sum(is.na(exercise_1))      
## [1] 3
colSums(is.na(exercise_1))  
##             iso2c             iso3c           country              date 
##                 0                 0                 0                 0 
##    NY.GDP.PCAP.CD SE.XPD.TOTL.GD.ZS    SG.GEN.PARL.ZS SL.IND.EMPL.FE.ZS 
##                 0                 3                 0                 0 
## SL.TLF.TOTL.FE.ZS SP.DYN.LE00.FE.IN 
##                 0                 0
#Visualizacion de valores nulos
vis_miss(exercise_1)

Imputar valores nulos

exercise_1 <- mice(exercise_1, m=2, maxit=1, meth='cart', seed=500)
## 
##  iter imp variable
##   1   1  SE.XPD.TOTL.GD.ZS
##   1   2  SE.XPD.TOTL.GD.ZS
exercise_1 <- complete(exercise_1)
vis_miss(exercise_1)

exercise_1 <- pdata.frame(exercise_1,index = c("country","date")) ##Crear dato panel agregando el país y la fecha
View(exercise_1)

Existen valores nulos en ciertas variables, por lo cual se decidió imputar con el método MICE.

1.2 Gráficas de Heterogeneidad 

Observación de Heterogeneidad entre paises

# Variable de interes y por año
plotmeans(SL.IND.EMPL.FE.ZS ~ country, data= exercise_1, main= " Heterogeneidad entre países")

Observación de Heterogeneidad entre el paso de los años

plotmeans(SL.IND.EMPL.FE.ZS ~ date, data= exercise_1, main= " Heterogeneidad entre los años")

1.3 Preguntas

1.¿Las lineas que une los promedios es horizontal o tiene muchos picos?

Las líneas presentan algunas variaciones en el caso de los años, pero ninguna de ellas es muy extrema. Sin embargo, se puede observar que existe una mayor variación a partir del año 2015. En cuanto a los países, se presenta una diferencia notable en los promedios del indicador, ya que México es el país con la mayor tasa de empleo de mujeres. Este resultado resulta sorprendente y puede llevar a la formulación de diversas hipótesis sobre lo que podría estar ocurriendo en cada país.

2.¿Los intervalos de confianza miden o mismo, o estan desfasados?

En el caso de los países, existe un desfase con respecto a un país en particular. Por otro lado, en el caso de los años, no se observa una variación tan amplia, pero sí se aprecia cierta variabilidad a lo largo del tiempo.

3.¿Investiga elconcepto de heterogeneidad y determina si lo que se ve en las graficas es deseable o no deseable?

De acuerdo con la investigación, se encontró que se busca la heterogeneidad en los datos para permitir una exploración más profunda, comparación de datos y descubrimientos de ellos. En este caso, el porcentaje de empleo de mujeres en todo el mundo puede indicar las diferencias culturakles, sociales y economcias que existen entre países y a lo largo de los años, facilitando así una comprensión más amplia del comportamiento de la variable.

Investigar estas diferencias/ variabilidad de los datos es crucial para comprender por qué la variable y los factores pueden comportarse de manera diferente en diferentes situaciones. Puede revelar factores específico como características demográficas, condiciones socioeconómicas o diferencias culturales y del resultado que se puede esperar la próxima vez que se aplique.

2.Prueba de cambiar los años agrupados para observar una mayor variación

panel2 <- select(exercise_1,country,date,SL.IND.EMPL.FE.ZS,NY.GDP.PCAP.CD,SE.XPD.TOTL.GD.ZS,SL.TLF.TOTL.FE.ZS,SP.DYN.LE00.FE.IN,SG.GEN.PARL.ZS)
panel_prueba <- subset(panel2,date == 2011 | date == 2014 | date == 2018| date == 2021)
View(panel2)

2.1 Plot para observar los valores agrupados

plotmeans(SL.IND.EMPL.FE.ZS ~ date, data= panel_prueba, main= " Heterogeneidad entre los años")

3. Modelos con Indicadores del Banco Mundial

En este modelado de datos, se decidió utilizar todos los años sin agrupar (2011-2021).

Modelo 1. Regresion agrupada (pooled)

View(exercise_1)
modelo1 <- plm(SL.IND.EMPL.FE.ZS ~ NY.GDP.PCAP.CD + SE.XPD.TOTL.GD.ZS + SL.TLF.TOTL.FE.ZS + SP.DYN.LE00.FE.IN , data = exercise_1, model = "pooling")
summary(modelo1)
## Pooling Model
## 
## Call:
## plm(formula = SL.IND.EMPL.FE.ZS ~ NY.GDP.PCAP.CD + SE.XPD.TOTL.GD.ZS + 
##     SL.TLF.TOTL.FE.ZS + SP.DYN.LE00.FE.IN, data = exercise_1, 
##     model = "pooling")
## 
## Balanced Panel: n = 4, T = 11, N = 44
## 
## Residuals:
##     Min.  1st Qu.   Median  3rd Qu.     Max. 
## -1.20946 -0.21661  0.02643  0.32160  0.72448 
## 
## Coefficients:
##                      Estimate  Std. Error  t-value  Pr(>|t|)    
## (Intercept)        6.7708e+01  4.7447e+00  14.2702 < 2.2e-16 ***
## NY.GDP.PCAP.CD     2.3459e-05  1.9073e-05   1.2300  0.226080    
## SE.XPD.TOTL.GD.ZS -1.6998e+00  1.8753e-01  -9.0642 3.831e-11 ***
## SL.TLF.TOTL.FE.ZS -6.4823e-01  5.2196e-02 -12.4192 3.953e-15 ***
## SP.DYN.LE00.FE.IN -2.3992e-01  6.9616e-02  -3.4463  0.001375 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    186.14
## Residual Sum of Squares: 8.2353
## R-Squared:      0.95576
## Adj. R-Squared: 0.95122
## F-statistic: 210.624 on 4 and 39 DF, p-value: < 2.22e-16

Modelo 2. Efectos fijos (within)

modelo1.2 <- plm(SL.IND.EMPL.FE.ZS ~ NY.GDP.PCAP.CD + SE.XPD.TOTL.GD.ZS + SL.TLF.TOTL.FE.ZS + SP.DYN.LE00.FE.IN , data = exercise_1, model = "within")
summary(modelo1.2)
## Oneway (individual) effect Within Model
## 
## Call:
## plm(formula = SL.IND.EMPL.FE.ZS ~ NY.GDP.PCAP.CD + SE.XPD.TOTL.GD.ZS + 
##     SL.TLF.TOTL.FE.ZS + SP.DYN.LE00.FE.IN, data = exercise_1, 
##     model = "within")
## 
## Balanced Panel: n = 4, T = 11, N = 44
## 
## Residuals:
##        Min.     1st Qu.      Median     3rd Qu.        Max. 
## -0.89921750 -0.12122418  0.00099016  0.29311858  0.70856979 
## 
## Coefficients:
##                      Estimate  Std. Error t-value  Pr(>|t|)    
## NY.GDP.PCAP.CD     5.4739e-05  2.6986e-05  2.0285 0.0499613 *  
## SE.XPD.TOTL.GD.ZS -1.0574e+00  2.8566e-01 -3.7015 0.0007132 ***
## SL.TLF.TOTL.FE.ZS -3.4940e-01  1.2066e-01 -2.8957 0.0063942 ** 
## SP.DYN.LE00.FE.IN -2.1310e-01  8.4392e-02 -2.5251 0.0161108 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    12.893
## Residual Sum of Squares: 5.7541
## R-Squared:      0.55369
## Adj. R-Squared: 0.46691
## F-statistic: 11.1654 on 4 and 36 DF, p-value: 5.4139e-06

Prueba pF

#Efecto fijos primero y pooling despues
#significant effects significa que si hay diferencia entre los modelos (uno es mejor que otro) non significant puedes usar el que sea de los modelos

pFtest(modelo1.2,modelo1)
## 
##  F test for individual effects
## 
## data:  SL.IND.EMPL.FE.ZS ~ NY.GDP.PCAP.CD + SE.XPD.TOTL.GD.ZS + SL.TLF.TOTL.FE.ZS +  ...
## F = 5.1746, df1 = 3, df2 = 36, p-value = 0.004469
## alternative hypothesis: significant effects

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

Modelo 3. Efectos aleatorios (random) - Metodo walhus

modelo1.3 <- plm(SL.IND.EMPL.FE.ZS ~ NY.GDP.PCAP.CD + SE.XPD.TOTL.GD.ZS + SL.TLF.TOTL.FE.ZS + SP.DYN.LE00.FE.IN, 
                 data = panel2,
                 model = "random", 
                 random.method = "walhus")
summary(modelo1.3)
## Oneway (individual) effect Random Effect Model 
##    (Wallace-Hussain's transformation)
## 
## Call:
## plm(formula = SL.IND.EMPL.FE.ZS ~ NY.GDP.PCAP.CD + SE.XPD.TOTL.GD.ZS + 
##     SL.TLF.TOTL.FE.ZS + SP.DYN.LE00.FE.IN, data = panel2, model = "random", 
##     random.method = "walhus")
## 
## Balanced Panel: n = 4, T = 11, N = 44
## 
## Effects:
##                    var  std.dev share
## idiosyncratic 0.186514 0.431873 0.997
## individual    0.000651 0.025515 0.003
## theta: 0.01866
## 
## Residuals:
##      Min.   1st Qu.    Median   3rd Qu.      Max. 
## -1.209275 -0.219136  0.025578  0.320579  0.722151 
## 
## Coefficients:
##                      Estimate  Std. Error  z-value  Pr(>|z|)    
## (Intercept)        6.7590e+01  4.7491e+00  14.2320 < 2.2e-16 ***
## NY.GDP.PCAP.CD     2.3469e-05  1.9046e-05   1.2322 0.2178672    
## SE.XPD.TOTL.GD.ZS -1.6934e+00  1.8804e-01  -9.0055 < 2.2e-16 ***
## SL.TLF.TOTL.FE.ZS -6.4897e-01  5.2506e-02 -12.3597 < 2.2e-16 ***
## SP.DYN.LE00.FE.IN -2.3845e-01  6.9650e-02  -3.4236 0.0006181 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    179.73
## Residual Sum of Squares: 8.2063
## R-Squared:      0.95434
## Adj. R-Squared: 0.94966
## Chisq: 815.161 on 4 DF, p-value: < 2.22e-16

Modelo 3.2 Efectos aleatorios (random) - Metodo amemiya

modelo1.4 <- plm(SL.IND.EMPL.FE.ZS ~ NY.GDP.PCAP.CD + SE.XPD.TOTL.GD.ZS + SL.TLF.TOTL.FE.ZS + SP.DYN.LE00.FE.IN,  data = exercise_1, model = "random", random.method = "amemiya")
summary(modelo1.4)
## Oneway (individual) effect Random Effect Model 
##    (Amemiya's transformation)
## 
## Call:
## plm(formula = SL.IND.EMPL.FE.ZS ~ NY.GDP.PCAP.CD + SE.XPD.TOTL.GD.ZS + 
##     SL.TLF.TOTL.FE.ZS + SP.DYN.LE00.FE.IN, data = exercise_1, 
##     model = "random", random.method = "amemiya")
## 
## Balanced Panel: n = 4, T = 11, N = 44
## 
## Effects:
##                  var std.dev share
## idiosyncratic 0.1439  0.3793 0.137
## individual    0.9051  0.9514 0.863
## theta: 0.8807
## 
## Residuals:
##      Min.   1st Qu.    Median   3rd Qu.      Max. 
## -1.057503 -0.175767  0.010998  0.252277  0.667075 
## 
## Coefficients:
##                      Estimate  Std. Error z-value  Pr(>|z|)    
## (Intercept)        5.4387e+01  6.3408e+00  8.5774 < 2.2e-16 ***
## NY.GDP.PCAP.CD     4.1989e-05  2.1072e-05  1.9927  0.046297 *  
## SE.XPD.TOTL.GD.ZS -1.1284e+00  2.4893e-01 -4.5329 5.818e-06 ***
## SL.TLF.TOTL.FE.ZS -4.3649e-01  1.0522e-01 -4.1483 3.349e-05 ***
## SP.DYN.LE00.FE.IN -2.2187e-01  7.2645e-02 -3.0542  0.002257 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    15.36
## Residual Sum of Squares: 6.1583
## R-Squared:      0.59907
## Adj. R-Squared: 0.55795
## Chisq: 58.2733 on 4 DF, p-value: 6.6868e-12

Modelo 3.3

modelo1.5 <- plm(SL.IND.EMPL.FE.ZS ~ NY.GDP.PCAP.CD 
                 + SE.XPD.TOTL.GD.ZS + SL.TLF.TOTL.FE.ZS + SP.DYN.LE00.FE.IN, 
                 data = exercise_1,
                 model = "random", 
                 random.method = "nerlove")
summary(modelo1.5)
## Oneway (individual) effect Random Effect Model 
##    (Nerlove's transformation)
## 
## Call:
## plm(formula = SL.IND.EMPL.FE.ZS ~ NY.GDP.PCAP.CD + SE.XPD.TOTL.GD.ZS + 
##     SL.TLF.TOTL.FE.ZS + SP.DYN.LE00.FE.IN, data = exercise_1, 
##     model = "random", random.method = "nerlove")
## 
## Balanced Panel: n = 4, T = 11, N = 44
## 
## Effects:
##                  var std.dev share
## idiosyncratic 0.1308  0.3616 0.097
## individual    1.2243  1.1065 0.903
## theta: 0.9019
## 
## Residuals:
##      Min.   1st Qu.    Median   3rd Qu.      Max. 
## -1.028068 -0.175332  0.012991  0.257813  0.641837 
## 
## Coefficients:
##                      Estimate  Std. Error z-value  Pr(>|z|)    
## (Intercept)        5.3323e+01  6.5836e+00  8.0993 5.525e-16 ***
## NY.GDP.PCAP.CD     4.4400e-05  2.1832e-05  2.0337 0.0419825 *  
## SE.XPD.TOTL.GD.ZS -1.1016e+00  2.5386e-01 -4.3393 1.430e-05 ***
## SL.TLF.TOTL.FE.ZS -4.1467e-01  1.0796e-01 -3.8409 0.0001226 ***
## SP.DYN.LE00.FE.IN -2.2213e-01  7.3811e-02 -3.0095 0.0026168 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    14.559
## Residual Sum of Squares: 6.052
## R-Squared:      0.5843
## Adj. R-Squared: 0.54166
## Chisq: 54.8177 on 4 DF, p-value: 3.5477e-11

Prueba de Hausman

En este caso, el Modelo 1 del tipo fijo pooled cuenta con un coeficiente de R cuadrada ajustada de 0.9455, mientras que el Modelo 1.3 del tipo aleatorio walhus tiene un valor de 0.9455. Aunque los resultados son muy parecidos, el test de Hausman nos permite observar que hay un mejor modelo, y en este caso, es el del tipo agrupado.

Se puede inferir que existe algún tipo de autocorrelación serial gracias a la R cuadrada ajustada tan alta del modelo, pero en siguientes ejercicios en clase se aplicará algún test para corroborar la exactitud del modelo.

#El mejor de los tres aleatoruos que haya salido primero en comparativa con el mejor agrupado o fijo.
#hausman = fijos y aleatorios
phtest(modelo1.3,modelo1)
## 
##  Hausman Test
## 
## data:  SL.IND.EMPL.FE.ZS ~ NY.GDP.PCAP.CD + SE.XPD.TOTL.GD.ZS + SL.TLF.TOTL.FE.ZS +  ...
## chisq = 0.24411, df = 4, p-value = 0.9931
## alternative hypothesis: one model is inconsistent
summary(modelo1)
## Pooling Model
## 
## Call:
## plm(formula = SL.IND.EMPL.FE.ZS ~ NY.GDP.PCAP.CD + SE.XPD.TOTL.GD.ZS + 
##     SL.TLF.TOTL.FE.ZS + SP.DYN.LE00.FE.IN, data = exercise_1, 
##     model = "pooling")
## 
## Balanced Panel: n = 4, T = 11, N = 44
## 
## Residuals:
##     Min.  1st Qu.   Median  3rd Qu.     Max. 
## -1.20946 -0.21661  0.02643  0.32160  0.72448 
## 
## Coefficients:
##                      Estimate  Std. Error  t-value  Pr(>|t|)    
## (Intercept)        6.7708e+01  4.7447e+00  14.2702 < 2.2e-16 ***
## NY.GDP.PCAP.CD     2.3459e-05  1.9073e-05   1.2300  0.226080    
## SE.XPD.TOTL.GD.ZS -1.6998e+00  1.8753e-01  -9.0642 3.831e-11 ***
## SL.TLF.TOTL.FE.ZS -6.4823e-01  5.2196e-02 -12.4192 3.953e-15 ***
## SP.DYN.LE00.FE.IN -2.3992e-01  6.9616e-02  -3.4463  0.001375 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Total Sum of Squares:    186.14
## Residual Sum of Squares: 8.2353
## R-Squared:      0.95576
## Adj. R-Squared: 0.95122
## F-statistic: 210.624 on 4 and 39 DF, p-value: < 2.22e-16

En el modelo elegido, hay 3 variables: SE.XPD.TOTL.GD.ZS, SL.TLF.TOTL.FE.ZS; ambas son estadísticamente significativas con un 99% de significancia. La variable SP.DYN.LE00.FE.IN, de igual manera, es estadísticamente significativa con un 95% de confianza, lo que indica que tienen un impacto significativo en el porcentaje de empleo en la industria de mujeres.

LS0tDQp0aXRsZTogIkFjdGl2aWRhZCAxLiBBY3RpdmlkYWRlcyBSIFBhcnRlIDEgeSAyIg0KZGF0ZTogImByIFN5cy5EYXRlKClgIg0Kb3V0cHV0Og0KICBybWRmb3JtYXRzOjpkb3duY3V0ZToNCiAgICBzZWxmX2NvbnRhaW5lZDogdHJ1ZQ0KICAgIGRlZmF1bHRfc3R5bGU6ICJsaWdodCINCiAgICBkb3duY3V0ZV90aGVtZTogImRlZmF1bHQiDQogICAgY29kZV9kb3dubG9hZCA6IHRydWUNCi0tLQ0KDQoqKkVRVUlQTyA2KioNCg0KLSAgIEFsZXhhIE1hcmlhbmEgTWFyaW4gVmlsbGFyIEEwMDgzMTM0Mg0KDQotICAgRGllZ28gTWFydMOtbmV6IFJ1aWJhbCBBMDE3NDA1NTkNCg0KLSAgIE9zY2FyIEVtaWxpYW5vIE1lbGVuZGV6IENoYXZleiBBMDEyNzY4MDINCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQojIyBHbG9iYWwgb3B0aW9ucw0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGNhY2hlID0gVFJVRSxlY2hvID0gVFJVRSx3YXJuaW5nID0gRkFMU0UsbWVzc2FnZSA9IEZBTFNFKQ0KYGBgDQoNCiFbXShnaXBoeSUyMCgxKS5naWYpDQoNCiMgKipFamVyY2ljaW8gZW4gY2xhc2UqKg0KDQojIyAqKjEuT2J0ZW5lciBJbmRpY2Fkb3JlcyBkZWwgQmFuY28gTXVuZGlhbCoqDQoNCmBgYHtyLGluY2x1ZGU9VFJVRX0NCiNpbnN0YWxsLnBhY2thZ2VzKCJXREkiKQ0KI2luc3RhbGwucGFja2FnZXMoIndic3RhdHMiKQ0KI2luc3RhbGwucGFja2FnZXMgKCJncGxvdHMiKQ0KI2luc3RhbGwucGFja2FnZXMoInBsbSIpDQpsaWJyYXJ5KFdESSkNCmxpYnJhcnkod2JzdGF0cykNCmxpYnJhcnkodGlkeXZlcnNlKSAjI2xpbXBpYSBkZSBkYXRvcyBpbmNsdXllIGRwbHlyIHl0aWR5aXINCmxpYnJhcnkoZ3Bsb3RzKQ0KbGlicmFyeShwbG0pDQpsaWJyYXJ5KG1pY2UpDQojSW1wdXRhY2lvbiBQTU0gTWljZQ0KbGlicmFyeSh2aXNkYXQpDQpgYGANCg0KIyMgKipPYnRlbmVyIGluZm9ybWFjacOzbiBwb3IgcGHDrXMgeSBlbGltaW5hciBjb2x1bW5hcyBpbnNlcnZpYmxlcyBwYXJhIGVsIGFuw6FsaXNpcyoqDQoNCmBgYHtyfQ0KIyBQSUINCiMgd2JfZGF0YSBmdW5jaW9uIHBhcmEgc2FjYXIgbGEgaW5mb3JtYWNpb24gZGVsIGJhbmNvIG11bmRpYWwgbG9zIGNvZGlnb3NzIGRlbCBwYWlzIHNvbiBkZSBkb3MgbGV0cmFzDQpnZHBfZGF0YSA8LSB3Yl9kYXRhKGNvdW50cnkgPSAiTVgiLCBpbmRpY2F0b3IgPSAiTlkuR0RQLlBDQVAuQ0QiLCBzdGFydF9kYXRlID0gMjAxMywgZW5kX2RhdGUgPSAyMDIzKQ0KZ2RwX2RhdGENCmdkcF9kYXRhPC0gc2VsZWN0KGdkcF9kYXRhLC1jKHVuaXQsb2JzX3N0YXR1cyxmb290bm90ZSkpDQpnZHBfZGF0YQ0KYGBgDQoNCiMjICoqT2J0ZW5lciBpbmZvcm1hY2nDs24gZGlzdGludG9zIHBhw61zZXMqKg0KDQpgYGB7cn0NCmdkcF9kYXRhMiA8LSB3Yl9kYXRhKGNvdW50cnkgPSBjKCJNWCIsIkVDIiwiQ0EiKSwgaW5kaWNhdG9yID0gIk5ZLkdEUC5QQ0FQLkNEIiwgc3RhcnRfZGF0ZSA9IDIwMTMsIGVuZF9kYXRlID0gMjAyMykNCmdkcF9kYXRhMg0KZ2RwX2RhdGU8LSBzZWxlY3QoZ2RwX2RhdGEyLC1jKHVuaXQsb2JzX3N0YXR1cyxmb290bm90ZSkpDQpnZHBfZGF0ZQ0KYGBgDQoNCiMjICoqR2VuZXJhciB1biBjb25qdW50byBkZSBkYXRvcyBkZSBwYW5lbCBzb2xvIGNvbiBsYXMgdmFyaWFibGVzIG5lY2VzYXJpYXMqKg0KDQpgYGB7cn0NCnBhbmVsIDwtIHNlbGVjdChnZHBfZGF0ZSxjb3VudHJ5LGRhdGUsTlkuR0RQLlBDQVAuQ0QpDQpwYW5lbA0KYGBgDQoNCiMgKioxLjEgQ29uanVudG8gZGUgRGF0b3MgZGUgUGFuZWwgY29uIEluZGljYWRvcmVzIGRlbCBCYW5jbyBNdW5kaWFsKioNCg0KRWxhYm9yYSB1biBjb25qdW50byBkZSBkYXRvcyBkZSBwYW5lbCB1dGlsaXphbmRvIFIuIEVsaWdlIHVuYSB2YXJpYWJsZSBlbmTDs2dlbmEgZGVwZW5kaWVuZG8gZGVsIHRlbWEgcXVlIHNlYSBwb3IgZXF1aXBvIHkgc2VsZWNjaW9uYSBvdHJhcyB2YXJpYWJsZXMgY29tbyBmYWN0b3Jlcy4NCg0KKipUZW1hIGVxdWlwbyA2IDogR8OpbmVybyoqDQoNCiMjIyMgKipWYXJpYWJsZSBlbmTDs2dlbmE6KioNCg0KMS4gICoqR0VOREVSOioqIFNMLklORC5FTVBMLkZFLlpTID0gRW1wbG95bWVudCBpbiBpbmR1c3RyeSwgZmVtYWxlICglIG9mIGZlbWFsZSBlbXBsb3ltZW50KSAobW9kZWxlZCBJTE8gZXN0aW1hdGUpDQoNCioqRmFjdG9yZXMqKg0KDQoxLiAgKipFQ09OT01ZKiogPSBOWS5HRFAuUENBUC5DRCA9IEdEUCBwZXIgY2FwaXRhIChjdXJyZW50IFVTKQ0KDQoyLiAgKipFRFVDQVRJT04qKlNFLlhQRC5UT1RMLkdELlpTID0gR292ZXJubWVudCBleHBlbmRpdHVyZSBvbiBlZHVjYXRpb24sIHRvdGFsICglIG9mIEdEUCkNCg0KMy4gICoqRURVQ0FUSU9OKiogU0wuVExGLlRPVEwuRkUuWlMgPSBMYWJvciBmb3JjZSwgZmVtYWxlICglIG9mIHRvdGFsIGxhYm9yIGZvcmNlKQ0KDQo0LiAgKipTT0NJQUwgREVWRUxPUE1FTlQqKiBTUC5EWU4uTEUwMC5GRS5JTiA9IExpZmUgZXhwZWN0YW5jeSBhdCBiaXJ0aCwgZmVtYWxlICh5ZWFycykNCg0KNS4gICoqU09DSUFMIERFVkVMT1BNRU5UKiogU0cuR0VOLlBBUkwuWlM9IFByb3BvcnRpb24gb2Ygc2VhdHMgaGVsZCBieSB3b21lbiBpbiBuYXRpb25hbCBwYXJsaWFtZW50cyAoJSkNCg0KYGBge3J9DQpleGVyY2lzZV8xIDwtIHdiX2RhdGEoY291bnRyeSA9IGMoIk1YIiwiSVQiLCJKUCIsIkJSIiksIGluZGljYXRvciA9IGMoIlNMLklORC5FTVBMLkZFLlpTIiwiTlkuR0RQLlBDQVAuQ0QiLCJTRS5YUEQuVE9UTC5HRC5aUyIsIlNMLlRMRi5UT1RMLkZFLlpTIiwiU1AuRFlOLkxFMDAuRkUuSU4iLCJTRy5HRU4uUEFSTC5aUyIpLCBzdGFydF9kYXRlID0gMjAxMSwgZW5kX2RhdGUgPSAyMDIxKQ0KYGBgDQoNCiMjICoqT2JzZXJ2YXIgdmFsb3JlcyBudWxvcyoqDQoNCmBgYHtyfQ0KI0lkZW50aWZpY2FyIHZhbG9yZXMgbnVsb3MNCnN1bShpcy5uYShleGVyY2lzZV8xKSkgICAgICANCmNvbFN1bXMoaXMubmEoZXhlcmNpc2VfMSkpICANCiNWaXN1YWxpemFjaW9uIGRlIHZhbG9yZXMgbnVsb3MNCnZpc19taXNzKGV4ZXJjaXNlXzEpDQpgYGANCg0KIyMgKipJbXB1dGFyIHZhbG9yZXMgbnVsb3MqKg0KDQpgYGB7cn0NCmV4ZXJjaXNlXzEgPC0gbWljZShleGVyY2lzZV8xLCBtPTIsIG1heGl0PTEsIG1ldGg9J2NhcnQnLCBzZWVkPTUwMCkNCmV4ZXJjaXNlXzEgPC0gY29tcGxldGUoZXhlcmNpc2VfMSkNCnZpc19taXNzKGV4ZXJjaXNlXzEpDQpleGVyY2lzZV8xIDwtIHBkYXRhLmZyYW1lKGV4ZXJjaXNlXzEsaW5kZXggPSBjKCJjb3VudHJ5IiwiZGF0ZSIpKSAjI0NyZWFyIGRhdG8gcGFuZWwgYWdyZWdhbmRvIGVsIHBhw61zIHkgbGEgZmVjaGENClZpZXcoZXhlcmNpc2VfMSkNCmBgYA0KDQpFeGlzdGVuIHZhbG9yZXMgbnVsb3MgZW4gY2llcnRhcyB2YXJpYWJsZXMsIHBvciBsbyBjdWFsIHNlIGRlY2lkacOzIGltcHV0YXIgY29uIGVsIG3DqXRvZG8gTUlDRS4NCg0KIyAqKjEuMiBHcsOhZmljYXMgZGUgSGV0ZXJvZ2VuZWlkYWQqKsKgDQoNCiMjICoqT2JzZXJ2YWNpw7NuIGRlIEhldGVyb2dlbmVpZGFkIGVudHJlIHBhaXNlcyoqDQoNCmBgYHtyfQ0KIyBWYXJpYWJsZSBkZSBpbnRlcmVzIHkgcG9yIGHDsW8NCnBsb3RtZWFucyhTTC5JTkQuRU1QTC5GRS5aUyB+IGNvdW50cnksIGRhdGE9IGV4ZXJjaXNlXzEsIG1haW49ICIgSGV0ZXJvZ2VuZWlkYWQgZW50cmUgcGHDrXNlcyIpDQpgYGANCg0KIyMgKipPYnNlcnZhY2nDs24gZGUgSGV0ZXJvZ2VuZWlkYWQgZW50cmUgZWwgcGFzbyBkZSBsb3MgYcOxb3MqKg0KDQpgYGB7cn0NCnBsb3RtZWFucyhTTC5JTkQuRU1QTC5GRS5aUyB+IGRhdGUsIGRhdGE9IGV4ZXJjaXNlXzEsIG1haW49ICIgSGV0ZXJvZ2VuZWlkYWQgZW50cmUgbG9zIGHDsW9zIikNCmBgYA0KDQojICoqMS4zIFByZWd1bnRhcyoqDQoNCioqMS7Cv0xhcyBsaW5lYXMgcXVlIHVuZSBsb3MgcHJvbWVkaW9zIGVzIGhvcml6b250YWwgbyB0aWVuZSBtdWNob3MgcGljb3M/KioNCg0KTGFzIGzDrW5lYXMgcHJlc2VudGFuIGFsZ3VuYXMgdmFyaWFjaW9uZXMgZW4gZWwgY2FzbyBkZSBsb3MgYcOxb3MsIHBlcm8gbmluZ3VuYSBkZSBlbGxhcyBlcyBtdXkgZXh0cmVtYS4gU2luIGVtYmFyZ28sIHNlIHB1ZWRlIG9ic2VydmFyIHF1ZSBleGlzdGUgdW5hIG1heW9yIHZhcmlhY2nDs24gYSBwYXJ0aXIgZGVsIGHDsW8gMjAxNS4gRW4gY3VhbnRvIGEgbG9zIHBhw61zZXMsIHNlIHByZXNlbnRhIHVuYSBkaWZlcmVuY2lhIG5vdGFibGUgZW4gbG9zIHByb21lZGlvcyBkZWwgaW5kaWNhZG9yLCB5YSBxdWUgTcOpeGljbyBlcyBlbCBwYcOtcyBjb24gbGEgbWF5b3IgdGFzYSBkZSBlbXBsZW8gZGUgbXVqZXJlcy4gRXN0ZSByZXN1bHRhZG8gcmVzdWx0YSBzb3JwcmVuZGVudGUgeSBwdWVkZSBsbGV2YXIgYSBsYSBmb3JtdWxhY2nDs24gZGUgZGl2ZXJzYXMgaGlww7N0ZXNpcyBzb2JyZSBsbyBxdWUgcG9kcsOtYSBlc3RhciBvY3VycmllbmRvIGVuIGNhZGEgcGHDrXMuDQoNCjIuKirCv0xvcyBpbnRlcnZhbG9zIGRlIGNvbmZpYW56YSBtaWRlbiBvIG1pc21vLCBvIGVzdGFuIGRlc2Zhc2Fkb3M/KioNCg0KRW4gZWwgY2FzbyBkZSBsb3MgcGHDrXNlcywgZXhpc3RlIHVuIGRlc2Zhc2UgY29uIHJlc3BlY3RvIGEgdW4gcGHDrXMgZW4gcGFydGljdWxhci4gUG9yIG90cm8gbGFkbywgZW4gZWwgY2FzbyBkZSBsb3MgYcOxb3MsIG5vIHNlIG9ic2VydmEgdW5hIHZhcmlhY2nDs24gdGFuIGFtcGxpYSwgcGVybyBzw60gc2UgYXByZWNpYSBjaWVydGEgdmFyaWFiaWxpZGFkIGEgbG8gbGFyZ28gZGVsIHRpZW1wby4NCg0KKiozLsK/SW52ZXN0aWdhIGVsY29uY2VwdG8gZGUgaGV0ZXJvZ2VuZWlkYWQgeSBkZXRlcm1pbmEgc2kgbG8gcXVlIHNlIHZlIGVuIGxhcyBncmFmaWNhcyBlcyBkZXNlYWJsZSBvIG5vIGRlc2VhYmxlPyoqDQoNCkRlIGFjdWVyZG8gY29uIGxhIGludmVzdGlnYWNpw7NuLCBzZSBlbmNvbnRyw7MgcXVlIHNlIGJ1c2NhIGxhIGhldGVyb2dlbmVpZGFkIGVuIGxvcyBkYXRvcyBwYXJhIHBlcm1pdGlyIHVuYSBleHBsb3JhY2nDs24gbcOhcyBwcm9mdW5kYSwgY29tcGFyYWNpw7NuIGRlIGRhdG9zIHkgZGVzY3VicmltaWVudG9zIGRlIGVsbG9zLiBFbiBlc3RlIGNhc28sIGVsIHBvcmNlbnRhamUgZGUgZW1wbGVvIGRlIG11amVyZXMgZW4gdG9kbyBlbCBtdW5kbyBwdWVkZSBpbmRpY2FyIGxhcyBkaWZlcmVuY2lhcyBjdWx0dXJha2xlcywgc29jaWFsZXMgeSBlY29ub21jaWFzIHF1ZSBleGlzdGVuIGVudHJlIHBhw61zZXMgeSBhIGxvIGxhcmdvIGRlIGxvcyBhw7FvcywgZmFjaWxpdGFuZG8gYXPDrSB1bmEgY29tcHJlbnNpw7NuIG3DoXMgYW1wbGlhIGRlbCBjb21wb3J0YW1pZW50byBkZSBsYSB2YXJpYWJsZS4NCg0KSW52ZXN0aWdhciBlc3RhcyBkaWZlcmVuY2lhcy8gdmFyaWFiaWxpZGFkIGRlIGxvcyBkYXRvcyBlcyBjcnVjaWFsIHBhcmEgY29tcHJlbmRlciBwb3IgcXXDqSBsYSB2YXJpYWJsZSB5IGxvcyBmYWN0b3JlcyBwdWVkZW4gY29tcG9ydGFyc2UgZGUgbWFuZXJhIGRpZmVyZW50ZSBlbiBkaWZlcmVudGVzIHNpdHVhY2lvbmVzLiBQdWVkZSByZXZlbGFyIGZhY3RvcmVzIGVzcGVjw61maWNvIGNvbW8gY2FyYWN0ZXLDrXN0aWNhcyBkZW1vZ3LDoWZpY2FzLCBjb25kaWNpb25lcyBzb2Npb2Vjb27Ds21pY2FzIG8gZGlmZXJlbmNpYXMgY3VsdHVyYWxlcyB5IGRlbCByZXN1bHRhZG8gcXVlIHNlIHB1ZWRlIGVzcGVyYXIgbGEgcHLDs3hpbWEgdmV6IHF1ZSBzZSBhcGxpcXVlLg0KDQojICoqMi5QcnVlYmEgZGUgY2FtYmlhciBsb3MgYcOxb3MgYWdydXBhZG9zIHBhcmEgb2JzZXJ2YXIgdW5hIG1heW9yIHZhcmlhY2nDs24qKg0KDQpgYGB7cn0NCnBhbmVsMiA8LSBzZWxlY3QoZXhlcmNpc2VfMSxjb3VudHJ5LGRhdGUsU0wuSU5ELkVNUEwuRkUuWlMsTlkuR0RQLlBDQVAuQ0QsU0UuWFBELlRPVEwuR0QuWlMsU0wuVExGLlRPVEwuRkUuWlMsU1AuRFlOLkxFMDAuRkUuSU4sU0cuR0VOLlBBUkwuWlMpDQpwYW5lbF9wcnVlYmEgPC0gc3Vic2V0KHBhbmVsMixkYXRlID09IDIwMTEgfCBkYXRlID09IDIwMTQgfCBkYXRlID09IDIwMTh8IGRhdGUgPT0gMjAyMSkNClZpZXcocGFuZWwyKQ0KYGBgDQoNCiMjICoqMi4xIFBsb3QgcGFyYSBvYnNlcnZhciBsb3MgdmFsb3JlcyBhZ3J1cGFkb3MqKg0KDQpgYGB7cn0NCnBsb3RtZWFucyhTTC5JTkQuRU1QTC5GRS5aUyB+IGRhdGUsIGRhdGE9IHBhbmVsX3BydWViYSwgbWFpbj0gIiBIZXRlcm9nZW5laWRhZCBlbnRyZSBsb3MgYcOxb3MiKQ0KYGBgDQoNCiMgKiozLiBNb2RlbG9zIGNvbiBJbmRpY2Fkb3JlcyBkZWwgQmFuY28gTXVuZGlhbCoqDQoNCkVuIGVzdGUgbW9kZWxhZG8gZGUgZGF0b3MsIHNlIGRlY2lkacOzIHV0aWxpemFyIHRvZG9zIGxvcyBhw7FvcyBzaW4gYWdydXBhciAoMjAxMS0yMDIxKS4NCg0KIyMgKipNb2RlbG8gMS4gUmVncmVzaW9uIGFncnVwYWRhIChwb29sZWQpKioNCg0KYGBge3J9DQpWaWV3KGV4ZXJjaXNlXzEpDQptb2RlbG8xIDwtIHBsbShTTC5JTkQuRU1QTC5GRS5aUyB+IE5ZLkdEUC5QQ0FQLkNEICsgU0UuWFBELlRPVEwuR0QuWlMgKyBTTC5UTEYuVE9UTC5GRS5aUyArIFNQLkRZTi5MRTAwLkZFLklOICwgZGF0YSA9IGV4ZXJjaXNlXzEsIG1vZGVsID0gInBvb2xpbmciKQ0Kc3VtbWFyeShtb2RlbG8xKQ0KYGBgDQoNCiMjICoqTW9kZWxvIDIuIEVmZWN0b3MgZmlqb3MgKHdpdGhpbikqKg0KDQpgYGB7cn0NCm1vZGVsbzEuMiA8LSBwbG0oU0wuSU5ELkVNUEwuRkUuWlMgfiBOWS5HRFAuUENBUC5DRCArIFNFLlhQRC5UT1RMLkdELlpTICsgU0wuVExGLlRPVEwuRkUuWlMgKyBTUC5EWU4uTEUwMC5GRS5JTiAsIGRhdGEgPSBleGVyY2lzZV8xLCBtb2RlbCA9ICJ3aXRoaW4iKQ0Kc3VtbWFyeShtb2RlbG8xLjIpDQpgYGANCg0KIyMgKipQcnVlYmEgcEYqKg0KDQpgYGB7cn0NCiNFZmVjdG8gZmlqb3MgcHJpbWVybyB5IHBvb2xpbmcgZGVzcHVlcw0KI3NpZ25pZmljYW50IGVmZmVjdHMgc2lnbmlmaWNhIHF1ZSBzaSBoYXkgZGlmZXJlbmNpYSBlbnRyZSBsb3MgbW9kZWxvcyAodW5vIGVzIG1lam9yIHF1ZSBvdHJvKSBub24gc2lnbmlmaWNhbnQgcHVlZGVzIHVzYXIgZWwgcXVlIHNlYSBkZSBsb3MgbW9kZWxvcw0KDQpwRnRlc3QobW9kZWxvMS4yLG1vZGVsbzEpDQpgYGANCg0KRW4gZXN0ZSBjYXNvLCBleGlzdGVuIGRpZmVyZW5jaWFzIGVudHJlIGFtYm9zIG1vZGVsb3MsIHBvciBsbyBjdWFsIGVsIG1vZGVsbyBQb29sZWQgZXMgZWwgZWxlZ2lkbywgeWEgcXVlIHRpZW5lIHVuYSBSIGN1YWRyYWRhIGFqdXN0YWRhIGNvbiB1biByZXN1bHRhZG8gZGUgMC45NTEyMi4NCg0KIyMgKipNb2RlbG8gMy4gRWZlY3RvcyBhbGVhdG9yaW9zIChyYW5kb20pIC0gTWV0b2RvIHdhbGh1cyoqDQoNCmBgYHtyfQ0KbW9kZWxvMS4zIDwtIHBsbShTTC5JTkQuRU1QTC5GRS5aUyB+IE5ZLkdEUC5QQ0FQLkNEICsgU0UuWFBELlRPVEwuR0QuWlMgKyBTTC5UTEYuVE9UTC5GRS5aUyArIFNQLkRZTi5MRTAwLkZFLklOLCANCiAgICAgICAgICAgICAgICAgZGF0YSA9IHBhbmVsMiwNCiAgICAgICAgICAgICAgICAgbW9kZWwgPSAicmFuZG9tIiwgDQogICAgICAgICAgICAgICAgIHJhbmRvbS5tZXRob2QgPSAid2FsaHVzIikNCnN1bW1hcnkobW9kZWxvMS4zKQ0KYGBgDQoNCiMjICoqTW9kZWxvIDMuMiBFZmVjdG9zIGFsZWF0b3Jpb3MgKHJhbmRvbSkgLSBNZXRvZG8gYW1lbWl5YSoqDQoNCmBgYHtyfQ0KbW9kZWxvMS40IDwtIHBsbShTTC5JTkQuRU1QTC5GRS5aUyB+IE5ZLkdEUC5QQ0FQLkNEICsgU0UuWFBELlRPVEwuR0QuWlMgKyBTTC5UTEYuVE9UTC5GRS5aUyArIFNQLkRZTi5MRTAwLkZFLklOLCAgZGF0YSA9IGV4ZXJjaXNlXzEsIG1vZGVsID0gInJhbmRvbSIsIHJhbmRvbS5tZXRob2QgPSAiYW1lbWl5YSIpDQpzdW1tYXJ5KG1vZGVsbzEuNCkNCmBgYA0KDQojIyAqKk1vZGVsbyAzLjMqKg0KDQpgYGB7cn0NCm1vZGVsbzEuNSA8LSBwbG0oU0wuSU5ELkVNUEwuRkUuWlMgfiBOWS5HRFAuUENBUC5DRCANCiAgICAgICAgICAgICAgICAgKyBTRS5YUEQuVE9UTC5HRC5aUyArIFNMLlRMRi5UT1RMLkZFLlpTICsgU1AuRFlOLkxFMDAuRkUuSU4sIA0KICAgICAgICAgICAgICAgICBkYXRhID0gZXhlcmNpc2VfMSwNCiAgICAgICAgICAgICAgICAgbW9kZWwgPSAicmFuZG9tIiwgDQogICAgICAgICAgICAgICAgIHJhbmRvbS5tZXRob2QgPSAibmVybG92ZSIpDQpzdW1tYXJ5KG1vZGVsbzEuNSkNCmBgYA0KDQojIyAqKlBydWViYSBkZSBIYXVzbWFuKioNCg0KRW4gZXN0ZSBjYXNvLCBlbCBNb2RlbG8gMSBkZWwgdGlwbyBmaWpvIHBvb2xlZCBjdWVudGEgY29uIHVuIGNvZWZpY2llbnRlIGRlIFIgY3VhZHJhZGEgYWp1c3RhZGEgZGUgMC45NDU1LCBtaWVudHJhcyBxdWUgZWwgTW9kZWxvIDEuMyBkZWwgdGlwbyBhbGVhdG9yaW8gd2FsaHVzIHRpZW5lIHVuIHZhbG9yIGRlIDAuOTQ1NS4gQXVucXVlIGxvcyByZXN1bHRhZG9zIHNvbiBtdXkgcGFyZWNpZG9zLCBlbCB0ZXN0IGRlIEhhdXNtYW4gbm9zIHBlcm1pdGUgb2JzZXJ2YXIgcXVlIGhheSB1biBtZWpvciBtb2RlbG8sIHkgZW4gZXN0ZSBjYXNvLCBlcyBlbCBkZWwgdGlwbyBhZ3J1cGFkby4NCg0KU2UgcHVlZGUgaW5mZXJpciBxdWUgZXhpc3RlIGFsZ8O6biB0aXBvIGRlIGF1dG9jb3JyZWxhY2nDs24gc2VyaWFsIGdyYWNpYXMgYSBsYSBSIGN1YWRyYWRhIGFqdXN0YWRhIHRhbiBhbHRhIGRlbCBtb2RlbG8sIHBlcm8gZW4gc2lndWllbnRlcyBlamVyY2ljaW9zIGVuIGNsYXNlIHNlIGFwbGljYXLDoSBhbGfDum4gdGVzdCBwYXJhIGNvcnJvYm9yYXIgbGEgZXhhY3RpdHVkIGRlbCBtb2RlbG8uDQoNCmBgYHtyfQ0KI0VsIG1lam9yIGRlIGxvcyB0cmVzIGFsZWF0b3J1b3MgcXVlIGhheWEgc2FsaWRvIHByaW1lcm8gZW4gY29tcGFyYXRpdmEgY29uIGVsIG1lam9yIGFncnVwYWRvIG8gZmlqby4NCiNoYXVzbWFuID0gZmlqb3MgeSBhbGVhdG9yaW9zDQpwaHRlc3QobW9kZWxvMS4zLG1vZGVsbzEpDQpgYGANCg0KYGBge3J9DQpzdW1tYXJ5KG1vZGVsbzEpDQpgYGANCg0KRW4gZWwgbW9kZWxvIGVsZWdpZG8sIGhheSAzIHZhcmlhYmxlczogU0UuWFBELlRPVEwuR0QuWlMsIFNMLlRMRi5UT1RMLkZFLlpTOyBhbWJhcyBzb24gZXN0YWTDrXN0aWNhbWVudGUgc2lnbmlmaWNhdGl2YXMgY29uIHVuIDk5JSBkZSBzaWduaWZpY2FuY2lhLiBMYSB2YXJpYWJsZSBTUC5EWU4uTEUwMC5GRS5JTiwgZGUgaWd1YWwgbWFuZXJhLCBlcyBlc3RhZMOtc3RpY2FtZW50ZSBzaWduaWZpY2F0aXZhIGNvbiB1biA5NSUgZGUgY29uZmlhbnphLCBsbyBxdWUgaW5kaWNhIHF1ZSB0aWVuZW4gdW4gaW1wYWN0byBzaWduaWZpY2F0aXZvIGVuIGVsIHBvcmNlbnRhamUgZGUgZW1wbGVvIGVuIGxhIGluZHVzdHJpYSBkZSBtdWplcmVzLg0K