SciELO - Scientific Electronic Library Online

 
 número39Pensamientos, sujetos e historiasEfectos mundiales del poder chino índice de autoresíndice de materiabúsqueda de artículos
Home Pagelista alfabética de revistas  

Servicios Personalizados

Revista

Articulo

Indicadores

Links relacionados

  • No hay artículos similaresSimilares en SciELO

Compartir


Política y cultura

versión impresa ISSN 0188-7742

Polít. cult.  no.39 México abr. 2013

 

Matemáticas y ciencias sociales

 

Implementación del algoritmo del replicador dinámico en Lenguaje R

 

Isabel Quintas Pereira*

 

* Profesora-investigadora, Departamento de Producción Económica, División de Ciencias Sociales y Humanidades, UAM-Xochimilco, México [@].

 

Artículo recibido el: 25-04-12
Artículo aceptado el: 20-03-13

 

Resumen

Se presenta la implementación en Lenguaje R de una derivación del replicador dinámico para analizar y simular características culturales de la sociedad con el modelo evolutivo, similar al enfoque utilizado en biología. El algoritmo escrito es una solución por diferencias finitas de la versión del replicador dinámico presentada por Bowles y Gintis con un alto nivel de generalidad para permitir al investigador utilizarlo para modelar distintas situaciones, con sólo definir las funciones de probabilidades de contacto e interacción entre grupos y las funciones de pagos. Se decidió utilizar el Lenguaje R porque a pesar de su creación como una herramienta estadística, se difunde en una diversidad de aplicaciones; además su calidad de intérprete lo hace accesible a personas sin educación formal en cómputo.

Palabras clave: sistemas dinámicos, replicador dinámico, juegos evolutivos, Lenguaje R, simulación.

 

Abstract

The paper shows a dynamic replicator implementation in R Language to analyze and simulate the cultural and behavioral features of society with an evolutionary model used by the biological science. The algorithm is a solution by finite difference method of Bowles and Ginti's version of dynamic replicator, it allows the researcher to use it to model different situations, with only define the probability functions of contact and interaction between groups and payment functions. We decide to use R Language despite its use as statistical tool, because allows to model different problems also it is accessible to people without formal education in computing.

Key words: dynamical systems, dynamic replicator, evolutionary games, R Language, simulation.

 

INTRODUCCIÓN

En las ciencias sociales los sistemas dinámicos pueden ser representados como sistemas discretos donde se individualiza a cada uno de los sujetos o se discretiza el tiempo, o ambos, y el sistema pasa de un estado al otro de los n estados posibles. Uno de los métodos utilizados para modelar algunas situaciones dinámicas son las cadenas de Markov.1 Estos modelos suponen que la proporción o probabilidad de que un individuo cambie de categoría (estrategia, característica o juego) son conocidas con antelación, ya sea por información previa, en el caso en que se repitan las mismas conductas, o que se considere algún cambio previsible en el tiempo.

La modelación basada en agentes es usada tanto en las ciencias naturales como en las del comportamiento,2 pues permite el estudio de la dinámica con que evolucionan las características o estructuras de la sociedad, cuando se pueden evaluar algunos parámetros de dicha sociedad a partir de los datos existentes o de hipótesis a comprobar. La teoría de juegos es una herramienta para estudiar las estrategias que los individuos pueden utilizar para optimizar su beneficio. Pero los individuos (los agentes) aprenden en el proceso de interacción y esto lleva a los juegos evolutivos, donde los individuos cambian de estrategia en función de la percepción de su propio comportamiento y el de los vecinos, esto es, se adaptan.

El estudio de los sistemas dinámicos utilizando los juegos evolutivos se puede analizar como un problema continuo en el tiempo, utilizando ecuaciones diferenciales, o como sistemas discretos utilizando variantes de las cadenas de Markov. Si se utiliza el esquema discreto, cada uno de los agentes debe ser modelado de manera independiente y se debe seguir la trayectoria de cada uno de ellos; en sistemas con sólo unos pocos cientos de individuos el problema combinacional lo vuelve gigantesco, por lo que sólo se realizan simulaciones con algunas decenas de agentes. La aproximación continua tampoco está exenta de problemas: la resolución de muy pocos sistemas, aun de los simples con no demasiados individuos o estrategias, es analíticamente posible, y aun así, no es fácil encontrar la solución, por lo que se apela a las ecuaciones en diferencias, que es una forma de discretizar en el tiempo, mientras que los individuos se agrupan según sus características o estrategias.

