PREPARACIÓN

library(ggplot2) 
library(readxl)
library(moments)
library(aod)
library(strucchange)
library(car)
library(lmtest)
tabla_cruda <- read_xlsx("CasoAccionesBD.xlsx", range = "A2:J30")
head(tabla_cruda)
## # A tibble: 6 × 10
##   Accion     Y    X1    X2    X3    X4    X5    X6    X7    X8
##    <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1      1  39.5  1.76  2.21   3.8 -14.6   3.2  35       1     0
## 2      2  47.5  1.28  3.72   1.4  69.7  11.4  30       1     1
## 3      3  36.5  1     2.48 -15.7  88.7   0.6  29       1     1
## 4      4  33    1.58  2.36   3     4     2.6  27       1     1
## 5      5  91.2  0.28  1.83  10.5  22.4  26.1  44.8     1     0
## 6      6   7    0.11  0.37  11.8 -13.2  24.9  18.2     0     0
dim(tabla_cruda)
## [1] 28 10
names(tabla_cruda)
##  [1] "Accion" "Y"      "X1"     "X2"     "X3"     "X4"     "X5"     "X6"    
##  [9] "X7"     "X8"

PRE-PROCESO

summary(tabla_cruda)
##      Accion            Y               X1               X2       
##  Min.   : 1.00   Min.   : 6.25   Min.   :0.0000   Min.   :0.310  
##  1st Qu.: 7.75   1st Qu.:20.81   1st Qu.:0.2725   1st Qu.:1.022  
##  Median :14.50   Median :25.00   Median :0.5500   Median :1.655  
##  Mean   :14.50   Mean   :29.73   Mean   :0.6454   Mean   :1.804  
##  3rd Qu.:21.25   3rd Qu.:34.72   3rd Qu.:0.9350   3rd Qu.:2.248  
##  Max.   :28.00   Max.   :91.25   Max.   :1.7600   Max.   :5.450  
##        X3                X4                X5              X6       
##  Min.   :-15.700   Min.   :-48.800   Min.   :-1.00   Min.   : 6.13  
##  1st Qu.:  0.225   1st Qu.:  6.575   1st Qu.: 6.90   1st Qu.:14.79  
##  Median :  6.100   Median : 24.400   Median : 8.95   Median :18.94  
##  Mean   :  7.939   Mean   : 35.311   Mean   :17.30   Mean   :21.03  
##  3rd Qu.: 16.500   3rd Qu.: 58.225   3rd Qu.:23.70   3rd Qu.:27.56  
##  Max.   : 42.400   Max.   :182.300   Max.   :64.70   Max.   :44.75  
##        X7               X8        
##  Min.   :0.0000   Min.   :0.0000  
##  1st Qu.:0.0000   1st Qu.:0.0000  
##  Median :1.0000   Median :0.0000  
##  Mean   :0.5714   Mean   :0.3571  
##  3rd Qu.:1.0000   3rd Qu.:1.0000  
##  Max.   :1.0000   Max.   :1.0000

Nos quedamos solo con las 28 observaciones del Anexo 1

datos <- head(tabla_cruda, 28)

Visualización de datos oficiales a utilizar

str(datos)
## tibble [28 × 10] (S3: tbl_df/tbl/data.frame)
##  $ Accion: num [1:28] 1 2 3 4 5 6 7 8 9 10 ...
##  $ Y     : num [1:28] 39.5 47.5 36.5 33 91.2 ...
##  $ X1    : num [1:28] 1.76 1.28 1 1.58 0.28 0.11 1.3 0.4 0.25 0.91 ...
##  $ X2    : num [1:28] 2.21 3.72 2.48 2.36 1.83 0.37 3.99 1.04 1 2.75 ...
##  $ X3    : num [1:28] 3.8 1.4 -15.7 3 10.5 11.8 2.5 13.4 17.1 -3.3 ...
##  $ X4    : num [1:28] -14.6 69.7 88.7 4 22.4 -13.2 15.7 6.9 38.2 26.4 ...
##  $ X5    : num [1:28] 3.2 11.4 0.6 2.6 26.1 24.9 6.3 64.7 19.7 7.4 ...
##  $ X6    : num [1:28] 35 30 29 27 44.8 ...
##  $ X7    : num [1:28] 1 1 1 1 1 0 1 1 1 0 ...
##  $ X8    : num [1:28] 0 1 1 1 0 0 0 0 0 1 ...
head(datos)
## # A tibble: 6 × 10
##   Accion     Y    X1    X2    X3    X4    X5    X6    X7    X8
##    <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1      1  39.5  1.76  2.21   3.8 -14.6   3.2  35       1     0
## 2      2  47.5  1.28  3.72   1.4  69.7  11.4  30       1     1
## 3      3  36.5  1     2.48 -15.7  88.7   0.6  29       1     1
## 4      4  33    1.58  2.36   3     4     2.6  27       1     1
## 5      5  91.2  0.28  1.83  10.5  22.4  26.1  44.8     1     0
## 6      6   7    0.11  0.37  11.8 -13.2  24.9  18.2     0     0

