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\USER\OneDrive\Escritorio\Universidad\Gestion\7mo\ANÁLISIS DE DATOS E INTELIGENCIA DE NEGOCIOS\tema 04\Data\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
LIMIT 5;
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 |
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 |
Estudio relacionado con Apan |
Mercado pequeño pero con baja competencia, alta
probabilidad de éxito. |
2023-07-20 |
2.2 Tabla Mercados
SELECT *
FROM Mercados
LIMIT 5;
4 records
1 |
Huichapan |
50000 |
Media |
1500000 |
0.65 |
2 |
Tecozautla |
35000 |
Alta |
1000000 |
0.55 |
3 |
Nopala |
25000 |
Baja |
750000 |
0.75 |
4 |
Apan |
30000 |
Media |
800000 |
0.00 |
2.3 Tabla Opciones Estratégicas
SELECT *
FROM Opciones_Estratégicas
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 |
Estudio relacionado con Apan |
Mercado pequeño pero con baja competencia, alta
probabilidad de éxito. |
2023-07-20 |
4 |
Apan |
30000 |
Media |
800000 |
0.00 |
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)
}
## Warning: Column `Probabilidad_Éxito`: mixed type, first seen values of type
## real, coercing other values of type string
## 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 Apan 30000 Media 800000
## Probabilidad_Éxito
## 1 0.65
## 2 0.55
## 3 0.75
## 4 0.00
## 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 Estudio relacionado con Apan
## 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 Mercado pequeño pero con baja competencia, alta probabilidad de éxito.
## Fecha_Estudio
## 1 2023-05-01
## 2 2023-06-15
## 3 2023-07-20
## 4 2023-07-20
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")
## Warning: Column `Probabilidad_Éxito`: mixed type, first seen values of type
## real, coercing other values of type string
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 Apan 30000 Media 800000
## Probabilidad_Éxito
## 1 0.65
## 2 0.55
## 3 0.75
## 4 0.00
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 Estudio relacionado con Apan
## 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 Mercado pequeño pero con baja competencia, alta probabilidad de éxito.
## Fecha_Estudio
## 1 2023-05-01
## 2 2023-06-15
## 3 2023-07-20
## 4 2023-07-20
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 Apan 30000 Media 800000
## probabilidad_exito
## 1 0.65
## 2 0.55
## 3 0.75
## 4 0.00
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 Estudio relacionado con Apan
## 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 Mercado pequeño pero con baja competencia, alta probabilidad de éxito.
## fecha_estudio
## 1 2023-05-01
## 2 2023-06-15
## 3 2023-07-20
## 4 2023-07-20
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()