El método del replicador dinámico es una variante de los modelos de juego evolutivos donde lo que interesa es conocer cuál es la tasa diferencial con que los individuos de las diferentes estrategias se replican (reproducen), más que buscar la estrategia para lograr un óptimo en el beneficio. En ciertos casos los individuos asumen estrategias que aportan al bien común, la sobrevivencia de la especie, más que a la optimización del beneficio individual.

El replicador, aunque con otra notación, fue introducido como un modelo matemático para el estudio de la evolución biológica por los teóricos Peter Taylor y Leo Junker en 1978. En 1983 Schuster y K. Sigmund lo llamaron la ecuación de replicación, y a sus resultados, la dinámica de la replicación. Los científicos sociales lo han utilizado para construir modelos que muestren o expliquen la emergencia de normas culturales,3 aunque no puede reproducir una mutación y por lo tanto al trasladarlo al mundo social puede mostrar cómo aparecen ciertos patrones que pudieran favorecer los cambios, pero no la emergencia de nuevas cualidades.

Se seleccionó el lenguaje R por ser: 1) accesible a todo el mundo, ya que se trata de software libre; 2) a pesar de que no es sencillo dominarlo, en un taller de un par de días se pueden aprender a usar las herramientas ya desarrolladas por otros usuarios; 3) facilita la programación de funciones específicas, y más aún de modificar las existente a personas no necesariamente habituadas a esto, ya que se trata de un lenguaje intérprete que no requiere ser compilado y no precisa de la definición de complejas estructuras de datos; 4) su uso se está popularizando en casi todas las áreas para la presentación de resultados de documentos científicos.

 

ALGORITMO DEL REPLICADOR DINÁMICO

El algoritmo del replicador dinámico describe la evolución de una población como un juego evolutivo donde los individuos cambian su comportamiento o algún rasgo característico, por imitación a otros individuos que ellos consideran que les va mejor o son más afortunados (fitness). Se trata de encontrar la tasa de variación de cada una de los grupos de la población con determinado rasgo o característica, en el tiempo y ver si existen estados de equilibrio hacia los que tienda la población dependiendo o independientes de las condiciones iniciales; o si existen situaciones o patrones característicos hacia los que podría tender la población.

Si x es el vector de las fracciones de individuos en que está dividida la población según la característica de interés, se quiere conocer cómo se replican los individuos de estos grupos:

dx/dt

El algoritmo a implementar es la versión presentada por Bowles y Gintis en su libro A Cooperative Species; ellos utilizan este algoritmo para mostrar la evolución de la fracción de individuos altruistas inmersos en una sociedad intolerante. Por tratarse de sólo dos comportamientos es posible en ese caso mostrar gráficamente la trayectoria de la evolución de ambas conductas para determinados parámetros y analizar cuándo convergen a situaciones de equilibrio.4 Pero el algoritmo es general y se puede aplicar para cualquier número de individuos agrupados en un número finito de estrategias.

Se tiene una población de individuos en que cada uno sigue una de n estrategias puras si. El juego se repite en el tiempo t (donde t = 1,2,3...) y llamamos xti a la fracción o parte de la población que utiliza la estrategia si en el periodo de tiempo t, tal que Σi xti = 1.

Sea Pti el pago obtenido por la porción de la población xti que utilizó la estrategia si en el tiempo t. El pago a la estrategia depende, entre otros factores, de qué fracción de la población escoja tal estrategia5 Pti = Pi (xti, t).

El modelo indica que en cada intervalo de tiempo dt algunos individuos del grupo i, se enteran de la estrategia utilizada por algún otro individuo, y por ende una parte del grupo de individuos con estrategia i escogido aleatoriamente con probabilidad αxidt > 0 cambia su estrategia a la de los individuos grupo j si percibe que los individuos de la estrategia sj obtienen un mayor beneficio; pero como la información que tienen no es perfecta, tampoco lo es la diferencia percibida, por lo que es más probable que el individuo i cambie su estrategia cuanto mayor sea la diferencia real entre su beneficio y el obtenido por el grupo j. La probabilidad que un individuo con estrategia si cambie a la estrategia sj está dada por qij

(El valor del parámetro β debe ser tal que siempre qij < 1 para todo i y todo j).

La fracción de la población esperada que usará la estrategia sj en el periodo t + dt será xt+dti estará dada por

