#1 by anna_s
Hi team,
I came up with quite a confusing experiment and am now not sure how to match everyone.
It is a multiplayer interactive sender receiver game, where the participants are randomly assigned one of the roles -- sender and receiver. They play 10 one-shot rounds, where they're randomly rematched with a different participant from the group. There are 6 treatment groups.
My issue is that I need the participants to 1) first be sorted into a treatment group 2) then get their role assignment 3) then only interact with the participants who are in the same treatment group.
I thought the easiest way (not the most elegant, of course) would be to create 6 apps for each treatment, assign participants to their treatment group, and then use app_after_this_page to sort them, like this:
def creating_session(subsession):
import itertools
conditions = itertools.cycle(['Treat1', 'Treat2','Treat3','Treat4','Treat5', 'Treat6'])
for player in subsession.get_players():
player.treatment = next(conditions)
print('set treatment to', player.treatment)
class ProlificID(Page):
form_model = 'player'
form_fields = ['P_ID']
def is_displayed(player: Player):
return player.consent_accepted == 1
def app_after_this_page(player: Player, upcoming_apps):
if player.treatment == 'Treat1':
return 'Treat1'
if player.treatment == 'Treat2':
return 'Treat2'
if player.treatment == 'Treat3':
return 'Treat3'
if player.treatment == 'Treat4':
return 'Treat4'
if player.treatment == 'Treat5':
return 'Treat5'
if player.treatment == 'Treat6':
return 'Treat6'
and then in each treatment app I define:
def creating_session(subsession:Subsession):
subsession.group_randomly(fixed_id_in_group=True)
However, when I create a session with say 12 participants, they still interact with participants from other treatments -- I'm not sure how this is happening, but is there any way to ensure that I can a) assign treatments to different participants and make sure that they interact only with people who have the same treatment?
Thanks a ton!
Anna
#2
by
Chris_oTree
I don’t see the need for 6 apps. Just split the players into 6 groups using set_group_matrix. And then do a for loop through the groups to assign a different treatment parameter.