#Instalar paquetes y llamar librerías
#install.packages("plm")
library(plm)
#install.packages("gplots")
library(gplots)
** Valor del mercado de la industria del cuidado de la pien en México **
INSTRUCCIONES: genera el modelo de regresión lineal simple y calcula el coeficiente de determinación. ¿Cuál es el pronóstico para 2026?
df <- data.frame(
Año = c(2020, 2021, 2022, 2023, 2024, 2025),
Valor = c(2.00, 2.22, 2.35, 2.46, 2.53, 2.60)
)
modelo_regresión <- lm(Valor ~ Año, data=df)
summary(modelo_regresión)
##
## Call:
## lm(formula = Valor ~ Año, data = df)
##
## Residuals:
## 1 2 3 4 5 6
## -0.071429 0.033143 0.047714 0.042286 -0.003143 -0.048571
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -231.09429 27.17159 -8.505 0.00105 **
## Año 0.11543 0.01343 8.592 0.00101 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.0562 on 4 degrees of freedom
## Multiple R-squared: 0.9486, Adjusted R-squared: 0.9357
## F-statistic: 73.82 on 1 and 4 DF, p-value: 0.001008
df_pronostico <- data.frame(Año=2026)
predict(modelo_regresión, df_pronostico)
## 1
## 2.764
CONCLUSIÓN: El mercado muestra un crecimiento constante. Por cada año quie pasa, el valor del mercado de la industria del cuidado de la piel aumenta 115 M USD.
** Sueldo de los CEO y ventas de la Empresa **
INSTRUCCIONES: genera el modelo de elasticidad constante y calcula el coeficiente de determinación. ¿Cual es el promedio de sueldo para un CEO si la empresa vende $500 M USD?
df2 <- data.frame(
Ventas = c(2.72, 7.39, 20.09, 54.60, 148.41, 403.43),
Sueldo = c(375.31, 38.04, 627.50, 347.23, 448.99, 580.56)
)
modelo_elasticidad <- lm(log(Sueldo) ~ log(Ventas), data=df2)
summary(modelo_elasticidad)
##
## Call:
## lm(formula = log(Sueldo) ~ log(Ventas), data = df2)
##
## Residuals:
## 1 2 3 4 5 6
## 8.487e-01 -1.697e+00 8.487e-01 -1.958e-05 -3.567e-05 -9.288e-05
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.8218 0.9678 4.982 0.00758 **
## log(Ventas) 0.2570 0.2485 1.034 0.35938
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.039 on 4 degrees of freedom
## Multiple R-squared: 0.211, Adjusted R-squared: 0.01381
## F-statistic: 1.07 on 1 and 4 DF, p-value: 0.3594
df2_pronostico <- data.frame(Ventas=500)
predicción_log <- predict(modelo_elasticidad, df2_pronostico)
predicción <- exp(predicción_log)
predicción
## 1
## 613.5421
CONCLUSIÓN: La relación entre las ventas de la empresa y el sueldo de los CEO es inelástica. Por cada 1% que aumentan las ventas, el sueldo del CEO aumenta 0.25%.
Método ARE para argumentos claros y convincentes: Afirmación: Idea principal. Razón: Razonamiento lógico. Evidencia: Pruebas que apoyan la razón.
Relación de la publicidad en las ventas de las principales aerolíneas de México INSTRUCCIONES: Genera el mejpor modelo de predicción. ¿Cuál es el pronóstico de ventas para cada aerolínea si en 2026 gastaran 6M USD en publicidad?
df3 <- data.frame(
Empresa = c("Aeroméxico", "Aeroméxico", "Aeroméxico", "Volaris", "Volaris", "Volaris", "Viva", "Viva", "Viva"),
Año = c(2023, 2024, 2025, 2023, 2024, 2025, 2023, 2024, 2025),
Publicidad = c(1, 2, 3, 2, 3, 4, 3, 4, 5),
Ventas = c(12, 14, 16, 8, 10, 12, 4, 6, 8)
)
df3 <- pdata.frame(df3, index = c("Empresa","Año"))
#Lo siguiente es explicación
modelo_regresión2 <- lm(Ventas ~ Publicidad, data=df3)
summary(modelo_regresión2)
##
## Call:
## lm(formula = Ventas ~ Publicidad, data = df3)
##
## Residuals:
## Min 1Q Median 3Q Max
## -6 -3 0 3 6
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 13.000 3.645 3.567 0.00914 **
## Publicidad -1.000 1.134 -0.882 0.40708
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.928 on 7 degrees of freedom
## Multiple R-squared: 0.1, Adjusted R-squared: -0.02857
## F-statistic: 0.7778 on 1 and 7 DF, p-value: 0.4071
#Usando regresión el modelo nos da que el modelo baja la venta, lo cual no es correcto, por eso usamos otros modelos.
#Fin de la explicación
#Prueba de heterogeneidad
plotmeans(Ventas ~ Publicidad, data=df3)
## Warning in qt((1 + p)/2, ns - 1): NaNs produced
#INTERPRETACIÓN: Buscamos linea quebrada que una de los promedios (Hay heterogeneidad) para elegir entre modelo de efectos fijos o aleatorios. Si sale una línea horizontal. no hay heterogeneidad. Probablemente la mejor opción sea el modelo agrupado.
#Opción 1 - Modelo de regrsión agrupada (Pooled)
pooled <- plm(Ventas ~ Publicidad, data=df3, model="pooling")
summary(pooled)
## Pooling Model
##
## Call:
## plm(formula = Ventas ~ Publicidad, data = df3, model = "pooling")
##
## Balanced Panel: n = 3, T = 3, N = 9
##
## Residuals:
## Min. 1st Qu. Median 3rd Qu. Max.
## -6.0000e+00 -3.0000e+00 -1.0547e-15 3.0000e+00 6.0000e+00
##
## Coefficients:
## Estimate Std. Error t-value Pr(>|t|)
## (Intercept) 13.0000 3.6450 3.5666 0.009139 **
## Publicidad -1.0000 1.1339 -0.8819 0.407084
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 120
## Residual Sum of Squares: 108
## R-Squared: 0.1
## Adj. R-Squared: -0.028571
## F-statistic: 0.777778 on 1 and 7 DF, p-value: 0.40708
#Opción 2 - Modelo de efectos fijos (Within)
within <- plm(Ventas ~ Publicidad, data=df3, model="within")
## Warning in summary.lm(object, ...): essentially perfect fit: summary may be
## unreliable
summary(within)
## Oneway (individual) effect Within Model
##
## Call:
## plm(formula = Ventas ~ Publicidad, data = df3, model = "within")
##
## Balanced Panel: n = 3, T = 3, N = 9
##
## Residuals:
## Aeroméxico-2023 Aeroméxico-2024 Aeroméxico-2025 Viva-2023 Viva-2024
## -9.4246e-16 0.0000e+00 -1.8849e-16 1.8849e-16 0.0000e+00
## Viva-2025 Volaris-2023 Volaris-2024 Volaris-2025
## -1.8849e-16 1.8849e-16 0.0000e+00 -1.8849e-16
##
## Coefficients:
## Estimate Std. Error t-value Pr(>|t|)
## Publicidad 2.0000e+00 1.8849e-16 1.0611e+16 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 24
## Residual Sum of Squares: 1.0659e-30
## R-Squared: 1
## Adj. R-Squared: 1
## F-statistic: 1.12583e+32 on 1 and 5 DF, p-value: < 2.22e-16
#Prueba F
#INTERPRETACIÓN: si p < 0.05 no usar POOLED. Si p > 0.05 usar POOLED.
pFtest(within,pooled) #Ojo: El primer argumento es el modelo within!
##
## F test for individual effects
##
## data: Ventas ~ Publicidad
## F = 2.5331e+32, df1 = 2, df2 = 5, p-value < 2.2e-16
## alternative hypothesis: significant effects
#Opción 3 - Modelo de efectos aleatorios (Random)
random <- plm(Ventas ~ Publicidad, data=df3, model="random")
## Warning in summary.lm(object, ...): essentially perfect fit: summary may be
## unreliable
## Warning in summary.lm(object, ...): essentially perfect fit: summary may be
## unreliable
summary(random)
## Oneway (individual) effect Random Effect Model
## (Swamy-Arora's transformation)
##
## Call:
## plm(formula = Ventas ~ Publicidad, data = df3, model = "random")
##
## Balanced Panel: n = 3, T = 3, N = 9
##
## Effects:
## var std.dev share
## idiosyncratic 4.207e-31 6.486e-16 0.005
## individual 8.330e-29 9.127e-15 0.995
## theta: 0.959
##
## Residuals:
## Min. 1st Qu. Median 3rd Qu. Max.
## -2.5563e-01 -2.3550e-01 -1.0097e-16 2.3550e-01 2.5563e-01
##
## Coefficients:
## Estimate Std. Error z-value Pr(>|z|)
## (Intercept) 4.030201 1.870922 2.1541 0.03123 *
## Publicidad 1.989933 0.092814 21.4400 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 24.161
## Residual Sum of Squares: 0.36242
## R-Squared: 0.985
## Adj. R-Squared: 0.98286
## Chisq: 459.672 on 1 DF, p-value: < 2.22e-16
#Prueba de Hausman
#INTERPRETACIÓN: si p < 0.05 usar Efectos Fijos. Si p > 0.05 usar Efectos Aleatorios.
phtest(random,within) #Ojo: El primer argumento es el modelo random!
##
## Hausman Test
##
## data: Ventas ~ Publicidad
## chisq = 0.011765, df = 1, p-value = 0.9136
## alternative hypothesis: one model is inconsistent
#Por lo tanto el mejor modelo para este panel es el de EFECTOS ALEATORIOS.
df3_pronostico <- data.frame(
Empresa = c("Aeroméxico", "Volaris", "Viva"),
Año = c(2026, 2026, 2026),
Publicidad = c(6, 6, 6)
)
df3_pronostico <- pdata.frame(df3_pronostico, index = c("Empresa","Año"))
intercepto <- coef(random)["(Intercept)"]
pendiente <- coef(random)["Publicidad"]
efectos <- ranef(random)
df3_pronostico$Ventas <- intercepto + efectos + pendiente*df3_pronostico$Publicidad
df3_pronostico[,c("Ventas")]
## Aeroméxico-2026 Viva-2026 Volaris-2026
## 21.949664 9.989933 15.969799
CONCLUSIÓN: Existe una relación lineal perfecta y positiva entre la inversión de publicidad y las ventas de estas 3 aerolíneas. A través del modelo de efectos aleatorios se determinó que el pronóstico de ventas, si invirtiéran $6 M UDS en publicidad el siguiente año, sería de 22 M USD para Aeroméxico, 10 para Viva y 16 para Volaris.
Relación de la publicidad en las ventas de las principales empresas de Cuidado de la Piel en México INSTRUCCIONES: Genera el mejpor modelo de predicción. ¿Cuál es el pronóstico de ventas para cada empresa si en 2026 INCREMENTAN EN 10% sugasto en publicidad con respecto a 2025?
df4 <- data.frame ( Empresa = c("Genoma Lab", "Genoma Lab", "Genoma Lab", "L'oreal", "L'oreal", "L'oreal", "Beiersdorf", "Beiersdorf", "Beiersdorf", "Natura", "Natura", "Natura"),
Año = c(2023, 2024, 2025, 2023, 2024, 2025, 2023, 2024, 2025, 2023, 2024, 2025),
Publicidad = c(1920, 2050, 2010, 1580, 1750, 1890, 740, 810, 870, 560, 610, 640),
Ventas = c(7650, 8100, 7525, 13200, 14500, 15600, 5550, 6020, 6400, 6700, 7150, 7480)
)
df4 <- pdata.frame(df4, index = c("Empresa","Año"))
#Prueba de heterogeneidad
plotmeans(Ventas ~ Publicidad, data=df4)
## Warning in qt((1 + p)/2, ns - 1): NaNs produced
#Opción 1 - Modelo de regrsión agrupada (Pooled)
pooled <- plm(Ventas ~ Publicidad, data=df4, model="pooling")
summary(pooled)
## Pooling Model
##
## Call:
## plm(formula = Ventas ~ Publicidad, data = df4, model = "pooling")
##
## Balanced Panel: n = 4, T = 3, N = 12
##
## Residuals:
## Min. 1st Qu. Median 3rd Qu. Max.
## -3575.6 -1948.7 -477.5 1379.3 4876.8
##
## Coefficients:
## Estimate Std. Error t-value Pr(>|t|)
## (Intercept) 4778.6326 2081.2268 2.2961 0.04455 *
## Publicidad 3.1453 1.4681 2.1424 0.05780 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 134450000
## Residual Sum of Squares: 92152000
## R-Squared: 0.31459
## Adj. R-Squared: 0.24605
## F-statistic: 4.58984 on 1 and 10 DF, p-value: 0.057802
#Opción 2 - Modelo de efectos fijos (Within)
within <- plm(Ventas ~ Publicidad, data=df4, model="within")
summary(within)
## Oneway (individual) effect Within Model
##
## Call:
## plm(formula = Ventas ~ Publicidad, data = df4, model = "within")
##
## Balanced Panel: n = 4, T = 3, N = 12
##
## Residuals:
## Min. 1st Qu. Median 3rd Qu. Max.
## -350.440 -68.753 -5.220 49.412 406.936
##
## Coefficients:
## Estimate Std. Error t-value Pr(>|t|)
## Publicidad 7.02641 0.84282 8.3368 6.998e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 3738800
## Residual Sum of Squares: 342100
## R-Squared: 0.9085
## Adj. R-Squared: 0.85621
## F-statistic: 69.502 on 1 and 7 DF, p-value: 6.9984e-05
#Prueba F
#INTERPRETACIÓN: si p < 0.05 no usar POOLED. Si p > 0.05 usar POOLED.
pFtest(within,pooled) #Ojo: El primer argumento es el modelo within!
##
## F test for individual effects
##
## data: Ventas ~ Publicidad
## F = 626.19, df1 = 3, df2 = 7, p-value = 7.247e-09
## alternative hypothesis: significant effects
#Opción 3 - Modelo de efectos aleatorios (Random)
random2 <- plm(Ventas ~ Publicidad, data=df4, model="random")
summary(random)
## Oneway (individual) effect Random Effect Model
## (Swamy-Arora's transformation)
##
## Call:
## plm(formula = Ventas ~ Publicidad, data = df3, model = "random")
##
## Balanced Panel: n = 3, T = 3, N = 9
##
## Effects:
## var std.dev share
## idiosyncratic 4.207e-31 6.486e-16 0.005
## individual 8.330e-29 9.127e-15 0.995
## theta: 0.959
##
## Residuals:
## Min. 1st Qu. Median 3rd Qu. Max.
## -2.5563e-01 -2.3550e-01 -1.0097e-16 2.3550e-01 2.5563e-01
##
## Coefficients:
## Estimate Std. Error z-value Pr(>|z|)
## (Intercept) 4.030201 1.870922 2.1541 0.03123 *
## Publicidad 1.989933 0.092814 21.4400 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 24.161
## Residual Sum of Squares: 0.36242
## R-Squared: 0.985
## Adj. R-Squared: 0.98286
## Chisq: 459.672 on 1 DF, p-value: < 2.22e-16
#Prueba de Hausman
#INTERPRETACIÓN: si p < 0.05 usar Efectos Fijos. Si p > 0.05 usar Efectos Aleatorios.
phtest(random,within) #Ojo: El primer argumento es el modelo random!
##
## Hausman Test
##
## data: Ventas ~ Publicidad
## chisq = 36.148, df = 1, p-value = 1.829e-09
## alternative hypothesis: one model is inconsistent
#Por lo tanto el mejor modelo para este panel es el de EFECTOS ALEATORIOS.
df4_pronostico <- data.frame(
Empresa = c("Genoma Lab", "L'Oreal", "Beiersdorf", "Natura"),
Año = c(2026, 2026, 2026, 2026),
Publicidad = c(1.1*2010, 1.1*1890, 1.1*870, 1.1*640)
)
df4_pronostico <- pdata.frame(df4_pronostico, index = c("Empresa","Año"))
intercepto2 <- coef(random2)["(Intercept)"]
pendiente2 <- coef(random2)["Publicidad"]
efectos2 <- ranef(random2)
df4_pronostico$Ventas <- intercepto + efectos + pendiente*df4_pronostico$Publicidad
## Warning in get(.Generic)(e1, e2): longer object length is not a multiple of
## shorter object length
df4_pronostico[,c("Ventas")]
## Beiersdorf-2026 Genoma Lab-2026 L'Oreal-2026 Natura-2026
## 1914.376 4397.792 4141.101 1410.923
CONCLUSIÓN: Por cada 1 M USD adicional invertido en la publicidad, las ventas aumentan 6.78M.