Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com), Millisecond
Created: January 12, 2024
Last Modified: January 12, 2025 by K. Borchert (katjab@millisecond.com), Millisecond
Script Copyright © Millisecond Software, LLC
This script implements Millisecond's version of the 'The Work for Environmental Protection Task' (WEPT, Lange & Dewitte, 2022), a cognitive effort task to study online societally relevant behaviors.
The default setup up of the script runs with proportional sizing. Researchers can select to run the task with an absolute screen size to ensure that distances stay the same across devices. Go to section Defaults for more information.
Lange, F., & Dewitte, S. (2022). The Work for Environmental Protection Task: A consequential web-based procedure for studying pro-environmental behavior. Behavior Research Methods, 54(1), 133–145. https://doi.org/10.3758/s13428-021-01617-2
10 minutes
Participants are asked to work on a simple cognitive task ('find all the 2-digit numbers with an even first and odd second digit') to generate donation money for a specified charity. The task consists of one practice page (to demonstrate the task) and 15 possible test pages. The 15 possible test pages run 3 different donation amounts x 5 different amounts of 2-digit numbers per page (max: 200). Participants decide for each page separately if they are willing to work for the promised donation money.
Design: 3 donation amounts x 5 different amounts of stims on the page x 1 repetition =
15 different experimental conditions
this script provides the functionality to run fewer conditions. See section Editable parameters for more info.
(1) Practice
The script starts each participant on a practice page that presents 20 2-digit numbers
-> each number is randomly (with replacement) selected (probability of a target selection: 20/90 ~ 22%)
-> 20 numbers per line
-> unlimited time to select targets (corrections possible)
-> selected numbers are highlighted*
-> once submitted, feedback is provided (the program circles incorrect responses as well as missed targets)
(2) Test
Participants are told that there are 15 (default) more pages with varying amount of numbers (Max: 200)
Each page provides the opportunity to earn donation money for a specified charity.
To earn that money, participants have to get at least 90% of the numbers correct.
For each of the 15 pages, participants are told
- amount of numbers per page
- donation money that can be earned
Participation is voluntary for each page and participants can decline to work on a specific page
(by pressing the NO button).
-> each number is randomly (with replacement) selected (probability of a target selection: 20/90 ~ 22%)
-> there are 20 numbers per line; 10 lines Max (for Max: 200 numbers)
-> unlimited time to select targets (corrections possible)
-> selected numbers are highlighted*
-> no feedback is provided for test pages
-> The order of the 15 conditions (donation money x amount of stims per page) is selected randomly (without replacement).
•Color Settings:
By default, this script presents the numbers black on a white background. Selected numbers are highlighted in yellow.
Change color settings under section Editable Parameters
provided by Millisecond - can be edited under section 'Editable Stimuli'
provided by Millisecond - can be edited under section 'Editable Instructions'
The instructions are based on published instruction from Lange & DeWitte (2022)
File Name: environmentalprotectiontask_summary*.iqdat
| Name | Description |
|---|---|
| inquisit.version | Inquisit version number |
| computer.platform | Device platform: win | mac |ios | android |
| computer.touch | 0 = device has no touchscreen capabilities; 1 = device has touchscreen capabilities |
| computer.hasKeyboard | 0 = no external keyboard detected; 1 = external keyboard detected |
| 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 |
| totalDonation | Cumulative sum of the final donations earned (adds up offered donations for all pages selected where participants reaches 90% accuracy) |
| propParticipation | Overall participation rate |
| overallMeanParticipationDecisionRT | Mean participant response time (in ms) |
| meanPropSignalsPerPage | The mean proportion of signals (targets) per page |
| overallPropCorrect | Overall proportion correct (for selected pages only) |
Per Page: 1-15; (Explained For Page1) |
|
| condition1 | Experimental condition of page1 (15 condition total = 3 donation values x 5 number of stims) |
| stims1 | The number of stims presented on page1 |
| donation1 | The offered donation amount for page1 participation |
| participation1 | 1 = participant participated on page1; 0 = participant declined to participate on page1 |
| participationDecisionRT1 | The participation response time (in ms) for page1 |
| acc1 | Proportion correct responses for page1 participation |
| duration1 | The time (in ms) participation spent on page1 |
| faRate1 | The false alarm rate for page1 participation |
| hitRate1 | The hitrate for page1 participation |
File Name: environmentalprotectiontask_raw*.iqdat
| Name | Description |
|---|---|
| build | Inquisit version number |
| computer.platform | Device platform: win | mac |ios | android |
| computer.touch | 0 = device has no touchscreen capabilities; 1 = device has touchscreen capabilities |
| computer.hasKeyboard | 0 = no external keyboard detected; 1 = external keyboard detected |
| date | Date the session was run |
| time | Time the session was run |
| subject | Participant ID |
| group | Group number |
| session | Session number |
Design Parameters |
|
| parameters.numberDonationAmountsToRun | The number of donation amounts run (Max: 3) |
| parameters.numberStimsToRun | The number of different stimulus amounts to run (Max: 5) => 3x5 = 15 different condition is the max to run |
Built-In Inquisit Variables |
|
| blockcode | The name the current block (built-in Inquisit variable) |
| blocknum | The number of the current block (built-in Inquisit variable) |
| trialcode | The name of the currently recorded trial (built-in Inquisit variable) trial.taskPageSummary provides a data summary of the current page at page conclusion (after participant submitted responses for page) (whereas trial.page gives a response by response overview of what participant did before submitting page responses). If you don't need the additional data rows produced by trial.page, you can set "/ recorddata = false" for trial.page |
| trialnum | The number of the currently recorded trial (built-in Inquisit variable) trialnum is a built-in Inquisit variable; it counts all trials run even those that do not store data to the data file. |
| response | The response of participant (scancode of response button) |
| correct | Correctness of response (1 = correct, 0 = error) |
| latency | Response latency (in ms); measured from |
Custom Variables |
|
| phase | "practice" vs. "test" |
| totalDonation | Cumulative sum of the donations made (adds up offered donations for all pages selected where participants reaches 90% accuracy) |
| pageCounter | Counts the number of pages worked on |
| pageCondition | 1-15 (15 condition total = 3 donation values x 5 number of stims) |
| pageParticipation | 0 = participant declined to participate on the current page 1 = participant agreed to participate on the current page |
| pageParticipationRT | Response time (in ms) for participation decision |
| pageDonation | The donation that will be made if conditions are met for the current page |
| pageStims | The number of stims on the current page |
| pageSignals | The number of signals/targets on the current page |
| pageFoils | The number of foils on the current page |
| propSignalsPerPage | Proportion of signals to stims on the current page |
| pageAcc | Proportion correct decisions for the current page (proportion correct = (number of hits + number of correct rejections)/number of stims) |
| pageCorrect | Number of correct decisions for the current page (number of hits + number of correct rejections) |
| pageHits | Number of hits (correctly selected signals/targets) |
| pageFas | Number of false alarms (incorrectly selected foils) |
| pageDurationMS | Time (in ms) spent on the current page |
Specific Page Info: (For All 200 Possible Stims) |
|
| text.n1.skip | 0 = number1 was presented; 1 = number1 was skipped |
| number1 | The currently randomly selected number for number1 |
| number1Signal | 1 = number1 is a signal/target (first digit is even, second digit is odd) 0 = number1 is a foil |
| number1Selected | 1 = number1 is currently selected by participant 0 = number1 is currently unselected by participant |
The procedure can be adjusted by setting the following parameters.
| Name | Description | Default |
|---|---|---|
Color Parameter |
||
| canvasColor | Display color of the actively used portion of the screen (the 'canvas') if set to a color other than the screenColor, the active canvas appears 'anchored' on the screen regardless of monitor size | white |
| screenColor | Color of the screen not used by the canvas ('inactive screen') | white |
| defaultTextColor | Default color of text items presented on active canvas | black |
| selectionHighLightColor | Default color to highlight the selected numbers | yellow |
Charity Information |
||
| charity | Add the charity here | "[Charity]" |
| charityDescription | Add additional info that should appear in the instructions about the charity here | "inserted text-check below" |
| showTotalDonationAtEnd | True: shows the total donation earned at the end (based on 90% accuracy per page) false: no donation information is provided at the end Lange & DeWitte (2022) call a page completed only if the duration spent on this page is not 2*SD lower than that of the sample mean for the particular page condition. However, to calculate this completion rate, the sample mean has to be known. | true |
Design: Donation Amounts (Iv1) X Number Of Stims On Screen (Iv2) |
||
| numberDonationAmountsToRun | This specifies the number of levels for IV1 (donation amounts) (MAX: 3) | 3 |
| donationAmount1 | IV1 level1 | 0.1 |
| donationAmount2 | IV1 level2 | 0.2 |
| donationAmount3 | IV1 level3 | 0.3 |
| montaryUnit | The monetary unit the donations should be made in | "$" |
| unitPlacement | The placement of the monetary unit sign ("after" vs. "before"), Examle: US $ "before" ->$0.1 | "before" |
The 5 Possible Stim Numbers To Appear On The Page (Iv2) |
||
| numberStimsToRun | This specifies the number of levels for IV2 (number of stims on the screen) (MAX: 5) | 5 |
| stimNumbers1 | IV2 level 1: 40 numbers on the screen | 40 |
| stimNumbers2 | IV2 level 2: 80 numbers on the screen | 80 |
| stimNumbers3 | IV2 level 3: 120 numbers on the screen | 120 |
| stimNumbers4 | IV2 level 4: 160 numbers on the screen | 160 |
| stimNumbers5 | IV2 level 5: 200 numbers on the screen | 200 |
Timing Parameters |
||
| taskPageDelayMS | The delay of the page (in ms) with the stims after participant decide to participate or not | 500 |
Debugging Parameters |
||
| debugMode | True: presents feedback for the test pages to check that calculations etc. match false: does not present test feedback (should be set to false for testing!!!!) | false |