Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Table of Contents
- name A field that can take arbitrary labeling text (commas may confuse reading of the CSV file, avoid their use) - This field is for the arbitrary labeling of recorded experimental data - the 'name' chosen for each period is simply carried through to the final experimental output file, and does not affect the experiment otherwise. In the output file produced by your experiment, this name will appear by that period's data. During one's data analysis this field may be helpful in differentiating various treatments. - The name field defaults to the empty string (nothing) and may be left out of the config file without issue.
[NaN] or [0,Inf]. A field set to Not-a-Number or a real number bettween zero and infinity, inclusive. This fields controls the speed at which a user's selection of a new strategy is realized in the experiment. Using this field, experimenters can range from instantaneous change, to extremely slow movement from one's initial strategy to the subject's selected target strategy. - When the period is in discrete time the percentChangePerSecond field is not applicable, set this field to NaN. - When the period is in continuous time, the percentChangePerSecond field controls the speed at which a user's strategy reaches their selected target. It determines the length, relative to the total strategy space, a user's action will move in a second. For example, if the strategy spaces ranges from 0 to 100 and if "percentChangePerSecond" is set to 0.15, the it would take one second for the strategy to move from 0 to 15, or from 100 to 85, or from 45 to 70, etc. - A Few More Examples: - When percentChangePerSecond="NaN" changes in strategy are reflected instantaneously on screen and with other players. - When percentChangePerSecond="0" user's strategy changes never result in actual strategy changes. I'm not sure why anyone would do this to their subjects - When percentChangePerSecond="0.03333" when a user clicks to a new action choice, their current action will move at a speed that would traverse the full strategy space (from the minimum possible strategy to the maximum) in 30 seconds (1.00000/0.03333 = 30). - When percentChangePerSecond="1", it takes one second for a user's strategy to move from the minimum action available to the maximum (that is, it takes 1 = 100% of a second).
[NaN] or [0,]. Default=NaN. If not NaN (i.e. a number from 0 to 1.0, will grid off the strategy space at the given increments. To compute the number of grid points, you can use the equation grid = 1 / (n - 1), where n is the number of points required. E.g. if you want 10 grid-points, you should set grid to (1 / (10 - 1)) = 1/9 = ~0.1111111.
- In the config file which defines a game, experimentalists first choose the period length; the number of seconds the period lasts. (Here is an example of a sixty second game). - In a Discrete Time Period - Subjects are free to change their strategies at any time during the discrete time subperiod, but only the strategy selected at the end of the subperiod is used to calculate payoffs. Subjects do not observe the strategy choice of their counterpart(s) until the period’s end. - Progress Bar - subjects have an intuitive progress bar communicating how much of the subperiod remains - The subperiods fields defines the discretization of the game. - A Few Examples: - With subperiods set to 0, the period runs in continuous time. - With subperiods set to 1, we are running a one-shot game. - With subperiods set to 6, you have a six-shot game. - Note: subperiods establishes the number of subperiods in the game, NOT the length of the subperiod. If n=subperiods and T=length, then
Here we tersely discuss some things to keep in mind when working with the groupSize and numGroups. For a more conceptual discussion of how ConG thinks about groups and matching subjects in a period or game, for one & two population games configurations, arbitrary groupings configurations, and other fancy stuff -- please see our full Groupings pages.
- This field can be either "self" or "pair". - matchtype=self - When the field is set to "self" the players play strategies against the average of their own group. Thus changing their own strategy will change (though perhaps imperceptive so) the strategy of their opponent. - matchtype=pair - When set to "pair" players play their strategies against the average of another group. (for a few conceptual examples of this, again please see the Groupings page)
- groupSize - [1,n] Integer field which determines the number of players in each group. The group size is determined by dividing the number of players by groupSize. - That is
- The number of subjects must be evenly divisible by the number selected in groupSize. An error or other failure will ensue otherwise. For example if we start a game with ten subject, we must set groupSize to 1, 2, 5 or 10. Any other selection not evenly divisible will result in some sort of error or failure.
- numGroups - [1,n] Integer field which determines the number of groups formed in the period. - numGroups will work with a ragged number of subjects. For example, if we start an experiment with 10 subject and set numGroups to 3, this means ConG will create two groups of 3 subjects and one group of 4 subjects.
Important Note - groupSize & numGroups can NEVER be used in the same period definition row - that is; if, for some reason you need to have both groupSize and numGroups columns in your game definition config file, in each row only one column may have a an interger, the other field must be blank. - It's probably best to just use one or the other.
Example of an Okay Config File:
|period||paid||length||subperiods||groupSize||numGroups||. . . .|
|1||TRUE||300||0||3||. . . .|
|2||TRUE||300||0||3||. . . .|
|3||TRUE||300||0||2||. . . .|
|4||TRUE||300||0||6||. . . .|
Example of a Not-Okay Config File:
|period||paid||length||subperiods||groupSize||numGroups||. . . .|
|1||TRUE||300||0||3||Okay. . . .|
|4||TRUE||300||0||6||Okay. . . .|
== Initial Subject Actions
If you want to set an initial action for players - the action that players start a game with - you may do so via the config file with the "initial" column. Experimenters may designate a random selection of initial action, or assign a specific action. Ensure the initial column comes after the columns that define and parameterize the payoff function. Also note that actions in ConG are scaled to the unit vector, [0,].
The default value for the initial column is "NaN", not a number. If you leave the initial column out of your config file, or include the column with the value of "NaN", then initial actions will be randomly selected for each subject. Note also that each subject will have their own initial action, i.e. subjects are not all started at the same action. - The "mixed" column. Experimenters have further control over randomization of initial actions via the "mixed" column. In games that allow actions to be selected from a continuous spectrum of possible actions (e.g. heatmap, bubbles), if the "mixed" column is set to "TRUE", then the initial action is selected from the full set [0,]. If "mixed" is set "FALSE", then the initial action will be randomly chosen from 0 or 1 (no mixed initial strategy).
For example, in the config file snippet below,
- In the first period below, initial strategies will be selected randomly for subjects. And if players can select strategies from a continuous spectrum (ala heatmap or bubbles), then initial actions will be selected between [0,]. - In the second period below, again initial actions are selected randomly, and again mixed actions are possible. Note that these fields are blank. ConG refers to the default values for these fields, NaN for initial (random initial action) and TRUE for mixed (mixed initial actions are possible). Thus if you completely leave the initial and mixed columns off your config file, initial actions will be randomized. - In the third period below the initial field is blank, thus initial actions will be randomized. However, the mixed column is set to FALSE. Thus initial actions will either be 0 or 1 (randomly selected) for all subjects.
|period||... more config file columns...including columns that define payoffs||initial||mixed||... more config file columns...|
|1||... more config file columns...including columns that define payoffs||NaN||TRUE||... more config file columns...|
|2||... more config file columns...including columns that define payoffs||... more config file columns...|
|3||... more config file columns...including columns that define payoffs||FALSE||... more config file columns...|
If there is only one spectrum of actions (e.g. matrix2x2 and sum payoff functions, pure, heatmap and bubbles selectors), then use the "initial" column sets the initial strategy for all subjects. Note that actions in ConG are scaled to the unit vector, [0,]. Thus designated initial action must be between 0 and 1 (inclusive).
For example, in the config file snippet below, - Period 1 starts all players off with the initial action of 1. - Period 2 starts all players off with the initial action of 0.5 (the mid-point).
|period||... more config file columns...including columns that define payoffs||initial||... more config file columns...|
|1||... more config file columns...including columns that define payoffs||1||... more config file columns...|
|2||... more config file columns...including columns that define payoffs||0.5||... more config file columns...|
If there are two or three spectrums of possible actions (e.g. rock paper scissors or some game that allows choice over two action spaces), then the experimenter should use the "initial0" and "initial1" columns.
ConG's configuration file also supports the assignment of initial actions on a subject by subject, period by period basis. This is done via the per-subject period by period assignment method discussed in the Matching and Grouping section of the ConG documentation website. If you'd like to assign individual subjects to initial actions, you would introduce the "initial" column (and/or "mixed", "initial0", or "initial1" accordingly), to the assignedGroup=TRUE, "#SUBJECTS" section below the period definitions, and designate initial actions for each subject, or each period.
See, for example, the screen capture of a config file below. This is designed for 8 human subjects. The first period, subject one will start off at 0 (action "B" in the matrix2x2 game). Subject two will start off at 0.25, and so forth. Note that arbitrary matching and grouping are also explored in this screenshot.