Ejercicio 1:

Un agricultor desea clasificar frutas en su huerto en función de dos características: “Color” y “Textura”. El agricultor quiere determinar si las frutas son “Manzanas” o “Naranjas” basándose en estas características.

Análisis de variables:

Color: Puede ser “Rojo” para las manzanas y “Naranja” para las naranjas. Textura: Puede ser “Suave” para las manzanas y “Rugosa” para las naranjas.

Categorización:

Frutas rojas con textura suave son clasificadas como “Manzanas”. Frutas naranjas con textura rugosa son clasificadas como “Naranjas”.

Análisis de experimentación:

El agricultor realiza un experimento en el que examina 100 frutas. 60 de las frutas son rojas y suaves, y todas ellas son manzanas. 40 de las frutas son naranjas y rugosas, y todas ellas son naranjas.

# Instalar y cargar la librería rpart (para árboles de decisión)

library(rpart)
library(rpart.plot)
## Warning: package 'rpart.plot' was built under R version 4.3.3
# Crear un dataframe con los datos
frutas <- data.frame(
  Color = c(rep("Rojo", 40), rep("Naranja", 20)),
  Textura = c(rep("Suave", 40), rep("Rugosa", 20)),
  Clase = factor(c(rep("Manzana", 40), rep("Naranja", 20)))
)

# Entrenar el árbol de decisión
arbol_decision <- rpart(Clase ~ Color + Textura, data = frutas, method = "class")

# Visualizar el árbol de decisión
rpart.plot(arbol_decision)

Toma de decisiones:

Si una fruta es roja y suave, se clasifica como una manzana. Si una fruta es naranja y rugosa, se clasifica como una naranja.

Ejercicio 2:

Un banco quiere predecir si un cliente aceptará o rechazará un préstamo basándose en tres variables: “Ingreso mensual”, “Historial crediticio” y “Cantidad solicitada”. El banco quiere determinar si el cliente aceptará el préstamo.

###Análisis de variables:

Ingreso mensual: Se categoriza como “Bajo”, “Medio” o “Alto”. Historial crediticio: Puede ser “Bueno” o “Malo”. Cantidad solicitada: Se categoriza como “Pequeña”, “Mediana” o “Grande”.

Categorización:

Si el ingreso mensual es alto y el historial crediticio es bueno, es más probable que el cliente acepte el préstamo. Si el ingreso mensual es bajo o el historial crediticio es malo, es menos probable que el cliente acepte el préstamo. Si la cantidad solicitada es grande, el cliente puede ser más cauteloso al aceptar el préstamo, independientemente de otros factores.

Análisis de experimentación:

El banco recopila datos de 200 clientes. 120 de los clientes tienen un ingreso mensual alto y un historial crediticio bueno, y la mayoría de ellos aceptan el préstamo. 40 de los clientes tienen un ingreso mensual bajo o un historial crediticio malo, y la mayoría de ellos rechazan el préstamo. 40 de los clientes solicitan una cantidad grande, y aproximadamente la mitad de ellos aceptan el préstamo.

library(rpart)
library(rpart.plot)
# Crear un dataframe con los datos
clientes <- data.frame(
  Ingreso = c("Alto", "Medio", "Bajo", "Alto", "Bajo"),
  Historial_crediticio = factor(c("Bueno", "Malo", "Bueno", "Bueno", "Malo")),
  Aceptacion_prestamo = factor(c("Si", "No", "Si", "Si", "No"))
)

# Función para imprimir el árbol de decisión
imprimir_arbol <- function(ingreso, historial_crediticio, aceptacion) {
  cat("Ingreso:")
  cat("\n├── Alto: ")
  if (sum(ingreso == "Alto" & historial_crediticio == "Bueno" & aceptacion == "Si") > 0) {
    cat("Si")
  } else {
    cat("No")
  }
  cat("\n├── Medio: No")
  cat("\n└── Bajo: ")
  if (sum(ingreso == "Bajo" & aceptacion == "Si") > 0) {
    cat("Si")
  } else {
    cat("No")
  }
  cat("\n")
}

# Imprimir el árbol de decisión
imprimir_arbol(clientes$Ingreso, clientes$Historial_crediticio, clientes$Aceptacion_prestamo)
Ingreso:
├── Alto: Si
├── Medio: No
└── Bajo: Si

###Toma de decisiones:

Si el ingreso mensual es alto y el historial crediticio es bueno, es probable que el cliente acepte el préstamo. Si el ingreso mensual es bajo o el historial crediticio es malo, es probable que el cliente rechace el préstamo. Si la cantidad solicitada es grande, la decisión de aceptar el préstamo puede ser más equilibrada y dependerá de otros factores.

Ejercicio 3:

