1. Introducción
El objetivo de este análisis es construir y visualizar un árbol de
decisiones que ayude a “El Mercader de Venecia” a tomar decisiones
estratégicas para expandirse a tres municipios del estado de Hidalgo:
Huichapan, Tecozautla y Nopala.
# Cargamos paquetes necesarios y limpiamos la memoria
rm(list = ls()) # Remueve trabajos previos
# Cargar librerías necesarias
pacman::p_load(RSQLite, DBI, rpart, rpart.plot,
tidyr, janitor, dplyr, ggplot2)
# Quitar notación científica
options(scipen=999)
1.1 Leer la ruta del archivo
# Ruta a la base de datos
db_path <- "arbol_decisiones_expansion.db"
# Establecer la conexión
con <- dbConnect(RSQLite::SQLite(), db_path)
# Imprimir conexión (se llama con)
con
## <SQLiteConnection>
## Path: C:\Users\gus16\OneDrive\Documentos\Tema 4\arbol_decisiones_expansion.db
## Extensions: TRUE
1.2 Obtener lista de tablas disponibles en la base
SELECT name
FROM sqlite_master
WHERE type = "table";
3 records
| Mercados |
| Opciones_Estratégicas |
| Estudios_Mercado |
2. Exploración del contenido de las tablas
2.1 Tabla Estudios de Mercado
SELECT *
FROM Estudios_Mercado
UNION ALL
SELECT 4, 4, 'Análisis de consumo en Chapantongo', 2500000, 'Media'
LIMIT 5;
5 records
| 1 |
1 |
Estudio de Demanda en Huichapan |
Se espera un crecimiento moderado con una tendencia
favorable a la expansión. |
2023-05-01 |
| 2 |
2 |
Análisis de Competencia en Tecozautla |
Alta competencia local, requiere una estrategia
diferenciada para el éxito. |
2023-06-15 |
| 3 |
3 |
Estudio de Población en Nopala |
Mercado pequeño pero con baja competencia, alta
probabilidad de éxito. |
2023-07-20 |
| 4 |
4 |
Análisis de consumo en Chapantongo |
NA |
NA |
| 4 |
4 |
Análisis de consumo en Chapantongo |
2500000 |
Media |
2.2 Tabla Mercados
SELECT *
FROM Mercados
LIMIT 4;
4 records
| 1 |
Huichapan |
50000 |
Media |
1500000 |
0.65 |
| 2 |
Tecozautla |
35000 |
Alta |
1000000 |
0.55 |
| 3 |
Nopala |
25000 |
Baja |
750000 |
0.75 |
| 4 |
Chapantongo |
1200 |
3.0 |
450 |
0.80 |
2.3 Tabla Opciones Estratégicas
SELECT *
FROM Opciones_Estratégicas
UNION ALL
SELECT 10, 4, 'Expansión Total', 1500000, 3000000, 0.7
UNION ALL
SELECT 11, 4, 'Alianza Estratégica', 800000, 1800000, 0.8
UNION ALL
SELECT 12, 4, 'Expansión Parcial', 1000000, 2200000, 0.75
LIMIT 5;
5 records
| 1 |
1 |
Expansión Total |
2000000 |
3000000 |
0.70 |
| 2 |
1 |
Alianza Estratégica |
1000000 |
2000000 |
0.65 |
| 3 |
1 |
Expansión Parcial |
1200000 |
2500000 |
0.60 |
| 4 |
2 |
Expansión Total |
1500000 |
2500000 |
0.60 |
| 5 |
2 |
Alianza Estratégica |
800000 |
1800000 |
0.55 |
3 Manejo de tablas con SQL
3.1 Unión de dos tablas con SQL
-- Vamos a unir dos tablas: Estudios de Mercado y Mercados a partir
-- de la columnna Mercado_ID
-- Se usan alias de las tablas con función AS
SELECT estudios_mercado.*, mercado.*
FROM Estudios_Mercado AS estudios_mercado
INNER JOIN Mercados AS mercado
ON estudios_mercado.Mercado_ID = mercado.Mercado_ID;
-- La última línea menciona el nombre de las columnas que se parecen
-- Para acceder a una columna en R se usa $, en SQL se usa .
4 records
| 1 |
1 |
Estudio de Demanda en Huichapan |
Se espera un crecimiento moderado con una tendencia
favorable a la expansión. |
2023-05-01 |
1 |
Huichapan |
50000 |
Media |
1500000 |
0.65 |
| 2 |
2 |
Análisis de Competencia en Tecozautla |
Alta competencia local, requiere una estrategia
diferenciada para el éxito. |
2023-06-15 |
2 |
Tecozautla |
35000 |
Alta |
1000000 |
0.55 |
| 3 |
3 |
Estudio de Población en Nopala |
Mercado pequeño pero con baja competencia, alta
probabilidad de éxito. |
2023-07-20 |
3 |
Nopala |
25000 |
Baja |
750000 |
0.75 |
| 4 |
4 |
Análisis de consumo en Chapantongo |
NA |
NA |
4 |
Chapantongo |
1200 |
3.0 |
450 |
0.80 |
3.2 Consulta cruzada de tablas
-- Unir tablas Estudios_Mercado con Mercados, usando columna Mercado_ID
-- Filtrar para columna Nombre_Mercado == "Nopala"
SELECT estudios_mercado.*, mercado.*
FROM Estudios_Mercado AS estudios_mercado
INNER JOIN Mercados AS mercado
ON estudios_mercado.Mercado_ID = mercado.Mercado_ID
WHERE mercado.Nombre_Mercado = "Nopala";
1 records
| 3 |
3 |
Estudio de Población en Nopala |
Mercado pequeño pero con baja competencia, alta
probabilidad de éxito. |
2023-07-20 |
3 |
Nopala |
25000 |
Baja |
750000 |
0.75 |
4. Exploración de columnas en una tabla
4.1 Columnas de tabla Estudios de Mercado
-- Similar a función str() en R
-- Información necesaria para realizar nuevos registros
PRAGMA table_info(Estudios_Mercado);
5 records
| 0 |
Estudio_ID |
INTEGER |
0 |
NA |
1 |
| 1 |
Mercado_ID |
INTEGER |
0 |
NA |
0 |
| 2 |
Descripción |
TEXT |
0 |
NA |
0 |
| 3 |
Resultados |
TEXT |
0 |
NA |
0 |
| 4 |
Fecha_Estudio |
DATE |
0 |
NA |
0 |
5. Vista previa de los datos en R
# Ejemplo de programación en R
# Guardar lista de tablas en un objeto llamado tables
# Vamos a leer las tablas completas porque no son muy grandes
tables <- dbGetQuery(con, "SELECT name FROM sqlite_master WHERE type = 'table';")$name
# Loop para tener vista previa el contenido de cada tabla
for (table in tables){
my_query <- paste("SELECT * FROM", table, "LIMIT 5")
data_table <- dbGetQuery(con, my_query)
print(data_table)
}
## Mercado_ID Nombre_Mercado Tamaño_Mercado Competencia Costo_Entrada
## 1 1 Huichapan 50000 Media 1500000
## 2 2 Tecozautla 35000 Alta 1000000
## 3 3 Nopala 25000 Baja 750000
## 4 4 Chapantongo 1200 3.0 450
## 5 5 Chapantongo 1000 5 200
## Probabilidad_Éxito
## 1 0.65
## 2 0.55
## 3 0.75
## 4 0.80
## 5 0.75
## Opción_ID Mercado_ID Nombre_Opción Costo_Opción Beneficio_Estimado
## 1 1 1 Expansión Total 2000000 3000000
## 2 2 1 Alianza Estratégica 1000000 2000000
## 3 3 1 Expansión Parcial 1200000 2500000
## 4 4 2 Expansión Total 1500000 2500000
## 5 5 2 Alianza Estratégica 800000 1800000
## Probabilidad_Éxito_Opción
## 1 0.70
## 2 0.65
## 3 0.60
## 4 0.60
## 5 0.55
## Estudio_ID Mercado_ID Descripción
## 1 1 1 Estudio de Demanda en Huichapan
## 2 2 2 Análisis de Competencia en Tecozautla
## 3 3 3 Estudio de Población en Nopala
## 4 4 4 Análisis de consumo en Chapantongo
## Resultados
## 1 Se espera un crecimiento moderado con una tendencia favorable a la expansión.
## 2 Alta competencia local, requiere una estrategia diferenciada para el éxito.
## 3 Mercado pequeño pero con baja competencia, alta probabilidad de éxito.
## 4 <NA>
## Fecha_Estudio
## 1 2023-05-01
## 2 2023-06-15
## 3 2023-07-20
## 4 <NA>
6. Cargar los datos de las tablas
# Con esto las tablas ya están por separado como objetos en R
mercados <- dbGetQuery(con, "SELECT * FROM Mercados")
opciones <- dbGetQuery(con, "SELECT * FROM Opciones_Estratégicas")
estudios <- dbGetQuery(con, "SELECT * FROM Estudios_Mercado")
# Imprimir tablas
mercados
## Mercado_ID Nombre_Mercado Tamaño_Mercado Competencia Costo_Entrada
## 1 1 Huichapan 50000 Media 1500000
## 2 2 Tecozautla 35000 Alta 1000000
## 3 3 Nopala 25000 Baja 750000
## 4 4 Chapantongo 1200 3.0 450
## 5 5 Chapantongo 1000 5 200
## Probabilidad_Éxito
## 1 0.65
## 2 0.55
## 3 0.75
## 4 0.80
## 5 0.75
opciones
## Opción_ID Mercado_ID Nombre_Opción Costo_Opción Beneficio_Estimado
## 1 1 1 Expansión Total 2000000 3000000
## 2 2 1 Alianza Estratégica 1000000 2000000
## 3 3 1 Expansión Parcial 1200000 2500000
## 4 4 2 Expansión Total 1500000 2500000
## 5 5 2 Alianza Estratégica 800000 1800000
## 6 6 2 Expansión Parcial 1000000 2200000
## 7 7 3 Expansión Total 1200000 2000000
## 8 8 3 Alianza Estratégica 600000 1500000
## 9 9 3 Expansión Parcial 800000 1800000
## Probabilidad_Éxito_Opción
## 1 0.70
## 2 0.65
## 3 0.60
## 4 0.60
## 5 0.55
## 6 0.50
## 7 0.75
## 8 0.70
## 9 0.65
estudios
## Estudio_ID Mercado_ID Descripción
## 1 1 1 Estudio de Demanda en Huichapan
## 2 2 2 Análisis de Competencia en Tecozautla
## 3 3 3 Estudio de Población en Nopala
## 4 4 4 Análisis de consumo en Chapantongo
## Resultados
## 1 Se espera un crecimiento moderado con una tendencia favorable a la expansión.
## 2 Alta competencia local, requiere una estrategia diferenciada para el éxito.
## 3 Mercado pequeño pero con baja competencia, alta probabilidad de éxito.
## 4 <NA>
## Fecha_Estudio
## 1 2023-05-01
## 2 2023-06-15
## 3 2023-07-20
## 4 <NA>
7. Desconectar la base de datos
# A partir de este paso ya no puedo acceder a la base de datos
dbDisconnect(con)
8. Ajustar nombres de las columnas en las tablas
# Eliminar acentos y espacios de nombres de columnas
mercados <- clean_names(mercados)
opciones <- clean_names(opciones)
estudios <- clean_names(estudios)
# Imprimir resultados
mercados
## mercado_id nombre_mercado tamano_mercado competencia costo_entrada
## 1 1 Huichapan 50000 Media 1500000
## 2 2 Tecozautla 35000 Alta 1000000
## 3 3 Nopala 25000 Baja 750000
## 4 4 Chapantongo 1200 3.0 450
## 5 5 Chapantongo 1000 5 200
## probabilidad_exito
## 1 0.65
## 2 0.55
## 3 0.75
## 4 0.80
## 5 0.75
opciones
## opcion_id mercado_id nombre_opcion costo_opcion beneficio_estimado
## 1 1 1 Expansión Total 2000000 3000000
## 2 2 1 Alianza Estratégica 1000000 2000000
## 3 3 1 Expansión Parcial 1200000 2500000
## 4 4 2 Expansión Total 1500000 2500000
## 5 5 2 Alianza Estratégica 800000 1800000
## 6 6 2 Expansión Parcial 1000000 2200000
## 7 7 3 Expansión Total 1200000 2000000
## 8 8 3 Alianza Estratégica 600000 1500000
## 9 9 3 Expansión Parcial 800000 1800000
## probabilidad_exito_opcion
## 1 0.70
## 2 0.65
## 3 0.60
## 4 0.60
## 5 0.55
## 6 0.50
## 7 0.75
## 8 0.70
## 9 0.65
estudios
## estudio_id mercado_id descripcion
## 1 1 1 Estudio de Demanda en Huichapan
## 2 2 2 Análisis de Competencia en Tecozautla
## 3 3 3 Estudio de Población en Nopala
## 4 4 4 Análisis de consumo en Chapantongo
## resultados
## 1 Se espera un crecimiento moderado con una tendencia favorable a la expansión.
## 2 Alta competencia local, requiere una estrategia diferenciada para el éxito.
## 3 Mercado pequeño pero con baja competencia, alta probabilidad de éxito.
## 4 <NA>
## fecha_estudio
## 1 2023-05-01
## 2 2023-06-15
## 3 2023-07-20
## 4 <NA>
9. Asignar probabilidades
# Convertir mercado_id a factor y agregar nombres de municipios para asegurarnos de que se visualicen correctamente
opciones$mercado_nombre <- mercados$nombre_mercado[match(opciones$mercado_id, mercados$mercado_id)]
# Crear acrónimos para las opciones estratégicas
opciones$nombre_opcion <- as.character(opciones$nombre_opcion)
opciones <- opciones %>%
mutate(nombre_opcion = case_when(
nombre_opcion == "Expansión Total" ~ "exp_total",
nombre_opcion == "Alianza Estratégica" ~ "alia_estr",
nombre_opcion == "Expansión Parcial" ~ "exp_par"
))
# Asignar probabilidades y calcular el valor esperado para cada opción
opciones <- opciones %>%
mutate(valor_esperado = probabilidad_exito_opcion * beneficio_estimado -
(1 - probabilidad_exito_opcion) * costo_opcion)
# Convertir los valores monetarios a miles de pesos y asegurarse de que no usen notación científica
opciones <- opciones %>%
mutate(costo_opcion = costo_opcion / 1000,
beneficio_estimado = beneficio_estimado / 1000,
valor_esperado = valor_esperado / 1000)
# Renombrar columnas para simplificar
names(opciones) <- c("op_id", "merc_id", "nom_op", "cost_op", "ben_est", "prob_exito", "merc_nom", "val_esp")
# Visualizar el resultado de la transformación
print(opciones)
## op_id merc_id nom_op cost_op ben_est prob_exito merc_nom val_esp
## 1 1 1 exp_total 2000 3000 0.70 Huichapan 1500
## 2 2 1 alia_estr 1000 2000 0.65 Huichapan 950
## 3 3 1 exp_par 1200 2500 0.60 Huichapan 1020
## 4 4 2 exp_total 1500 2500 0.60 Tecozautla 900
## 5 5 2 alia_estr 800 1800 0.55 Tecozautla 630
## 6 6 2 exp_par 1000 2200 0.50 Tecozautla 600
## 7 7 3 exp_total 1200 2000 0.75 Nopala 1200
## 8 8 3 alia_estr 600 1500 0.70 Nopala 870
## 9 9 3 exp_par 800 1800 0.65 Nopala 890
10. Construcción y Visualización del árbol de decisiones
# Crear un modelo de árbol de decisiones con rpart
arbol <- rpart(val_esp ~ merc_nom + nom_op + cost_op + prob_exito,
data = opciones,
method = "anova",
control = rpart.control(minsplit = 2, cp = 0))
# Visualizar el árbol de decisiones con rpart.plot
rpart.plot(arbol, main = "Árbol de decisiones para expansión a \nnuevos mercados (miles de pesos)",
type = 4, extra = 101, # Muestra el valor ajustado del nodo
under = TRUE,
fallen.leaves = TRUE,
digits = 1, # Mostrar cantidades con tres decimales
box.palette = "RdYlGn",
tweak = 1.2)

