#install.packages("readxl")
library(readxl)
#df1 <- read_excel("C:/Users/52812/Downloads/PATENT 3.xls")
#df1 <- read.csv("ruta/de/tu/archivo.xlsx")
#summary(df1)
Instrucciones: Genera el mejor modelo y Genera predicciones…Incluye conclusiones.
# Instalar paquetes si es necesario
# install.packages("readxl")
# install.packages("plm")
# install.packages("lmtest")
# install.packages("sandwich")
# install.packages("dplyr")
library(readxl)
library(plm)
library(lmtest)
## Cargando paquete requerido: zoo
##
## Adjuntando el paquete: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(sandwich)
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:plm':
##
## between, lag, lead
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
patentes <- read_excel("C:/Users/52812/Downloads/PATENT 3.xls", sheet = "Sheet1")
#LIMPIEZA DE DATOS
# Revisar valores NA
colSums(is.na(patentes))
## 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
patentes_modelo <- na.omit(patentes)
# Convertir a datos panel
panel_patentes <- pdata.frame(
patentes_modelo,
index = c("cusip", "year")
)
#Opcion 1 ~ Modelo de regresion Agrupada (Pooled)
pooled3_act <- plm(
patents ~ merger + employ + return + patentsg +
stckpr + rnd + rndeflt + rndstck + sales + sic,
data = panel_patentes,
model = "pooling"
)
summary(pooled3_act)
## Pooling Model
##
## Call:
## plm(formula = patents ~ merger + employ + return + patentsg +
## stckpr + rnd + rndeflt + rndstck + sales + sic, data = panel_patentes,
## model = "pooling")
##
## Unbalanced Panel: n = 215, T = 2-10, N = 2083
##
## Residuals:
## Min. 1st Qu. Median 3rd Qu. Max.
## -525.42194 -2.59738 -0.31264 1.88763 277.92369
##
## Coefficients:
## Estimate Std. Error t-value Pr(>|t|)
## (Intercept) 1.19864916 2.94181986 0.4075 0.68372
## merger 1.92231907 4.04770404 0.4749 0.63490
## employ 0.12548448 0.03060149 4.1006 4.280e-05 ***
## return 0.06432167 0.10374558 0.6200 0.53533
## patentsg 0.78696226 0.01016726 77.4016 < 2.2e-16 ***
## stckpr 0.00355791 0.02557045 0.1391 0.88935
## rnd -0.18291882 0.04480367 -4.0827 4.621e-05 ***
## rndeflt 0.26805014 0.03877619 6.9128 6.306e-12 ***
## rndstck -0.00122890 0.00628664 -0.1955 0.84504
## sales -0.00054529 0.00025769 -2.1161 0.03446 *
## sic -0.00049485 0.00081918 -0.6041 0.54586
## ---
## 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
## F-statistic: 1750.44 on 10 and 2072 DF, p-value: < 2.22e-16
#Opcion 2 ~ Modelo de regresion Agrupada/Efectos Fijos (Within)
within3_act <- plm(
patents ~ merger + employ + return + patentsg +
stckpr + rnd + rndeflt + rndstck + sales + sic,
data = panel_patentes,
model = "within"
)
summary(within3_act)
## 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
#PruebaF
pFtest(within3_act,pooled3_act)
##
## F test for individual effects
##
## data: patents ~ merger + employ + return + patentsg + stckpr + rnd + ...
## F = 5.3788, df1 = 213, df2 = 1859, p-value < 2.2e-16
## alternative hypothesis: significant effects
#Opcion 3 ~ Modelo de regresion efectos Aleatorios (Random)
random3_act <- plm(
patents ~ merger + employ + return + patentsg +
stckpr + rnd + rndeflt + rndstck + sales + sic,
data = panel_patentes,
model = "random"
)
summary(random3_act)
## Oneway (individual) effect Random Effect Model
## (Swamy-Arora's transformation)
##
## Call:
## plm(formula = patents ~ merger + employ + return + patentsg +
## stckpr + rnd + rndeflt + rndstck + sales + sic, data = panel_patentes,
## model = "random")
##
## Unbalanced Panel: n = 215, T = 2-10, N = 2083
##
## Effects:
## var std.dev share
## idiosyncratic 384.3 19.6 1
## individual 0.0 0.0 0
## theta:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0 0 0 0 0 0
##
## Residuals:
## Min. 1st Qu. Median 3rd Qu. Max.
## -525.42194 -2.59738 -0.31264 1.88763 277.92369
##
## Coefficients:
## Estimate Std. Error z-value Pr(>|z|)
## (Intercept) 1.19864916 2.94181986 0.4075 0.68368
## merger 1.92231907 4.04770404 0.4749 0.63485
## employ 0.12548448 0.03060149 4.1006 4.121e-05 ***
## return 0.06432167 0.10374558 0.6200 0.53526
## patentsg 0.78696226 0.01016726 77.4016 < 2.2e-16 ***
## stckpr 0.00355791 0.02557045 0.1391 0.88934
## rnd -0.18291882 0.04480367 -4.0827 4.452e-05 ***
## rndeflt 0.26805014 0.03877619 6.9128 4.753e-12 ***
## rndstck -0.00122890 0.00628664 -0.1955 0.84502
## sales -0.00054529 0.00025769 -2.1161 0.03434 *
## sic -0.00049485 0.00081918 -0.6041 0.54579
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 10910000
## Residual Sum of Squares: 1154800
## R-Squared: 0.89416
## Adj. R-Squared: 0.89365
## Chisq: 17504.4 on 10 DF, p-value: < 2.22e-16
# Prueba de Hausman
#INTERPRETACION: Si p<0.05, usar efectos fijos; Si p>0.05 usar efectos aleatorios
phtest(random3_act, within3_act)
##
## Hausman Test
##
## data: patents ~ merger + employ + return + patentsg + stckpr + rnd + ...
## chisq = 1104.9, df = 9, p-value < 2.2e-16
## alternative hypothesis: one model is inconsistent
#El mejor modelo para este panel es el de EFECTOS FIJOS
#ERRORES ESTANDAR ROBUSTOS
coeftest(
within3_act,
vcov = vcovHC(
within3_act,
type = "HC1",
cluster = "group"
)
)
##
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## merger 6.02467998 2.55971733 2.3537 0.018694 *
## employ -0.09095534 0.14487117 -0.6278 0.530188
## return -0.01221444 0.06872888 -0.1777 0.858963
## patentsg 0.03913907 0.17892930 0.2187 0.826876
## stckpr -0.03959771 0.03723865 -1.0633 0.287761
## rnd -2.04101003 0.87516556 -2.3321 0.019800 *
## rndeflt 3.25369409 1.15886687 2.8077 0.005043 **
## rndstck 0.19724166 0.09811965 2.0102 0.044553 *
## sales -0.00188938 0.00074645 -2.5312 0.011451 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#SITUACION PROBLEMA INVENTADA: Pronóstico de patentes para 2022 suponiendo que cada empresa mantiene en 2022 los valores de sus variables explicativas observados en 2021.
# Tomamos los datos observados en 2021
df_prediccion2022 <- subset(patentes_modelo, year == 2021)
# Cambiamos el año a 2022
df_prediccion2022$year <- 2022
coeficientes <- coef(within3_act)
# Efectos individuales de cada empresa
efectos_act3 <- fixef(within3_act)
# Intercepto + efecto individual + variables explicativas
df_prediccion2022$Patentes_Pronosticadas <-
efectos_act3[as.character(df_prediccion2022$cusip)] +
coeficientes["merger"] * df_prediccion2022$merger +
coeficientes["employ"] * df_prediccion2022$employ +
coeficientes["return"] * df_prediccion2022$return +
coeficientes["patentsg"] * df_prediccion2022$patentsg +
coeficientes["stckpr"] * df_prediccion2022$stckpr +
coeficientes["rnd"] * df_prediccion2022$rnd +
coeficientes["rndeflt"] * df_prediccion2022$rndeflt +
coeficientes["rndstck"] * df_prediccion2022$rndstck +
coeficientes["sales"] * df_prediccion2022$sales
#RESULTADOS DE PRONOSTICO
df_prediccion2022[, c(
"cusip",
"year",
"Patentes_Pronosticadas"
)]
## # A tibble: 206 × 3
## cusip year Patentes_Pronosticadas
## <dbl> <dbl> <dbl>
## 1 800 2022 38.6
## 2 4626 2022 3.64
## 3 4671 2022 1.43
## 4 20753 2022 0.517
## 5 21367 2022 0.593
## 6 23519 2022 13.2
## 7 29069 2022 0.463
## 8 38213 2022 1.48
## 9 54303 2022 -2.47
## 10 67131 2022 1.30
## # ℹ 196 more rows
CONCLUSION: “El mejor modelo para la base de datos PATENT 3 es el modelo de efectos fijos, debido a que la prueba de Hausman rechaza la hipótesis de que los efectos individuales no estén correlacionados con las variables explicativas. El modelo utiliza las características específicas de cada empresa y explica aproximadamente el 34.5% de la variación de las patentes dentro de las empresas a través del tiempo. Bajo el escenario planteado de la actividad, el modelo estima aproximadamente 4.20 patentes. Para generar pronósticos futuros, es necesario establecer previamente los valores esperados de las variables explicativas; por ello, el pronóstico de 2022 presentado se interpreta como un escenario en el que dichas variables permanecen constantes respecto a 2021.”
Instrucciones: Genera el mejor modelo y Genera predicciones…Incluye conclusiones. Si tuvieras que invertir en alguna sub-categoría, ¿en cuál lo harías? Justifica ampliamente tu respuesta…
Instrucciones: Importar datos del Banco Mundial, Genera el mejor modelo y Genera predicciones…Incluye conclusiones y graficas.
Puntos Extras: +10 puntos sobre el examen si se entrega un PDF adicional con el código equivalente de este trabajo pero en Python o si se entrega una automatización con Claude relacionado con el tema “Datos de Panel” (de preferencia con la Industria del Cuidado de la Piel).