3 Taller 3: Modelo de Negocio Simple (Analisis de Sensibilidad)
3.1 Taller 3: Introduccion
En este último análisis vamos a estudiar el efecto de dos variables claves del modelo que hasta ahora no hemos tomado en cuenta:
- El número de inversores
- El tamaño del mundo
¿Que efecto tiene estas dos variables (de manera simultanea) sobre la riqueza de los inversores después de 25 años?
(El modelo básico lo puede bajar del siguiente enlace:
3.2 Taller 3: Modificando el Modelo
3.2.1 Deslizadores
Definamos dos deslizadores:
- num-inversores: para variar el número de inversores
- tam-mundo: para variar el tamaño del mundo
3.2.2 Procedimientos
Ahora modifiquemos el modelo, primero modifiquemos setup-inversores para incluir el deslizador:
to setup-inversores
ask n-of num-inversores patches [ ; Nuevo: Inversores controlados por deslizador num-inversores
sprout-inversores 1
]
ask inversores [
set W 0 ; dinero en 0
pen-down ; rastro para visualizar como cada agente busca inversiones
]
end
Ahora modifiquemos el setup, añadiendo un procedimiento setup-mundo para poder cambiar con el deslizador construido el tamaño del mundo
to setup
clear-all
setup-mundo ; Nuevo Proc setup-mundo
setup-parcelas
setup-inversores
interruptores ; ayudas de visualización del modelo
reset-ticks
end
to setup-mundo ; Nuevo se crea mundo de acuerdo al deslizador tam-mundo
resize-world (- tam-mundo / 2) tam-mundo / 2 (- tam-mundo / 2) tam-mundo / 2
set-patch-size 216 * 2.2 / tam-mundo ; el tamaño de la parcela se cuadra para que el mundo siempre se vea de un tamaño adecuado
end
setup-mundo cambia tanto el tamaño del mundo (resize-world) como el de las parcelas (set-patch-size) de tal manera que el mundo se visualize correctamente. El modelo con un tamaño de 8 y 50 inversores sería el siguiente:
3.2.3 El Experimento
Creemos el experimento para poder analizar el efecto del número de inversores y el tamaño del mundo sobre la riqueza:
Solo variamos los deslizadores que definimos y deascativamos “Evaluar las ejecuciones a cada paso” ya que solo queremos observar resultados finales ( a los 25 años). Corra el experiemnto y guarde los datos resuiltantes.
3.3 Taller 3: Rstudio
Importemos los datos a Rstudio
## X.run.number. num.inversores tam.mundo X.step.
## 1 4 50 15 25
## 2 3 50 15 25
## 3 1 50 15 25
## 4 6 50 15 25
## 5 5 50 15 25
## 6 7 50 15 25
## mean..W..of.inversores
## 1 135951.9
## 2 128363.4
## 3 122975.7
## 4 124873.4
## 5 134091.1
## 6 163788.2
Seleccionemos las tres columnas que nos interesan:
## ── Attaching packages ───────────────────────── tidyverse 1.3.0 ──
## ✓ ggplot2 3.3.0 ✓ purrr 0.3.4
## ✓ tibble 3.0.1 ✓ dplyr 0.8.5
## ✓ tidyr 1.1.0 ✓ stringr 1.4.0
## ✓ readr 1.3.1 ✓ forcats 0.4.0
## ── Conflicts ──────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
data <- data %>% select(num.inversores,tam.mundo,mean..W..of.inversores)
colnames(data)<- c("inversores","mundo","riqueza")
head(data)
## inversores mundo riqueza
## 1 50 15 135951.9
## 2 50 15 128363.4
## 3 50 15 122975.7
## 4 50 15 124873.4
## 5 50 15 134091.1
## 6 50 15 163788.2
Agrupemos los datos por inversores y tamaño del mundo:
## # A tibble: 6 x 3
## # Groups: inversores [1]
## inversores mundo riquezaP
## <int> <int> <dbl>
## 1 50 15 135799.
## 2 50 20 141836.
## 3 50 25 139714.
## 4 50 30 155572.
## 5 50 35 147588.
## 6 50 40 157463.
Con los datos agrupados podemos construir una matriz con :
- filas(y) : tamaño del mundo
- columnas (x) : número de inversores
- valores matriciales (z): riqueza
Usaremos la librería plotly para visualizar la matriz en 2D:
##
## Attaching package: 'reshape2'
## The following object is masked from 'package:tidyr':
##
## smiths
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
riqueza <- acast(datag,mundo ~ inversores,value.var="riquezaP")
ejey <- as.numeric(rownames(riqueza))
ejex <- as.numeric(colnames(riqueza))
fig <- plot_ly(
x=ejex,y=ejey,z=riqueza,
type = "contour"
)
fig
Usaremos la librerpia plotly para visualizar la matriz en 3D:
library(reshape2)
library(plotly)
riqueza <- acast(datag,mundo ~ inversores,value.var="riquezaP")
ejey <- as.numeric(rownames(riqueza))
ejex <- as.numeric(colnames(riqueza))
fig <- plot_ly() %>%
add_surface(x=~ejex, y = ~ejey, z = ~riqueza) %>%
layout(title="mundo-inversores vs riqueza",
scene=list(
xaxis=list(title="Inversores"),
yaxis=list(title="mundo"),
zaxis=list(title="riqueza")
))
fig
3.4 Preguntas
Estas gráficas (contour 3D plots) son muy útiles para analizar modelos basados en agnetes cuando queremos ver la influencia simultanea de dos diferentes variables sobre una tercera. A partir de esta gráfica se pueden responder muchas preguntas como:
- ¿Para que valores de tamaño del mundo e inversores la riqueza de estos es máxima?
- ¿Para que valores de tamaño del mundo e inversores la riqueza de estos es mínima?
- ¿ En donde hay mayor y menor variación de la riqueza?