10.1 Podado de árbol de decisiones
# Paso 1: Visualizar la tabla de costos de complejidad
printcp(arbol)
##
## Regression tree:
## rpart(formula = val_esp ~ merc_nom + nom_op + cost_op + prob_exito,
## data = opciones, method = "anova", control = rpart.control(minsplit = 2,
## cp = 0))
##
## Variables actually used in tree construction:
## [1] cost_op merc_nom nom_op prob_exito
##
## Root node error: 607289/9 = 67477
##
## n= 9
##
## CP nsplit rel error xerror xstd
## 1 0.558118047 0 1.000000000 1.2656 0.58778
## 2 0.314210700 1 0.441881953 1.9169 0.58147
## 3 0.103020711 2 0.127671253 1.5123 0.51459
## 4 0.019106777 3 0.024650542 1.6116 0.65266
## 5 0.004034324 4 0.005543765 1.5113 0.59917
## 6 0.000740998 5 0.001509441 1.4393 0.57910
## 7 0.000686109 6 0.000768443 1.4647 0.57860
## 8 0.000082333 7 0.000082333 1.4647 0.57860
## 9 0.000000000 8 0.000000000 1.4692 0.57826
# Paso 2: Seleccionar un valor de cp que permita una poda menos agresiva
# Aquí, seleccionaremos un cp más pequeño, que no sea el mínimo, pero que aún reduzca el tamaño del árbol
# Usamos la tabla para identificar un valor adecuado
best_cp <- arbol$cptable[which.min(arbol$cptable[,"xerror"]), "CP"]
# Probar con un cp un poco menor al seleccionado automáticamente
# Puedes intentar reducir el valor ligeramente
adjusted_cp <- best_cp / 2 # Esto es un ejemplo, puede ser ajustado según la tabla `printcp`
# Paso 3: Podar el árbol utilizando el valor ajustado de cp
arbol_podado <- prune(arbol, cp = adjusted_cp)
# Paso 4: Visualizar el árbol podado
rpart.plot(arbol_podado, main = "Árbol de decisiones podado para expansión a \nnuevos mercados (miles de pesos",
type = 4, extra = 101,
under = TRUE,
fallen.leaves = TRUE,
digits = 1,
box.palette = "RdYlGn",
tweak = 1.2)