donde αi será una variable aleatoria que determina la porción de los individuos de estrategia si que se encuentran con individuos con estrategia sj en este intervalo dt. Este parámetro también posibilita que cada uno de los grupos cambie de estrategia con diferente periodicidad, por lo tanto en cada intervalo dt, cada grupo puede evaluar si le conviene o no cambiar de estrategia, y lo hará solamente si αi ≠ 0.

β es un parámetro que está más relacionado con la percepción con que los individuos de un grupo valoran el éxito o beneficio –fitness en inglés– del otro grupo.

Si se rescribe la ecuación anterior se puede tener la variación en el intervalo dt

y tomando el límite cuando t → 0

que es la ecuación del replicador dinámico y, expresada en forma vectorial

La implementación de la ecuación del replicador dinámico se realiza transformando la ecuación diferencial en una ecuación en diferencias que va calculando las variaciones de la proporción de individuos que utiliza cada una de las estrategias para cada intervalo de tiempo dt; el comportamiento simultáneo, expresado en el vector x, de las distintas estrategias muestra la evolución de la población solamente como la distribución de la población, pero no permite seguir a los individuos particulares.

 

IMPLEMENTACIÓN EN LENGUAJE R

El lenguaje R permite escribir un programa (en R se llaman script) al que sólo habrá que indicarle algunos parámetros iniciales y las características de las distribuciones de probabilidad que se quieran utilizar para adaptarlo a las diferentes situaciones a simular. Dado que el lenguaje no requiere la definición previa de la dimensión de las variables, permite que el algoritmo funcione tanto para el caso sencillo de dos características como cooperador y no cooperador, como para situaciones donde el número de estrategias sea n.

El script tiene una primera parte donde se definen las condiciones iniciales y se pueden definir las funciones que determinan los parámetros a y b. Los pagos Pi de cada estrategia pueden ser valores constantes, pueden variar al evolucionar el sistema y también pueden ser definidos como una función que dependa del tiempo y de la distribución de los individuos que juegan cada estrategia en determinado momento, por lo que se pueden dar como un vector de datos inicial o pueden estar definidos por una función Pi(x,t) específica, codificada como una función en R. Para ejemplificar, en el código se están asignando valores arbitrarios que deben ser modificados para cada situación a modelar.

La definición de las condiciones iniciales se muestra a continuación:

# Implementación del algoritmo del replicador dinámico

# según la versión de Bowles y Gintis

 

# Definición de valores iniciales

# Definir el número de iteraciones o juegos que se quiere hacer N

# N <- 250

# Indicar el número de estrategias existentes en n

n <- 4

# Indicar en un vector x las fracciones de la población que utiliza la estrategia i

# distribución inicial, la suma de los elementos de x debe ser = 1

x <- c( 0.3, 0.25, 0.25, 0.2)

# Indicar en un vector los pagos si éstos son constantes en el tiempo y no

# depende de las fracciones de la población que utilizan cada estrategia

pagos <- c( 5, 1, 2 , 8 )

# o en el caso de definir una función

pagos <- fuction ( t, x)

{ aquí va la función que regresa el vector de pagos

}

# inicialización de matriz de evolución

# se asignan los porcentajes iniciales de cada estrategia en la columna 1

X <- matrix (data=0, nr=n, nc=N)

X[,1] <- x

# comienza código del replicador

# para cada intervalo de tiempo