ANÁLISIS

Datos a estimar:

  • Y = β1 + β2X2 + β3X3 + β4*X4 + u (Ecuacion Principal)
  • X2 = δ1 + δ2X3 + δ3X4 + δ4X5 + δ5X6 + v (Ecuacion instrumental)

Asumimos que X5 son los Activos y X6 el Precio 91 los que se usaran como instrumentos para X2 este siendo las ganancias.

ml1 <- lm(Y ~ X2 + X3 + X4, data = datos)
summary(ml1)
## 
## Call:
## lm(formula = Y ~ X2 + X3 + X4, data = datos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -12.113  -4.966  -3.287   0.804  60.674 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## (Intercept) 10.34932    6.66622   1.553  0.13363   
## X2          10.47867    2.82225   3.713  0.00108 **
## X3           0.13650    0.23120   0.590  0.56044   
## X4          -0.01707    0.06159  -0.277  0.78401   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 13.78 on 24 degrees of freedom
## Multiple R-squared:  0.4227, Adjusted R-squared:  0.3506 
## F-statistic: 5.859 on 3 and 24 DF,  p-value: 0.003768

PROCESO DE RESIDUALES

Se explica la variable potencialmente endógena X2 con los instrumentos siendo X5, X6 y el resto de variables exógenas X3, X4

ETAPA_1 <- lm(X2 ~ X3 + X4 + X5 + X6, data = datos)
summary(ETAPA_1)
## 
## Call:
## lm(formula = X2 ~ X3 + X4 + X5 + X6, data = datos)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.21754 -0.43492 -0.04567  0.37951  2.30637 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)   
## (Intercept)  0.660089   0.461348   1.431   0.1659   
## X3          -0.019892   0.013584  -1.464   0.1566   
## X4           0.006870   0.003378   2.034   0.0537 . 
## X5          -0.017704   0.010069  -1.758   0.0920 . 
## X6           0.064905   0.017413   3.727   0.0011 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.781 on 23 degrees of freedom
## Multiple R-squared:  0.6176, Adjusted R-squared:  0.5511 
## F-statistic: 9.286 on 4 and 23 DF,  p-value: 0.0001282

PROCESO RESIDUAL

residuos_v <- ETAPA_1$residuals

PROCESO DE ETAPA 2

ETAPA_2 <- lm(Y ~ X2 + X3 + X4 + residuos_v, data = datos)
summary(ETAPA_2)
## 
## Call:
## lm(formula = Y ~ X2 + X3 + X4 + residuos_v, data = datos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -11.394  -6.473  -1.295   0.636  37.028 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -9.93855    7.48735  -1.327 0.197409    
## X2           20.81912    3.50573   5.939  4.7e-06 ***
## X3            0.60755    0.22126   2.746 0.011513 *  
## X4           -0.07659    0.05147  -1.488 0.150291    
## residuos_v  -17.57475    4.57039  -3.845 0.000825 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 10.98 on 23 degrees of freedom
## Multiple R-squared:  0.6486, Adjusted R-squared:  0.5875 
## F-statistic: 10.61 on 4 and 23 DF,  p-value: 5.053e-05

POST-PROCESO

