Experimental follow-up of Moussaïd M et al. (2018) Dynamical networks of influence in small group discussions, PLoS ONE
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Small Group Discussion

This is an experiment powered by Empirica as a follow-up for the model developed in Moussaïd M et al. (2018) Dynamical networks of influence in small group discussions.

Experiment Details:

The task

In this experiment, groups of N=3 participants simultaneously undertake a visual perception task similar to the one implemented in Moussaïd, et al. (2017). Reach and speed of judgment propagation in the laboratory, PNAS. Participants are exposed to visual stimuli consisting of a set of moving dots. A proportion of correlated dots move in a specific direction θ, and the remaining proportion of uncorrelated dots moved in random directions. Here, θ is the true value that participants have to estimate visually. The value of θ is the same for all the group members.


In the planned experiment, each group undertakes a series of “discussions” (each discussion is a Round from the point of view of Empirica). Within a given discussion round, the true value of θ remains unchanged. Each participant is given the chance to speak 3 times within a single discussion. Therefore, a single discussion round consists of 9 speaking stages (3 players each speaking 3 times), during which the participants share their current estimate with the rest of the group.

Calling A, B, and C the three participants. One discussion (the stimuli is always displayed on the participants’ screens) goes as follows:

  1. Stage 1
  • A, B, and C enter their estimate
  • The estimate of A is displayed on all screens
  1. Stage 2
  • A, B, and C can revise their estimate
  • The new estimate of B is displayed on all screens
  1. Stage 3
  • A, B, and C can again revise their estimate
  • The estimate of C is displayed on all screens ... ...
  1. Stage 9
  • The experiment continues until stage 9 is reached (i.e., everyone spoke 3 times)...
  1. Stage 10
  • A summary of the scores that all participants have made in each stage is displayed on the screens.
  1. A new discussion round (with a different true value θ) starts.

We set 9 speaking stages per discussion round and NR=20 discussion rounds per group.

Speaking turns

The sequence of speaking turns determines which estimate is communicated at a given stage. It is generated using a simple random procedure: For each block of 3 stages, the speaking order is a random permutation of the 3 participants. That is, each participant speaks one and only one time in each block. With 9 speaking rounds, we have three blocks. Each participant thus speaks 3 times during the discussion round, as we mentioned earlier.

Difficulty level

We vary the difficulty of the task between participants. That is, some group members will face an easy task — with a high proportion of correlated dots (e.g., 60%), whereas others will face a difficult task with a low proportion of correlated dots (e.g., 10%). The value of θ is the same for all the group members, irrespective of the difficulty level.

The difficulty level is fixed for the entire duration of the experiment.

Experiment Demo:

You and a group of friends can play with this experiment as we ran it by following these instructions (assuming you have Meteor installed):

  1. Download the repository (and unzip). Alternatively, from terminal just run:
git clone https://github.com/amaatouq/small-group-discussion
  1. Go into the folder with cd small-group-discussions
  2. Install the required dependencies meteor npm install
  3. Edit the admin password in the settings file local.json to something you like.
  4. Run the local instance with meteor --settings local.json
  5. Go to http://localhost:3000/admin (or whatever port you are running Meteor on).
  6. login with the credentials username: admin and the password you have in local.json
  7. Start a new batch with whatever configuration you want (see the example configuration).

Example Config:

First, you have to enter the Configuration mode instead of the Monitoring model in the admin UI.


This will allow you to configure the experiment: Factors, Lobby, and Treatments:


Now, you have the option to create your own configuration (see below) or load an example configuration by clicking on import and then choosing the file ./example-config. Loading the example configurations will choose some example values for the factors (i.e., independent variables), lobby configuration, and few treatments.

The example factors will look like this: factors

And the example treatments will look like this: treatments

Finally, you can go back to the Monitoring mode:


Now the Batchs tab make sure you add a new batch, add the treatments you want, choose your lobby configurations, and then start the batch.


Go to http://localhost:3000/ and enjoy! If you don't have 3 friends to play with you, you always can use the new player button in development (for more details see this), which can add an arbitrary number players to the experiment while staying in the same browser (i.e., no need to open different browsers).


Changing the experiment to make it your own

The experiment is built with Empirica, which is based on Meteor web development framework. In Empirica, the code is split in 2 main categories: code running on the client (the browser) and code running on the server. This functional separation is immediately reflected in the folders structure.


All code in the /client directory will be ran on the client. The entry point for your app on the client can be found in /client/main.js. In there you will find more details about how to customize how a game Round should be rendered, what Consent message and which Intro Steps you want to present the players with, etc.

The HTML root of you app in /client/main.html shouldn't generally be changed much, other than to update the app's HTML <head>, which contains the app's title, and possibly 3rd party JS and CSS imports.

All styling starts in /client/main.less, and is written in LESS, a simple superset of CSS. You can also add a plain CSS files in /client.

The /client/game, /client/intro, /client/exit directories all contain React components, which compose the UI of your app. If you are new to React, we recommend you try out the official React Tutorial.


Server-side code all starts in the /server/main.js file. In that file, we set an important Empirica integration point, the Empirica.gameInit, which allows to configure each game as they are initiated by Empirica.

From there we import 2 other files. First the /server/callback.js file, which contains all the possible callbacks used in the lifecycle of a game. These callbacks, such as onRoundEnd, offer powerful ways to add logic to a game in a central point (the server), which is often preferable to adding all the logic on the client.

Finally, the /server/bots.js file is where you can add bot definitions to your app.


The /public is here to host any static assets you might need in the game, such as images. For example, if you add an image at /public/my-logo.jpeg, it will be available in the app at http://localhost:3000/my-logo.jpeg.


We generated a basic settings file (/local.json), which should originally only contain configuration for admin login. More documentation for settings is coming soon.

You can run the app with the settings like this:

meteor --settings local.json

Updating Empirica Core

As new versions of Empirica become available, you might want to update the version you are using in your app. To do so, simply run:

meteor update empirica:core

Learn more