for (t in 1:N) {

# se copian los porcentajes anteriores en el siguiente vector columna

X[,t+1] <- X[,t]

# para cada una de las estrategias establecer los cambios de estrategia

for (k in 1:n) {

# decidir si cambia; se utiliza una función normal con media ki proporcional

# a la periodicidad con que cambia de estrategia el grupo i

a <- r(1,mean=ki, sd=1)

if (a >=ki-2) {

# si algunos van a cambiar de estrategia; aleatoriamente se determina

# la proporción de encuentros con los demás grupos

alfa <- runif(n)

y <- c(0,0,0,0)

for (j in 1:n) {

# se debe normalizar suma alfai = 1 y calcular los cambios en el vector y

El algoritmo se compone de tres lazos anidados, el más exterior es el correspondiente al tiempo; en cada ciclo de tiempo se realizan los otros dos: para cada grupo con estrategia sk primero se determina si alguna parte del grupo cambiará de estrategia en ese ciclo o no; en caso afirmativo se calcula qué porción del grupo k emigrará a cada uno de los grupos j; estas porciones se suman y restan a los valores previos para dar el nuevo vector de estado. Los vectores de estado se van guardando en la matriz X que tiene tantas filas como estrategias haya y tantas columnas como el número de iteraciones que se desee realizar.

Para conocer la evolución del sistema se debe observar a la matriz X. El lenguaje ofrece una de las salidas gráficas más versátiles para presentar datos científicos; en este caso se necesitará agregar unas pocas líneas de código extra:

Es importante dedicar un párrafo al uso de las funciones de generación de números aleatorios utilizadas para la simulación del modelo; en el código se utilizaron dos funciones: runif y rnorm, generadoras de números aleatorios, la primera con una distribución uniforme y la segunda con distribución normal; ambas funciones tienen parámetros que permiten modificar la distribución de acuerdo con lo que indican los datos reales del proceso a simular. R posee 20 funciones generadoras de números aleatorios correspondientes a otras tantas funciones de distribución, lo que permite un modelo más ajustado al fenómeno.

 

COMENTARIOS FINALES

Es necesario señalar una serie de puntos acerca de la teoría de juegos evolutiva y el algoritmo del replicador dinámico como herramienta para el análisis de problemas complejos:

• La teoría de juegos evolutiva se ha utilizado desde hace más de 20 años en la biología, y en la última década se incursionó en el estudio de la evolución del comportamiento humano y de las instituciones.

• El replicador dinámico no modela la emergencia de los modelos complejos que en el caso de la biología se presenta como mutaciones y en las sociedades como la innovación tecnológica. Para casos particulares, se podrá agregar un término al replicador para hacer aparecer la emergencia.

• Si alguna de las estrategias desaparece durante la evolución del sistema, con el algoritmo del replicador dinámico tal como se presentó esa estrategia no podrá volver a aparecer, ya que los cambios se realizan sólo por imitación.

• El cambio de estrategia se debe a una apreciación subjetiva de las ventajas de un grupo sobre otro. La elección de cómo medir la diferencia, que además evoluciona en el tiempo (las modas) es posiblemente el factor más crítico del modelo. Se puede representar como una función tan detallada como se logre definir.

• En este modelo se supone que los individuos se encuentran con otros individuos de manera aleatoria, e imitan a los que consideran exitosos de alguna manera, aunque en las sociedades humanas los individuos tienen más contacto con un grupo cercano y similar a ellos y son más propensos a tratar de imitar modelos cercanos como maestros, jefes o parientes exitosos. Siempre que sea posible, se debe tratar de tener funciones elaboradas para acercarse a esta realidad en vez de una función aleatoria sencilla.

Por último, este trabajo intenta motivar el modelado de situaciones complejas de las ciencias sociales y provocar el acercamiento entre los científicos sociales y los modeladores, siempre en búsqueda de problemas concretos.

 

NOTAS

1 Cadenas de Markov: este modelo se utiliza para representar a individuos con determinadas preferencias actuales, pero que las modifican en el tiempo; se trata de un modelo determinístico ya que se conoce la cantidad de individuos que en un cierto tiempo tienen cada una de las n características o preferencias , además se conoce la matriz de transición P que indica cuál es la proporción de individuos que en cada intervalo de tiempo cambiarán su preferencia de i a j; en el siguiente periodo la cantidad de individuos con cada una de las preferencias será x1 = x° P, dos periodos después esta cantidad se habrá modificado a x2 = x1 P = x° P2.

2 Samuel Bowles y Herbert Gintis, A Cooperative Species: human reciprocity and its evolution, Nueva Jersey, Princeton University Press, 2011.         [ Links ]

3 Alexander J. McKenzie, The structural evolution of morality, Inglaterra, Cambridge University Press, 2007.         [ Links ]

4 El equilibrio ocurre cuando la cantidad de individuos que pasan de i a j es igual a la cantidad que pasa de j a i: xi dxi /dt = xj dxj/dt, ya que se trata de un caso con sólo dos conductas posibles.

5 En una lotería, si muchos escogen la respuesta ganadora, el premio se dividirá entre más personas, mientras que en un juego donde se trate de colaborar para el beneficio común, por ejemplo poner bolsas de arena para que el río no inunde las viviendas, el beneficio individual aumentará con el número de voluntarios.

Creative Commons License Todo el contenido de esta revista, excepto dónde está identificado, está bajo una Licencia Creative Commons