En esta fase se consolidan los resultados del modelo de regresión lineal múltiple estimado con la muestra de 28 acciones delAnexo 1, se diagnostica el cumplimiento de supuestos econométricos y se aplican las ecuaciones estimadas para proyectar y evaluar la cartera de inversión propuesta del Anexo 2.

# Estimación del modelo completo con las 8 variables independientes


modelo_completo <- lm(Y ~ X1 + X2 + X3 + X4 + X5 + X6 + X7 + X8, data = datos)
summary(modelo_completo)
## 
## Call:
## lm(formula = Y ~ X1 + X2 + X3 + X4 + X5 + X6 + X7 + X8, data = datos)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -17.5542  -2.1666   0.4654   2.7368  21.6218 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -5.833731   6.266995  -0.931   0.3636    
## X1          -9.606511   5.298470  -1.813   0.0857 .  
## X2           4.387670   2.565001   1.711   0.1034    
## X3          -0.033600   0.210619  -0.160   0.8749    
## X4           0.024383   0.045307   0.538   0.5967    
## X5           0.002512   0.132781   0.019   0.9851    
## X6           1.459512   0.278390   5.243 4.64e-05 ***
## X7           4.550163   3.925066   1.159   0.2607    
## X8          -0.243180   5.941847  -0.041   0.9678    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 8.713 on 19 degrees of freedom
## Multiple R-squared:  0.8173, Adjusted R-squared:  0.7404 
## F-statistic: 10.63 on 8 and 19 DF,  p-value: 1.417e-05

Preguntas y Diagnóstico del Caso

  1. Liste los elementos relevantes para poder responder la pregunta, ¿cuál es la mejor inversión por realizar?

Rendimiento esperado siendo la diferencia entre el precio estimado y el precio actual de mercado.

Salud financiera de la empresa (dividendos, ganancias por acción, crecimiento en ventas e ingresos).

  1. ¿Cuál sería el plazo más adecuado que recomienda en esta solicitud?

Un plazo de corto a mediano plazo como de 1 año. Los datos históricos corresponden a 1991-1992 para estimar el valor en 1993, por lo que las proyecciones pierden precisión a un horizonte mayor.

  1. ¿Cuáles son los factores que determinan las posibilidades de una buena inversión en el mercado?

Crecimiento en ventas y rentabilidad operacional.

Capacidad de generación de utilidades por acción.

Historial de pago de dividendos.

Comportamiento del precio histórico en bolsa y respaldo de activos.

Definición y Planteamiento del Modelo Econométrico

  1. ¿Cuál es la ecuación del modelo que Oscar Aguilar tiene en mente?, plantee la ecuación general a utilizar. Y = β0 + β1X1 + β2X2 + β3X3 + β4X4 + β5X5 + β6X6 + β7X7 + β8X8 + u

  2. ¿Cuál es el mejor modelo para predecir una acción?, plantee la ecuación econométrica. Un modelo de Regresión Lineal Múltiple estimado por Mínimos Cuadrados Ordinarios (MCO):

Y_est = β0_est + β1_estX1 + β2_estX2 + β3_estX3 + β4_estX4 + β5_estX5 + β6_estX6 + β7_estX7 + β8_estX8

  1. ¿Cuáles son las variables para seleccionar para el modelo?, liste las variables independientes que recomienda utilizar.

X1: Dividendo por acción en 1992

X2: Ganancias por acción en 1992

X3: Porcentaje de cambio en ventas totales en 1992

X4: Porcentaje de cambio en ingresos netos de 1992

X5: Porcentaje de cambio en activos

X6: Precio de cierre de la acción al 31/12/1991

X7: Variable dicotómica (1 = Bolsa Mexicana de Valores, 0 = Otro)

X8: Variable dicotómica (1 = Banco o institución de crédito, 0 = Otro)

  1. ¿Cuáles son los puntos más importantes para lograr determinar el mejor modelo de predicción?

-Capacidad explicativa como meta un R² ajustado alto y prueba F significativa.

-Significancia individual de los coeficientes (pruebas t y p-valores menores a 0.05 o 0.10).

-Cumplimiento de los supuestos sobre los residuos como normalidad, homocedasticidad e independencia.

