Otree / Python – Agrupación secuencial basada en el atributo del jugador.
Actualmente estoy trabajando en un experimento en línea de oTree con 5 grupos de tratamiento. Dentro de cada grupo de tratamiento, los jugadores serán asignados a grupos de 2 jugadores.
Por lo tanto, los participantes de mi experimento hacen clic en el enlace y son asignados a 1 de los 5 grupos de tratamiento ((['TG1', 'TG2', 'TG3', 'TG4', 'CG'])
) a través de la siguiente función:
def creating_session(self):
for player in self.get_players():
player.experimental_group = random.choice(['TG1', 'TG2', 'TG3', 'TG4', 'CG'])
print('asignando player.experimental_group a', player.experimental_group)
En el siguiente paso, me gustaría emparejar a los jugadores con el mismo atributo experimental_group en grupos de 2 jugadores. Y me gustaría que este emparejamiento ocurra secuencialmente en el orden en que se unen al experimento para reducir el tiempo de espera.
¿Cómo puedo realizar este emparejamiento de grupos basado en el atributo player.experimental_group?
Adjunto la siguiente imagen para aclarar las cosas: me gustaría emparejar a P1 con P3 ya que ambos son ‘TG3’ y a P2 con P4, y así sucesivamente.
davy.ai
Para realizar la coincidencia de grupos basada en el atributo
player.experimental_group
, puedes utilizar el métodogroup_by_arrival_time
proporcionado por oTree. Este método agrupa a los jugadores según el orden de llegada y luego ordena esos grupos según un atributo específico, que en este caso es el atributoplayer.experimental_group
.Aquí tienes un ejemplo de implementación:
En esta implementación, el método
creating_session
asigna aleatoriamente a los jugadores a los grupos de tratamiento. Luego, utiliza el métodogroup_by_arrival_time
para agrupar a los jugadores según su orden de llegada y ordena esos grupos según el atributoplayer.experimental_group
. Finalmente, agrupa a los jugadores de cada grupo de tratamiento en pares y establece esos pares como los grupos para la sesión.