11. Selección de opciones
# Crear la tabla con el valor esperado para cada municipio y opción
tabla_valores <- opciones %>%
select(merc_nom, nom_op, val_esp)
print(tabla_valores)
## merc_nom nom_op val_esp
## 1 Huichapan exp_total 1500
## 2 Huichapan alia_estr 950
## 3 Huichapan exp_par 1020
## 4 Tecozautla exp_total 900
## 5 Tecozautla alia_estr 630
## 6 Tecozautla exp_par 600
## 7 Nopala exp_total 1200
## 8 Nopala alia_estr 870
## 9 Nopala exp_par 890
# Encontrar el municipio con el valor esperado máximo para la opción "ExpTotal"
municipio_max <- tabla_valores %>%
filter(val_esp == max(val_esp))
# Imprimir un mensaje personalizado
municipio <- municipio_max$merc_nom
valor <- municipio_max$val_esp
estrategia <- municipio_max$nom_op
mensaje <- paste("El municipio elegido es", municipio, "con un valor esperado máximo de",
valor, "miles de pesos en la opción", estrategia,
"lo que lo convierte en la mejor opción para la expansión.")
print(mensaje)
## [1] "El municipio elegido es Huichapan con un valor esperado máximo de 1500 miles de pesos en la opción exp_total lo que lo convierte en la mejor opción para la expansión."
12. Evaluación del árbol de decisiones
# Evaluar y comparar las opciones dentro de cada municipio
evaluacion <- tabla_valores %>%
group_by(merc_nom) %>%
summarise(
exp_total = val_esp[nom_op == "exp_total"],
alia_estr = val_esp[nom_op == "alia_estr"],
exp_par = val_esp[nom_op == "exp_par"]
)
print(evaluacion)
## # A tibble: 3 × 4
## merc_nom exp_total alia_estr exp_par
## <chr> <dbl> <dbl> <dbl>
## 1 Huichapan 1500 950 1020
## 2 Nopala 1200 870 890
## 3 Tecozautla 900 630 600
# Encontrar la mejor opción para cada municipio
mejor_opcion_por_municipio <- tabla_valores %>%
group_by(merc_nom) %>%
filter(val_esp == max(val_esp)) %>%
arrange(desc(val_esp))
print(mejor_opcion_por_municipio)
## # A tibble: 3 × 3
## # Groups: merc_nom [3]
## merc_nom nom_op val_esp
## <chr> <chr> <dbl>
## 1 Huichapan exp_total 1500
## 2 Nopala exp_total 1200
## 3 Tecozautla exp_total 900
# Imprimir un mensaje personalizado para cada municipio
for (i in 1:nrow(mejor_opcion_por_municipio)) {
municipio <- mejor_opcion_por_municipio$merc_nom[i]
valor <- mejor_opcion_por_municipio$val_esp[i]
estrategia <- mejor_opcion_por_municipio$nom_op[i]
mensaje <- paste("En", municipio, "la mejor opción es", estrategia,
"con un valor esperado de", valor, "miles de pesos.")
print(mensaje)
}
## [1] "En Huichapan la mejor opción es exp_total con un valor esperado de 1500 miles de pesos."
## [1] "En Nopala la mejor opción es exp_total con un valor esperado de 1200 miles de pesos."
## [1] "En Tecozautla la mejor opción es exp_total con un valor esperado de 900 miles de pesos."
# Análisis adicional para la opción "ExpTotal"
# Comparar "ExpTotal" con otras opciones en el municipio seleccionado
municipio_seleccionado <- municipio_max$merc_nom
comparacion_exp_total <- tabla_valores %>%
filter(merc_nom == municipio_seleccionado)
print("Comparación de opciones en el municipio seleccionado:")
## [1] "Comparación de opciones en el municipio seleccionado:"
print(as.matrix(comparacion_exp_total))
## merc_nom nom_op val_esp
## [1,] "Huichapan" "exp_total" "1500"
## [2,] "Huichapan" "alia_estr" " 950"
## [3,] "Huichapan" "exp_par" "1020"
# Obtener el índice de la fila donde está el mayor valor esperado
indice_max <- which.max(comparacion_exp_total$val_esp)
# Construir la justificación con la opción correspondiente
razon <- paste("La opción", comparacion_exp_total$nom_op[indice_max], "fue seleccionada en", municipio_seleccionado,
"debido a que presentó el mayor valor esperado de", comparacion_exp_total$val_esp[indice_max],
"miles de pesos. Esta opción es preferible a las demás, dado que maximiza el retorno esperado",
"considerando tanto el beneficio estimado como la probabilidad de éxito.")
print(razon)
## [1] "La opción exp_total fue seleccionada en Huichapan debido a que presentó el mayor valor esperado de 1500 miles de pesos. Esta opción es preferible a las demás, dado que maximiza el retorno esperado considerando tanto el beneficio estimado como la probabilidad de éxito."
13. Análisis de sensibilidad
# Definir un rango de variación para la probabilidad de éxito (por ejemplo, entre 0.5 y 0.9)
probabilidades <- seq(0.5, 0.9, by = 0.05)
# Crear una función para calcular el valor esperado basado en la probabilidad de éxito variable
calcular_valor_esperado <- function(prob, cost, beneficio) {
return(prob * beneficio - (1 - prob) * cost)
}
# Calcular el número total de combinaciones de opciones y probabilidades
n_combinaciones <- nrow(opciones) * length(probabilidades)
# Aplicar el análisis de sensibilidad para cada opción y cada probabilidad de éxito
sensibilidad <- opciones %>%
slice(rep(1:n(), each = length(probabilidades))) %>%
mutate(
prob_exito = rep(probabilidades, times = nrow(opciones)),
val_esp_sens = calcular_valor_esperado(prob_exito, cost_op, ben_est)
)
# Modificar el nombre del municipio para incluir la opción elegida
sensibilidad <- sensibilidad %>%
left_join(mejor_opcion_por_municipio, by = c("merc_nom", "nom_op", "val_esp")) %>%
mutate(merc_nom = paste(merc_nom, " \n(", nom_op, ")", sep = ""))
# Mostrar una tabla de resultados del análisis de sensibilidad para "ExpTotal" en cada municipio
sensibilidad_exp_total <- sensibilidad %>%
filter(nom_op == "exp_total") %>%
arrange(merc_nom, prob_exito)
print(sensibilidad_exp_total)
## op_id merc_id nom_op cost_op ben_est prob_exito merc_nom
## 1 1 1 exp_total 2000 3000 0.50 Huichapan \n(exp_total)
## 2 1 1 exp_total 2000 3000 0.55 Huichapan \n(exp_total)
## 3 1 1 exp_total 2000 3000 0.60 Huichapan \n(exp_total)
## 4 1 1 exp_total 2000 3000 0.65 Huichapan \n(exp_total)
## 5 1 1 exp_total 2000 3000 0.70 Huichapan \n(exp_total)
## 6 1 1 exp_total 2000 3000 0.75 Huichapan \n(exp_total)
## 7 1 1 exp_total 2000 3000 0.80 Huichapan \n(exp_total)
## 8 1 1 exp_total 2000 3000 0.85 Huichapan \n(exp_total)
## 9 1 1 exp_total 2000 3000 0.90 Huichapan \n(exp_total)
## 10 7 3 exp_total 1200 2000 0.50 Nopala \n(exp_total)
## 11 7 3 exp_total 1200 2000 0.55 Nopala \n(exp_total)
## 12 7 3 exp_total 1200 2000 0.60 Nopala \n(exp_total)
## 13 7 3 exp_total 1200 2000 0.65 Nopala \n(exp_total)
## 14 7 3 exp_total 1200 2000 0.70 Nopala \n(exp_total)
## 15 7 3 exp_total 1200 2000 0.75 Nopala \n(exp_total)
## 16 7 3 exp_total 1200 2000 0.80 Nopala \n(exp_total)
## 17 7 3 exp_total 1200 2000 0.85 Nopala \n(exp_total)
## 18 7 3 exp_total 1200 2000 0.90 Nopala \n(exp_total)
## 19 4 2 exp_total 1500 2500 0.50 Tecozautla \n(exp_total)
## 20 4 2 exp_total 1500 2500 0.55 Tecozautla \n(exp_total)
## 21 4 2 exp_total 1500 2500 0.60 Tecozautla \n(exp_total)
## 22 4 2 exp_total 1500 2500 0.65 Tecozautla \n(exp_total)
## 23 4 2 exp_total 1500 2500 0.70 Tecozautla \n(exp_total)
## 24 4 2 exp_total 1500 2500 0.75 Tecozautla \n(exp_total)
## 25 4 2 exp_total 1500 2500 0.80 Tecozautla \n(exp_total)
## 26 4 2 exp_total 1500 2500 0.85 Tecozautla \n(exp_total)
## 27 4 2 exp_total 1500 2500 0.90 Tecozautla \n(exp_total)
## val_esp val_esp_sens
## 1 1500 500
## 2 1500 750
## 3 1500 1000
## 4 1500 1250
## 5 1500 1500
## 6 1500 1750
## 7 1500 2000
## 8 1500 2250
## 9 1500 2500
## 10 1200 400
## 11 1200 560
## 12 1200 720
## 13 1200 880
## 14 1200 1040
## 15 1200 1200
## 16 1200 1360
## 17 1200 1520
## 18 1200 1680
## 19 900 500
## 20 900 700
## 21 900 900
## 22 900 1100
## 23 900 1300
## 24 900 1500
## 25 900 1700
## 26 900 1900
## 27 900 2100
ggplot(sensibilidad_exp_total, aes(x = prob_exito, y = val_esp_sens, color = merc_nom)) +
geom_line() +
labs(title = "Análisis de Sensibilidad del Valor Esperado",
x = "Probabilidad de Éxito",
y = "Valor Esperado (miles de pesos)",
color = "Municipio \n(Opción)") +
theme_minimal()