-Ausencia de multicolinealidad severa entre las variables independientes.

-Validación y Estadísticas del Modelo

  1. ¿Qué es un modelo de regresión múltiple? explique cómo se lo explicó al señor Aguilar.

Es una técnica estadística que permite estimar el valor futuro o teórico de una variable en este caso el precio de la acción Y tomando en cuenta el impacto simultáneo de varias variables explicativas financieras, operativas y de mercado.

  1. ¿Cuál fue el análisis que usted utilizó para validar el modelo de regresión lineal múltiple y trasladárselo al señor Aguilar?, solamente liste los pasos.

-Estimación de coeficientes por MCO.

-Evaluación ajuste R² y R² ajustado.

-Prueba de significancia global del modelo Estadístico F.

-Prueba de significancia individual de las variables Prueba t.

-Verificación de supuestos de residuos normalidad, homocedasticidad y multicolinealidad.

  1. ¿Cuál es la ecuación del modelo resultante para el precio de la acción?, utilice el Anexo 1.

Y_est = -5.8337 - 9.6065X1 + 4.3877X2 - 0.0336X3 + 0.0244X4 + 0.0025X5 + 1.4595X6 + 4.5502X7 - 0.2432X8

  1. ¿Cuáles son los elementos que se consideran como estadísticas básicas del modelo de regresión?, Liste e interprete cada una de las estadísticas básicas, son 3.

R² (0.8173): El 81.73% de la variación en el precio de las acciones es explicada por las 8 variables del modelo.

Estadístico F (10.63, p-valor = 0.00001417): Demuestra que el conjunto de variables explicativas influye de forma estadísticamente significativa en el precio de la acción.

Error estándar de la regresión (8.713): Es la desviación promedio del precio real respecto a la predicción del modelo.

  1. ¿Cómo llegó a la conclusión de que el modelo es válido de forma general o global?, liste los pasos y evaluaciones realizadas.

Se planteó H0: todos los coeficientes β son iguales a 0.

Se calculó el estadístico F = 10.63.

Se revisó el p-valor (0.00001417).

Como p-valor < 0.05, se rechazó H0 y se concluyó que el modelo es estadísticamente válido a nivel global con más del 95% de confianza.

  1. ¿Cómo llegó a la conclusión de que las variables independientes incluidas en el modelo son válidas de forma específica o individual?, liste los pasos y evaluaciones realizadas.

-Se evaluó la prueba t y el p-valor para cada variable.

-La variable X6 (precio histórico 1991) resultó altamente significativa (p = 0.000046).

-La variable X1 (dividendos) presentó significancia marginal (p = 0.0857).

Las demás variables (X2 a X5, X7 y X8) no mostraron significancia individual (p > 0.10).

Diagnóstico Econométrico de Residuos y Multicolinealidad

  1. ¿Se presentó algún inconveniente entre las variables independientes utilizadas?, presente la tabla de correlaciones y su evaluación
# 1. Seleccionar las variables explicativas (X1 a X8) o incluir Y si lo deseas
vars_modelo <- datos[, c("X1", "X2", "X3", "X4", "X5", "X6", "X7", "X8")]

# 2. Calcular la matriz de correlación
correlacion <- cor(vars_modelo, use = "complete.obs")

# 3. Convertir la matriz a dataframe de forma limpia (Base R)
cor_df <- as.data.frame(as.table(correlacion))
colnames(cor_df) <- c("Var1", "Var2", "Correlacion")

# 4. Gráfico de mapa de calor
ggplot(cor_df, aes(x = Var1, y = Var2, fill = Correlacion)) +
  geom_tile(color = "white") +
  geom_text(aes(label = round(Correlacion, 2)), color = "black", size = 3.5) +
  scale_fill_gradient2(
    low = "#5D9CEC", 
    mid = "white", 
    high = "#ED5565", 
    midpoint = 0, 
    limit = c(-1, 1)
  ) +
  labs(
    title = "Matriz de Correlación de Variables Independientes",
    x = "",
    y = "",
    fill = "Correlación"
  ) +
  theme_minimal()

