viernes, 24 de mayo de 2024

Planificación. Arbol del problema

Arbol del problema

Modelando la Situación problemática

Para compartir con otros

  • cómo visualizamos la situación problemática,

  • la interrelación entre aquélla, sus posibles causas y

  • los efectos

  • empleamos
un árbol del problema

Veamos qué paquete de R puede sernos útil

paquetes

Un árbol del problema no es más que un grafo:

nodos : causas, efectos


Las causas, el problemas y los efectos, conforman los nodos.

Supongamos que tenemos las causas A, B, C y D que origina un problema, P. Esas causas son nodos del problema y podemos modelar de esta forma, usando el paquete diagram:

require(diagram)
names <- c("A", "B", "C", "D")
M <- matrix(nrow = 4, ncol = 4, byrow = TRUE, data = 0)
plotmat(M, pos = c(1, 2, 1), name = names, lwd = 1,
        box.lwd = 2, cex.txt = 0.8, box.size = 0.1,
        box.type = "square", box.prop = 0.5)


nodos : causas, efectos


Los efectos también son nodos.

Supongamos que nuestro problema P, genera los efectos V, W, X, Y y Z, estos nodos pueden tambien modelarse de esta forma:

names <- c("V", "W", "Y", "Z")
M <- matrix(nrow = 4, ncol = 4, byrow = TRUE, data = 0)
plotmat(M, pos = c(1, 2, 1), name = names, lwd = 1,
        box.lwd = 2, cex.txt = 0.8, box.size = 0.1,
        box.type = "square", box.prop = 0.5)

Vinculos

Las relaciones entre los nodos se modelan como una línea o como una flecha. Nodos y vínculos son los ingredientes necesarios para un grafo

Grafo

names <- c("V", "W", "P", "Z")
M <- matrix(nrow = 4, ncol = 4, byrow = TRUE, data = 0)
M[2, 3]<-M[1,3] <-M[3,4]<- "produce"
plotmat(M, pos = c(2,1,1), curve = 0, name = names, lwd = 1,
        box.lwd = 2, cex.txt = 0.4, box.type = "square", box.prop = 0.4)

Arbol del problema como grafo

El árbol del problema, por tanto, es un grafo. Entonces, cualquier paquete que nos permita hacer grafos nos sirve para elaborar un árbol del problema en R. Hemos usado hasta ahora el paquete diagram. Sigamos con él y elaboremos un árbol del problema de un caso bastante conocido y muy usados en sobre todo el cursos de Marco lógico :

# pedimos un dispositivo grafico vacio
openplotmat()
# indicamos la posicion de los nodos. Empecemos por los efectos, 
# seguido por la posicion del problema y luego la posicion de las causas
pos <- c(2,2,1,2,2)
# los efectos del problema
textrect(pos[1,],0.15, 0.05, 
         lab = c("altas perdidas","economica"))
textrect(pos[2,],0.15, 0.05, 
         lab = c("imagen empresa","desmejorada"))
textrect(pos[3,],0.15, 0.05, 
         lab = c("pasajeros llegan",
                 "tarde trabajo"))
textrect(pos[4,],0.15, 0.05, 
         lab = c("altas frecuencia",
                 "heridos/muertos"))

# preparamos las flechas que van desde el problema hasta los efectos
splitarrow(from = pos[5, ], 
           to = elpos[3:4, ],
           arr.side = 2, #centre = c(0.5, 0.6),
           arr.pos=0.5, 
           dd = 0.5, segment=c(0.1,0.5))

# el problema
textrect(pos[5,],0.15, 0.05, 
         lab = c("altas accidentalidad","automotor"))

# las flechas que van desde las causas de primer nivel hasta el problema
splitarrow(from = pos[6:8, ],
           to = elpos[5, ],
           arr.side = 2, #centre = c(0.5, 0.6),
           arr.pos=0.5, dd = 0.5,
           segment=c(0.1,0.5))

# causas de primer nivel
textrect(pos[6,],0.15, 0.05, lab = c("imprudencia","conductores"))

textrect(pos[7,],0.15, 0.05, lab = c("mal estado","calles"))
textrect(pos[8,],0.15, 0.05, lab = c("malestado","vehiculos"))

splitarrow(from = pos[11:12, ], to = pos[8, ],
           arr.side = 2, #centre = c(0.5, 0.6),
           arr.pos=0.4, dd = 0.4, segment=c(0.0,0.5))
textrect(pos[11,],0.11, 0.05, lab = c("vehiculos","obsoletos"))
textrect(pos[12,],0.11, 0.05, lab = c("mal manten","vehiculos"))

# flechas de las dos ultimas causas
straightarrow(from = pos[3, ], 
              to = pos[1, ] + c(0.005, 0.),
              arr.type = "triangle", arr.pos = 0.7, 
              arr.lwd = 1,segment=c(0.2,0.7),
              endhead = TRUE)

# flechas de los efectos
straightarrow(from = pos[4, ], 
              to = pos[2, ] + c(0.005, 0.),
              arr.type = "triangle", arr.pos = 0.7, 
              arr.lwd = 1,segment=c(0.2,0.7),
              endhead = TRUE)

Resultado

No hay comentarios.: