Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com), Millisecond
Created: January 13, 2025
Last Modified: January 03, 2025 by K. Borchert (katjab@millisecond.com), Millisecond
Script Copyright © Millisecond Software, LLC
This script implements the Function Acquisition Speed Test (FAST), an implicit measure of stimulus relatedness (based on prior learning). It assesses how quickly a person can learn to arbitrarily sort items based on their existing associations, with the speed of acquisition reflecting the strength of these previously learned relationships. Items that are more strongly connected are thought to be easier to be sorted into the same categories, resulting in higher performance and faster sorting times. The FAST is suggested to be an alternative to the IAT and IRAP (e.g. Watters et al, 2023).
This default FAST template uses the attribute categories POSITIVE vs. NEGATIVE and the target categories FLOWERS vs. INSECTS with the hypothesized strength FLOWERS-POSITIVE (INSECTS-NEGATIVE) being more strongly related than the opposite pairings.
Watters, A. (2023). Assessing the Function Acquisition Speed Test (FAST) as a Novel Implicit Measure of Salient Emotional Experiences. ProQuest Dissertations & Theses.
Watters, A., Cummins, J., & Roche, B. (2023). How to Build and How not to Build an Implicit Measure in Behavior Analysis: A case Study Using the Function Acquisition Speed Test. Perspectives on Behavior Science, 46(3–4), 459–492. https://doi.org/10.1007/s40614-023-00387-w
Javascript implementation accessible here: https://github.com/JamieCummins/fast-js
5 minutes
Participants are asked to sort attributes (e.g. positive and negative adjectives) and target items (e.g flowers vs. insects) via 2 keystroke presses (e.g. Z vs M). Feedback is given after each sorting trial to inform the participant whether the correct key was pressed.
Participants work through two blocks: one 'CONSISTENT' and one 'INCONSISTENT' block.
CONSISTENT BLOCK: attribute and target items that are hypothesized to be more strongly connected (based on prior learning/experiences) are sorted via the same keys (Example: positive adjectives, e.g. "beautiful", flowers, e.g. "daisy", are both correctly sorted via the Z-key).
INCONSISTENT BLOCK: attribute and target items that are hypothesized to be more strongly connected (based on prior learning/experiences) are sorted via opposite keys (Example: positive adjectives are correctly sorted via the M-key but flowers are correctly sorted via the Z-key).
The order of the consistent and inconsistent block is determined randomly.
(1) General instructions
(2) Optional Practice (see section Editable Parameters), by default the practice block is skipped
(3) Test: 2 test blocks (CONSISTENT vs. INCONSISTENT)
-> order of blocks is randomly determined
-> 52 (learning) trials per block (see section Editable Parameters)
-> selection of the two attribute trials (here: positive vs. negative words) and the two target trials
(here: flowers vs. insects) is done randomly without replacement (repeat after all 4 trial types have been selected)
-> each attribute/target trial randomly (without replacement) selects one of their assigned stimuli
provided by Millisecond - can be edited in script 'fast_stimuli_inc.iqjs'
provided by Millisecond - can be edited in script 'fast_instructions_inc.iqjs'
File Name: fast_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 |
| skipPractice | 0 = false -> practice block is run 1 = true -> practice block is skipped |
| nTestTrials | Number of test trials (parameter) |
| blockOrder | The order in which the c(onsistent) and i(nconsistent) blocks were run (order is randomly determined) |
Accuracy |
|
| propCorrectOverall | Overall proportion correct (across consistent and inconsistent block) |
| propCorrectC | Proportion correct across consistent block |
| propCorrectI | Proportion correct across inconsistent block |
Latencies |
|
| meanCorrRTC | Mean correct response time in consistent block |
| meanCorrRTI | Mean correct response time in inconsistent block |
Fast Score Calculations |
|
| durationCMS | The block duration (in ms) of the consistent block |
| durationIMS | The block duration (in ms) of the inconsistent block |
| correctCountC | Total number of correct responses in the consistent block |
| incorrectCountC | Total number of incorrect responses in the consistent block (including timeout errors) |
| wrongKeyCountC | Total number of wrong key responses in the consistent block (excluding timeout errors) |
| timeoutCountC | Total number of timeout errors in the consistent block |
| correctCountI | Total number of correct responses in the inconsistent block |
| incorrectCountI | Total number of incorrect responses in the inconsistent block (including timeout errors) |
| wrongKeyCountI | Total number of wrong key responses in the inconsistent block (excluding timeout errors) |
| timeoutCountI | Total number of timeout errors in the inconsistent block |
| fastRFD | A per-minute Response Fluency Differential (RFD) score that is suggested to reflect the degree to which the response fluency on the consistent block is greater than that observed on the inconsistent block (Watters,2023,p.56-57). calculated as (((correctCountC-incorrectCountC)/durationCMS) - ((correctCountI-incorrectCountI)/durationIMS))*60000 Watters (2023, p.56) writes that the blockDuration time was measured in seconds. Millisecond believes this to be a typo because 1) to translate minutes into ms you need to multiply the minute time by t_ms = t_min * 60*1000 = t_min * 60000 (the number stated in the equation) with seconds you would only need to multiply the minute time by 60. 2) the RFD numbers provided by Watters (2023) would be much higher if the blockDuration was measured in seconds => Millisecond uses the blockDuration in ms for the RFD calculations |
File Name: fast_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 |
| 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) |
| 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. |
| condition | "c" = consistent; "i" = inconsistent |
| blockOrder | The order in which the consistent and inconsistent blocks are run |
| stimulusitem | Presented stimuli |
| response | The response of participant (scancode of response button) |
| responseText | The label of the response button |
| correct | Correctness of response (1 = correct, 0 = error) |
| latency | Response latency (in ms); measured from: onset of stims |
| rspTimestamp | Response timestamp of the current response (measured from onset of script) |
| respCategory | 0 = timeout 1 = incorrect response key was pressed 2 = correct response |
The procedure can be adjusted by setting the following parameters.
| Name | Description | Default |
|---|---|---|
Ui Parameters |
||
| canvasColor | The color of the portion of the screen used for the current task ("active") | white |
| screenColor | The color of the portion of the screen that is not used for the current task | white |
| defaultTextColor | The default text color | black |
Design Parameters |
||
| skipPractice | True = practice session is skipped (Waters et al, 2023, p.478, "[...] contemporary FAST studies generally omit practice blocks.") false = a practice session is run | true |
| nPracticeTrials | Number of practice trials (if practice block is run) | 10 |
| nTestTrials | Number of test trials run per consistent and inconsistent test block | 52 |
Sizing Parameters |
||
| wordStimHeightPct | The default height of the word stimuli (in canvas height%) | 5% |
| imageStimHeightPct | The default height of picture stimuli (in canvas height%) | 20% |
Timing Parameters |
||
| getReadyDurationMS | Duration (in ms) of the getReady trial | 2000 |
| stimDurationMS | The duration (in ms) that the stims are presented (also the response time) | 3000 |
| itiMS | Interttrial interval (in ms): presents black screen before each new trial | 500 |
| feedbackMS | Feedback duration (in ms) | 500 |
Responsekeys |
||
| leftResponseKey | The left response key (on a QWERTY keyboard) | "Z" |
| rightResponseKey | The right response key (on a QWERTY keyboard) | "M" |