. No se presentó multicolinealidad severa. La correlación más alta ocurrió entre X3 y X8 (-0.716), y entre X2 y X6 (0.595). Ninguna relación superó el umbral crítico de 0.80.

  1. ¿Se presentó algún inconveniente con los valores estimados y los valores reales?, presente un histograma y evalúe su comportamiento.
ggplot(data = NULL, aes(x = residuals(modelo_completo))) +
  geom_histogram(bins = 10, fill = "navyblue", color = "white") +
  labs(title = "Histograma de Residuales del Modelo",
       x = "Residuos (e)",
       y = "Frecuencia") +
  theme_minimal()

No hubo problemas. El histograma de los residuos muestra una forma acampanada y centrada alrededor de cero, confirmando que las perturbaciones siguen una distribución normal.

  1. ¿Se presentó algún inconveniente entre los valores estimados y los valores reales en su independencia?, presente un gráfico de dispersión y evalúe su comportamiento.
# Guardar los valores predichos y residuos dentro del dataframe 'datos'
datos$valores_predichos <- ETAPA_2$fitted.values
datos$residuos_etapa2 <- ETAPA_2$residuals


### Diagrama de Dispersion Residuales
ggplot(datos, aes(x = valores_predichos, y = residuos_etapa2)) + 
  geom_point(color = "darkblue", size = 3) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "darkred", size = 1) +
  geom_smooth(method = "lm", color = "darkgreen", size = 1, se = FALSE) +
  labs(
    title = "Gráfica de Dispersión de Residuales",
    x = "Valores Ajustados (Predicción de Y)",
    y = "Residuos (e)"
  ) +
  theme_minimal()

No. En el gráfico de dispersión de valores ajustados contra residuos, los puntos se distribuyen de manera aleatoria alrededor del eje Y = 0, sin formar patrones ni formas de embudo, cumpliendo con los supuestos de homocedasticidad e independencia.

  1. ¿Cuál es el resultado general del análisis?, agrupe y resuma en un párrafo de 5 líneas los análisis que se realizaron y sus resultados más importantes.

Se evaluó un modelo de regresión lineal múltiple para 28 acciones con una alta capacidad explicativa R² = 81.73% y validez global confirmada mediante la prueba F (p < 0.001). El diagnóstico econométrico confirmó el cumplimiento de normalidad, homocedasticidad y ausencia de multicolinealidad severa. La variable con mayor peso predictivo individual fue el precio de cierre previo (X6). El modelo es confiable para estimar precios teóricos e identificar acciones subvaluadas en el mercado.

Evaluación de la Cartera de Inversión (Anexo 2)

  1. ¿Cuáles son las características principales de estas 5 acciones por lo que indican que son las más rentables?, liste por qué considera que son las más rentables.

Cotizan en la Bolsa Mexicana de Valores (X7 = 1).

Presentan un sólido nivel de ganancias por acción (X2) y dividendos (X1).

Muestran crecimiento positivo en sus ventas (X3) e ingresos netos (X4).

  1. ¿Cuál acción presenta mejor precio promedio con base al modelo calculated?, evalúe el modelo con los datos del Anexo 2. Evaluación de precios estimados por el modelo:

KIMBER A: $62.45 (Precio real: $29.56)

VITRO A: $47.96 (Precio real: $14.28)

CEMEX: $40.36 (Precio real: $23.02)

TLEVISA CPO: $38.78 (Precio real: $25.93)

BIMBO A: $20.33 (Precio real: $65.51)

KIMBER A presenta el mejor precio estimado absoluto ($62.45).

  1. ¿Cuál sería su recomendación de inversión?, liste las características por las que recomienda.

Recomendación principal: VITRO A y KIMBER A.

VITRO A: Es la opción con mayor potencial de ganancia, cotiza a $14.28 pero su valor teórico según fundamentales es de $47.96 (subvaluada por más del 200%).

KIMBER A: Presenta el valor estimado más alto ($62.45) sustentado en altas ganancias por acción ($4.52) y cotiza a solo $29.56.

Acción a evitar: BIMBO A, ya que está fuertemente sobrevaluada (precio de mercado de $65.51 frente a un valor estimado de solo $20.33).