Una tienda de comercio electrónico desea predecir si un cliente realizará una compra o no en función de dos variables: “Tiempo de navegación en el sitio web” y “Número de productos vistos”. La tienda quiere determinar los factores que influyen en la decisión de compra de los clientes.

Análisis de variables:

Tiempo de navegación en el sitio web: Se mide en minutos. Número de productos vistos: Se cuenta el número de productos que un cliente ha visualizado durante su sesión en el sitio web.

Categorización:

Si el tiempo de navegación en el sitio web es menor a 10 minutos y el número de productos vistos es menor a 5, es menos probable que el cliente realice una compra. Si el tiempo de navegación en el sitio web es mayor o igual a 10 minutos o el número de productos vistos es mayor o igual a 5, es más probable que el cliente realice una compra.

Análisis de experimentación:

Se recopilan datos de 100 clientes. 60 de los clientes tienen un tiempo de navegación en el sitio web mayor o igual a 10 minutos o han visto 5 o más productos, y la mayoría de ellos han realizado una compra. 40 de los clientes tienen un tiempo de navegación en el sitio web menor a 10 minutos y han visto menos de 5 productos, y la mayoría de ellos no han realizado una compra.

# Crear un dataframe con los datos


  Tiempo_navegacion = c(rep("Menos de 10 minutos", 40), rep("10 minutos o más", 60))
  Productos_vistos = c(rep("Menos de 5 productos", 40), rep("5 o más productos", 60))
  Compra_realizada = c(rep("No", 40), rep("Sí", 60))


# Instalar y cargar el paquete rpart.plot

library(rpart.plot)
library(rpart)
# Crear el modelo de árbol de decisión




modelo_arbol <- rpart(Compra_realizada ~ Tiempo_navegacion + Productos_vistos, data = clientes, method = "class")

# Visualizar el árbol de decisión
rpart.plot(modelo_arbol, extra = 102, under = TRUE, fallen.leaves = TRUE, type = 2, branch.lty = 2, shadow.col = "gray")

Toma de decisiones:

Si el tiempo de navegación en el sitio web es mayor o igual a 10 minutos o el número de productos vistos es mayor o igual a 5, se predice que el cliente realizará una compra.

Si el tiempo de navegación en el sitio web es menor a 10 minutos y el número de productos vistos es menor a 5, se predice que el cliente no realizará una compra.

Ejercicio 4:

La Compañıa ABC ha desarrollado una nueva l´ınea de productos. La Administraci´on debe decidir una estrategia de marketing y producci´on adecuada. Se consideran tres estrategias, las cuales denominaremos: A (agresiva), B (b´asica) y C (precavida). Las condiciones del mercado bajo estudio se denotan mediante S (fuerte) o W (debil).

Análisis de variables:

Variables de mercado: S (fuerte) o W (débil). Estrategias de marketing y producción: A (agresiva), B (básica) y C (precavida). Resultados esperados: Ventas, rentabilidad, participación en el mercado, etc.

Categorización:

Las variables de mercado se categorizan como fuerte (S) o débil (W). Las estrategias de marketing y producción se categorizan como agresiva (A), básica (B) o precavida (C).

Análisis de experimentación:

Se puede llevar a cabo un análisis de experimentación simulando las diferentes estrategias en condiciones de mercado fuerte y débil. Se observan los resultados obtenidos para cada estrategia bajo diferentes condiciones del mercado. Se recopilan datos sobre las ventas, la rentabilidad, la aceptación del producto, etc.

Crear un dataframe con los datos

datos <- data.frame(
  Decision = c("A", "B", "C"),
  S = c(30, 20, 5),
  W = c(-8, 7, 15)
)
datos
##   Decision  S  W
## 1        A 30 -8
## 2        B 20  7
## 3        C  5 15

Tomar la decisión basada en los resultados esperados

decision_S <- datos[which.max(datos$S), "Decision"]
decision_W <- datos[which.max(datos$W), "Decision"]

# Imprimir la decisión para cada estado de la naturaleza
cat("Para el estado de la naturaleza S (fuerte), la decisión óptima es:", decision_S, "\n")
## Para el estado de la naturaleza S (fuerte), la decisión óptima es: A
cat("Para el estado de la naturaleza W (débil), la decisión óptima es:", decision_W, "\n")
## Para el estado de la naturaleza W (débil), la decisión óptima es: C

Visualisación del diagrama de arbol:

