Cyberball: Player Schedules


Author
Message
EAS
EAS
EAS
posted 9 Years Ago HOT
Partner Member (526 reputation)Partner Member (526 reputation)Partner Member (526 reputation)Partner Member (526 reputation)Partner Member (526 reputation)Partner Member (526 reputation)Partner Member (526 reputation)Partner Member (526 reputation)Partner Member (526 reputation)
Group: Forum Members
Posts: 4, Visits: 10
Hello,

I'm still working on the Cyberbal task for my experiment. I've got two conditions: the inclusion and an exclusion condition.
In the inclusion condition the participant (Player 2) should get the ball in one third of the times. So I wrote:

<list player1schedule>
/ items = (3, 3, 2)
/ replace = false
</list>

<list player3schedule>
/ items = (1, 1, 2)
/ replace = false
</list>

For each condition, there are 30 throws. So I thought, that the participant in the inclusion condition should receive the ball 10 times (1/3 of 30 throws). But this doesn't work. The participant receives the ball 7 or 8 times.

Can someone help me with this problem? I added my Inquisit file to this post.

Thanks a lot!!
Alexa





Attachments
Cycerball.iqx (667 views, 44.00 KB)
Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 98K
<list player1schedule>
/ items = (3, 3, 2)
/ replace = false
</list>

When the virtual player #1 has the ball, a value will be sampled from the above list (without replacement). The value drawn determines to which other player (#2 or #3) player #1 passes the ball to. Suppose it's the first time player #1 is in possession of the ball. Let's the 2nd item (3) is drawn from the list, and so the ball is passed to player #3. Player #3 determines which other player to pass the ball to via the other list

<list player3schedule>
/ items = (1, 1, 2)
/ replace = false
</list>

and the process is exactly the same.

Now suppose player #1 is in possession of the ball for the 2nd time -- two items are left in the list (3 and 2) at this point. Let's say 2 is drawn and the ball is passed to player #2 (the human player). When player #1 gets the ball again, it will pass the ball to player #3 because at this point only a 3 is left in the list. After that the list has to reset, and all three original items become available again.

Because *you cannot* know how the human player (#2) behaves, it is not possible to exactly control how many times s/he'll get the ball. It will ultimately depend on how often the human player decides to pass the ball to each virtual player and whatever value the respective virtual player then randomly draws from its associated list.

EAS
EAS
Partner Member (526 reputation)Partner Member (526 reputation)Partner Member (526 reputation)Partner Member (526 reputation)Partner Member (526 reputation)Partner Member (526 reputation)Partner Member (526 reputation)Partner Member (526 reputation)Partner Member (526 reputation)
Group: Forum Members
Posts: 4, Visits: 10
Hello Dave,

thanks a lot for your great explanation!! I can now understand why it's not possible to exactly control the number of throws the particpiant receives. Do you maybe know if there is another way to control the number of throws the participant receives?

Thanks a lot for your help!
Alexa

Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 98K
The problem is that there is one variable that you cannot control -- the human player and how s/he behaves: In the extreme, you could have a human player that whenever s/he is in possession of the ball passes it off to, say, player #3 but *never* to player #1).

What you'd have to do is set up a single <list> that determines the behavior of *both* virtual players (#1 and #3).

<list virtualplayerschedule>
/ items = (0,0,0,0,0,0,0,0,0,0,
        0,0,0,0,0,0,0,0,0,0,
        2,2,2,2,2,2,2,2,2,2)
/ replace = false
</list>

where 0 means "pass ball to the *other* virtual player" and 2 (as before) means pass to the human player. The sample from that list instead of the *individual* virtual player lists (<list player1schedule> and <list player3schedule>).

That should at least get you a result *close* to the desired distribution.

Attachments
3PlayerCyberball.iqx (655 views, 34.00 KB)
Fen
Fen
Partner Member (746 reputation)Partner Member (746 reputation)Partner Member (746 reputation)Partner Member (746 reputation)Partner Member (746 reputation)Partner Member (746 reputation)Partner Member (746 reputation)Partner Member (746 reputation)Partner Member (746 reputation)
Group: Forum Members
Posts: 6, Visits: 30
Dave - Sunday, November 22, 2015
The problem is that there is one variable that you cannot control -- the human player and how s/he behaves: In the extreme, you could have a human player that whenever s/he is in possession of the ball passes it off to, say, player #3 but *never* to player #1).

What you'd have to do is set up a single <list> that determines the behavior of *both* virtual players (#1 and #3).

<list virtualplayerschedule>
/ items = (0,0,0,0,0,0,0,0,0,0,
        0,0,0,0,0,0,0,0,0,0,
        2,2,2,2,2,2,2,2,2,2)
/ replace = false
</list>

where 0 means "pass ball to the *other* virtual player" and 2 (as before) means pass to the human player. The sample from that list instead of the *individual* virtual player lists (<list player1schedule> and <list player3schedule>).

That should at least get you a result *close* to the desired distribution.
I just wanted to say thank you, as this old post helped me understand why I was having similar issues with the distribution of throws in my own experiment. Now I just need to figure out how to assign participants in different groups different lists. I'll continue reading the tutorials, thank you again.


Fen
Fen
Partner Member (746 reputation)Partner Member (746 reputation)Partner Member (746 reputation)Partner Member (746 reputation)Partner Member (746 reputation)Partner Member (746 reputation)Partner Member (746 reputation)Partner Member (746 reputation)Partner Member (746 reputation)
Group: Forum Members
Posts: 6, Visits: 30
For anyone coming across this in the future, You can get "exactly" 10 times (1/3) or any number of the throws by changing two things in the file Dave posted above in the following ways

<list virtualplayerschedule>
/ items = (
0,0,0,0,0,0,0,0,0,0,
2,2,2,2,2,2,2,2,2,2)
/ replace = false
</list>
AND 
<values>
/max_trialcount = 31
/showpictures = true
/showlabels = true
</values>

Since the values in virtualplayerschedule only represent the throws when the computer has the ball, there's no need to have 30 of them, only 20, since the player has the ball 10 times. Doing this will let you control the exact number of times the player gets the ball in a 30 pass trial. As far as setting /max_trialcount = 31 instead of 30, I found that i was only getting 29 throws with the count set to 30, and setting it to 31 corrected this. I didn't go over all of the code to figure out for sure why this is, but it worked for me, be sure to double check for yourself.
Fen
Fen
Partner Member (746 reputation)Partner Member (746 reputation)Partner Member (746 reputation)Partner Member (746 reputation)Partner Member (746 reputation)Partner Member (746 reputation)Partner Member (746 reputation)Partner Member (746 reputation)Partner Member (746 reputation)
Group: Forum Members
Posts: 6, Visits: 30
I should note that you'll have to adjust the size of the item set if you want the player to receive the ball a different number of times, such that the total size of the item set is equal to the number of times the computer will have the ball. For example, if you want the player to have the ball 6 times out of 30, the item set would need to contain 24 items.

<list virtualplayerschedule>
/ items = (0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,2,2,2,2,2,2)
/ replace = false
</list>


Please note that I'm fairly new to all this, and you should check my work. I'm only posting this here because I came across this specific thread when trying to solve my problem and thought it might help someone in the future.
GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search