Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com), Millisecond
Created: January 31, 2012
Last Modified: January 03, 2023 by K. Borchert (katjab@millisecond.com), Millisecond
Script Copyright © Millisecond Software, LLC
This script implements the Point Subtraction Aggression Paradigm (PSAP); a laboratory measure of aggression.
The implemented procedure is based on:
Cherek, D.R., Moeller, F.G., Schnapp, W. & Dougherty, D.M. (1997). Studies of Violent and Nonviolent Male Parolees: I. Laboratory and Psychometric Measurements of Aggression. Biolog. Psychiatry, 42, 514-522.
30 minutes
Computer game in which a participant plays against a fictitious competitor (in reality simply the computer) to earn points that can be turned into money. The participant and competitor (aka computer) are able to steal and protect their winnings from each other. However, while the participant gets to believe the competitor can steal his money and keep it, the participant can only "steal" from the competitor but not add the stolen points to his winnings. Participants only see their own winnings.
Three responses possible for participant: 1: press "A" for 100 times => earn a point 2: press "B" for 10 times => steal a point from competitor (and win a protection interval. However this fact is not made explicit to participants) 3: press "C" for 10 times => win a protection interval
Once an option is selected, no other responses are possible until the required amount of responses are made. For example, if a participant selects option A, he has to press the the "A" key consecutively for 100 times before he can select option B or option C.
In the absence of an activated protection interval, the competitor (aka computer) is set up to steal a point every so often (how often can be set via LISTS).
• 1 block of PSAP of 25 min (Cherek et al, 1997); time and number of blocks can be adjusted under
section Editable Parameters
• Optional restperiods (in min) can be presented between PSAP blocks; time can be adjusted under
section Editable Parameters
Response Options:
1: press "A" for 100 times => earn a point
(the winning points increase by one, turn green and get bigger for the duration of about 1s)
2: press "B" for 10 times => steal a point from competitor
(and win a protection interval. However this fact is not made explicit to participants)
3: press "C" for 10 times => win a protection interval
After the participant selects a response option the response option turns blue and the other options vanish.
When the required number of responses are made the response option vanishes for 1 s before all options become
available again (see Cherek, 1997).
When the participant selects option A (B, or C) the only response possible is to press
A consecutively for 100 times, (B and C for 10 times).
Only if the required responses are given can the participant change the selection.
These fixed ratio schedules (FR- 100, 10, 10) can be customized under EDITABLE PARAMETERS.
Protection Intervals/Provocation Intervals:
(a) Protection:
Provocation free intervals (PFI) are immediately activated after pressing key B or C 10 times, but
ONLY if a point reduction took place between this PFI and a potentially preceding one
(or the beginning of the script).
Protection intervals cannot be saved up, e.g. pressing key "C" 10 times during an active protection interval is
essentially of no use to the participant. Pressing key "C" in the absence of a new prococation is also essentially
useless to the participant.
Once protection is deactivated a new provocation interval is determined.
Protection Interval: 250s, can be customized under section Editable LISTS
(b) Provocations:
occurs periodically (depending on the randomly sampled interval) when NO protection is activated.
Provocation Intervals: 6-120s (see Cherek et al, 1997), can be customized under section Editable LISTS
When a provocation occurs, the winning points turn red and get bigger for the duration of about 1s.
One point is taken off the point counter.
Instructions are not original to the task. They are provided by Millisecond
as htm/html pages and can be edited by changing the provided htm/html files.
To edit htm/html-files: open the respective documents in simple Text Editors such as TextEdit (Mac)
or Notepad (Windows).
File Name: psap_summary*.iqdat
| Name | Description |
|---|---|
| inquisit.version | Inquisit version number |
| computer.platform | Device platform: win | mac |ios | android |
| startDate | Date the session was run |
| startTime | Time the session was run |
| subjectId | Participant ID |
| groupId | Group number |
| sessionId | Session number |
| elapsedTime | Session duration in ms |
| completed | 0 = Test was not completed 1 = Test was completed |
| frOptionA | Number of times button A has to be pressed consecutively to earn a point |
| frOptionB | Number of times button B has to be pressed consecutively to earn a point |
| frOptionC | Number of times button C has to be pressed consecutively to earn a point |
| blockDuration | Duration in min of one PSAP block |
| totalPoints | The sum of all points earned |
| totalA | Counts number of times option A is selected |
| totalB | Counts number of times option B is selected |
| totalC | Counts number of times option C is selected |
| countProvocations | Counts the number of provocations a participant receives |
| protectCount | Count of all initiated PFIs |
File Name: psap_raw*.iqdat
| Name | Description |
|---|---|
| build | Inquisit version number |
| computer.platform | Device platform: win | mac |ios | android |
| date | Date the session was run |
| time | Time the session was run |
| subject | Participant ID |
| group | Group number |
| session | Session number |
| blockCode | Name of the current block |
| blockNum | Number of the current block |
| trialCode | Name of the current trial |
| trialNum | Number of the current trial |
| psapBlocks | Counts the number of PSAP blocks run |
| frOptionA | Number of times button A has to be pressed consecutively to earn a point |
| frOptionB | Number of times button B has to be pressed consecutively to earn a point |
| frOptionC | Number of times button C has to be pressed consecutively to earn a point |
| blockduration | Duration in min of one PSAP block |
| script.elapsedTime | Time (in ms) elapsed since script was started |
| negColorTime | Stores the time at which point the point counter needs to return to normal after being red |
| procovationTime | Stores the script time in ms at which a provocation should occur next (unless protection is activated) |
| protectionTime | Stores the script time in ms at which the protection expires |
| protection | 1 = protection is active 0 = no protection |
| rt | Stores the reaction times (in ms) of pressing key A, B, C |
| totalPoints | The sum of all points earned |
| totalA | Counts number of times option A is selected |
| totalB | Counts number of times option B is selected |
| totalC | Counts number of times option C is selected |
| countProvocations | Counts the number of provocations a participant receives |
| protectCount | Count of all initiated PFIs |
The procedure can be adjusted by setting the following parameters.
| Name | Description | Default |
|---|---|---|
| frOptionA | Number of times button A has to be pressed consecutively to earn a point | 100 |
| frOptionB | Number of times button B has to be pressed consecutively to earn a point | 10 |
| frOptionC | Number of times button C has to be pressed consecutively to earn a point | 10 |
| blockDuration | Duration in min of one PSAP block | 25 |
| numberBlocks | Number of times PSAP block should be run | 1 |
| restTime | Duration in min of the rest block | 0 |
| restperiodActive | Restperiod_active = 1: a rest block will be presented between PSAP blocks restperiod_active = 0: no rest block will be presented between PSAP blocks (default) | |
| letterA | The actual letter to be used on screen for the first letter (here: A) | |
| letterB | The actual letter to be used on screen for the second/middle letter (here: B) | |
| letterC | The actual letter to be used on screen for the third letter (here: C) | |
| keyA | KeyA | "A" |
| keyB | KeyB | "B" |
| keyC | KeyC | "C" |
| delay | A possible built in delay (in ms) for pressing the response keys (see Carre, 2010) | 0 |
| intermediateDuration | The time the response option vanishes after response completion and before all response options become active again (in ms)(default = 2 * 500ms = 1s) | |
| showPointCounterText | 1 = text is displayed next to the winning points, (default) 0 = text is NOT displayed next to winning points | |
| showPressButtonText | 1 = text is displayed next to the pressbutton counter; (default) 0 = no text is presented | |
| reStartTotal | 1 = total points get reset to 0 for each PSAP block 0 = total points increase across experiment (default) | |
| rewardPoints | Number of points rewarded (default 1) | |
| provocationPoints | Number of points taken away after a provocation (default 1) | |
| moneyReward | The amount of money earned for each point | 0.1 |
| moneyUnit | The unit of money used (here: $) |