library(DiagrammeR)
## Warning: package 'DiagrammeR' was built under R version 4.3.3
# Crear un gráfico de árbol
arbol <- grViz('
  digraph {
    node [shape = rectangle, style = filled, fillcolor = white]
    
    // Nodos de decisión
    Inicio [label = "Inicio"]
    Naturaleza [label = "Naturaleza"]
    Decision_S [label = "Decisión óptima para S: A (30)"]
    Decision_W [label = "Decisión óptima para W: C (15)"]
    
    // Nodos de resultado
    Resultado_A [label = "Resultado para A"]
    Resultado_C [label = "Resultado para C"]
    
    // Conexiones
    Inicio -> Naturaleza
    Naturaleza -> Decision_S [label = "S"]
    Naturaleza -> Decision_W [label = "W"]
    
    Decision_S -> Resultado_A
    Decision_W -> Resultado_C
  }
')

# Mostrar el gráfico
arbol

Toma de decisiones:

Para el estado de la naturaleza S (fuerte), la decisión óptima es: A Para el estado de la naturaleza W (débil), la decisión óptima es: C

Ejercicio 5:

Una empresa compra la materia prima a dos proveedores A y B La probabilidad de recibir un lote del proveedor A en el que haya un 1% de piezas defectuosas es del 70%. Los pedidos que realiza la empresa ascienden a 1.000 piezas. Una pieza defectuosa puede ser reparada por 1 euro. Si bien tal y como indica la tabla la calidad del proveedor B es menor, éste está dispuesto a vender las 1.000 piezas por 10 euros menos que el proveedor A. Indique el proveedor que debe utilizar.

Análisis de Variables:

Identificar las variables relevantes en el problema, que incluyen la calidad de la materia prima proporcionada por cada proveedor (A y B), la probabilidad de recibir diferentes niveles de calidad de cada proveedor, el costo de reparación por pieza defectuosa y el costo de adquisición de las piezas.

Categorización:

Categorizar las variables en grupos relevantes para comprender mejor la situación. Por ejemplo, podríamos categorizar las variables relacionadas con la calidad de la materia prima y las probabilidades asociadas con cada proveedor.

Análisis de Experimentación:

Evaluar diferentes escenarios posibles y calcular el costo esperado en cada caso. Esto implica considerar las probabilidades de recibir diferentes niveles de calidad de cada proveedor y el costo asociado con cada nivel de calidad.

Crear un dataframe con los datos

datos <- data.frame(
  "Piezas defectuosas" = c("1%", "2%", "3%"),
  "Probabilidad proveedor A" = c(0.80, 0.10, 0.10),
  "Probabilidad proveedor B" = c(0.40, 0.30, 0.30)
)

# Imprimir el DataFrame
print(datos)
##   Piezas.defectuosas Probabilidad.proveedor.A Probabilidad.proveedor.B
## 1                 1%                      0.8                      0.4
## 2                 2%                      0.1                      0.3
## 3                 3%                      0.1                      0.3

Calcular el costo esperado para cada proveedor

Costo_esperado_A <- (datos$Probabilidad.proveedor.A) * 1; Costo_esperado_A
## [1] 0.8 0.1 0.1
Costo_esperado_B <- (datos$Probabilidad.proveedor.B + 10) * 1; Costo_esperado_B
## [1] 10.4 10.3 10.3

Tomar la decisión basada en los resultados esperados

decision <- ifelse(sum(datos$Costo_esperado_A) < sum(datos$Costo_esperado_B), "Proveedor A", "Proveedor B")
decision
## [1] "Proveedor B"

Visualisación del diagrama de arbol:

library(DiagrammeR)

arbol <- grViz('
  digraph {
    node [shape = rectangle, style = filled, fillcolor = white]
    
    // Nodos de decisión
    Inicio [label = "Inicio"]
    Proveedor_A [label = "Proveedor A"]
    Proveedor_B [label = "Proveedor B"]
    
    // Nodos de resultado
    A_1 [label = "Proveedor A\n(70%)\n1% defectuosas"]
    A_2 [label = "Proveedor A\n(10%)\n2% defectuosas"]
    A_3 [label = "Proveedor A\n(10%)\n3% defectuosas"]
    B_1 [label = "Proveedor B\n(80%)\n1% defectuosas"]
    B_2 [label = "Proveedor B\n(10%)\n2% defectuosas"]
    B_3 [label = "Proveedor B\n(10%)\n3% defectuosas"]
    
    // Conexiones
    Inicio -> Proveedor_A [label = "Proveedor A"]
    Inicio -> Proveedor_B [label = "Proveedor B"]
    
    Proveedor_A -> A_1 [label = "70%"]
    Proveedor_A -> A_2 [label = "10%"]
    Proveedor_A -> A_3 [label = "10%"]
    
    Proveedor_B -> B_1 [label = "80%"]
    Proveedor_B -> B_2 [label = "10%"]
    Proveedor_B -> B_3 [label = "10%"]
  }
')

# Mostrar el gráfico
arbol

Toma de Decisiones:

Los costos esperados del proveedor A es de 0.8 0.1 0.1 y del proveedor B es de 10.4 10.3 10.3 , el proveedor que minimiza el costo total para la empresa es el proveedor B