User Manual: Inquisit Abstract Matrix Reasoning Form 2


												Version 2
					Main Script to run: matrixreasoning_version2.iqjs


___________________________________________________________________________________________________________________	

								Matrix Reasoning Task
___________________________________________________________________________________________________________________	


Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com) for Millisecond Software, LLC
Date: 07-08-2022
last updated:  07-24-2024 by K. Borchert (katjab@millisecond.com) for Millisecond Software, LLC

Script Copyright © 07-24-2024 Millisecond Software

___________________________________________________________________________________________________________________
BACKGROUND INFO 	
___________________________________________________________________________________________________________________
This script implements Millisecond Software's computerized version of a matrix reasoning task inspired by the
Raven Matrix Reasoning Test of non-verbal intelligence and reasoning skills.

Matrices are taken from the published matrices of Matzen et al (2010).
The published software by Matzen et al (2010) can be further used to generate new and unique matrices.

This script runs version1 of 5 alternate versions
(Note: the five versions provided should theoretically be of similar difficulties but that has not been
empiricially validated yet)

Reference:
Matzen, L. E., Benz, Z. O., Dixon, K. R., Posey, J., Kroger, J. K., & Speed, A. E. (2010). 
Recreating Raven’s: Software for systematically generating large numbers of Raven-like matrix problems 
with normed properties. Behavior research methods, 42(2), 525-541. 
https://doi.org/10.3758/BRM.42.2.525											

matrices downloaded from: https://github.com/LauraMatzen/Matrices

___________________________________________________________________________________________________________________
TASK DESCRIPTION	
___________________________________________________________________________________________________________________

Participants are given twelve 3x3 matrices. Each matrix is missing its last piece. 
Below the matrix are eight alternative pieces to complete the figure, only one of which is correct. 
Each matrix involves a different set of transformations or rule for obtaining the missing piece. 
The matrices are roughly arranged in increasing order of difficulty.
The test is self-paced with a time limit of 2 hours (editable).

The matrices run by this script are pre-selected for version1.

___________________________________________________________________________________________________________________	
DURATION 
___________________________________________________________________________________________________________________	
the default set-up of the script takes appr. 20 minutes to complete
(Note: time limit can be implemented)

___________________________________________________________________________________________________________________	
DATA OUTPUT DICTIONARY
___________________________________________________________________________________________________________________
The fields in the data files are:

(1) Raw data file: 'matrixreasoning_versionx_raw*.iqdat' (a separate file for each participant)

build:						The specific Inquisit version used (the 'build') that was run
computer.platform:			the platform the script was run on (win/mac/ios/android)
date, time: 				date and time script was run 
subject:					with the current subject id
group: 						with the current group id
session:					with the current session id

blockCode, blockNum:		the name and number of the current block (built-in Inquisit variable)
trialCode, trialNum: 		the name and number of the currently recorded trial (built-in Inquisit variable)
								Note: trialNum is a built-in Inquisit variable; it counts all trials run; even those
								that do not store data to the data file. 
																
version:					the matrix reasoning task version run															
																
matrixCount:				a counter tracks the number of matrices run 
level:						the level of the current matrix (1, 2, 3, 4 = logic problems) 
matrix:						the itemnumber of the current matrix 
matrixImage:				the image file of the current matrix
 
correctAnswer:				stores the correct answer for the current matrix (1-8)
							number from left to right, top to bottom
							
currentAnswer:				the currently selected answer 
problemRT:					the time (in ms) it took to work on the problem								
								
response:					the response of participant
							Note: once response = 'submit', accuracy and final problemRT are calculated

correct:					correctness of response (1 = correct, 0 = otherwise)
							Note: accuracy is established once the submit button is pressed (aka participants commits to an answer)

latency:					response latency (in ms) of the current trial; measured from: onset of trial

/////debugging:
debugmode:					for testing sessions, this parameter should be 0 (see editable parameter settings)


(2) Summary data file: 'matrixreasoning_versionx_summary*.iqdat' (a separate file for each participant)

inquisit.version:			Inquisit version run
computer.platform:			the platform the script was run on (win/mac/ios/android)
startDate:					date script was run
startTime:					time script was started
subjectId:					assigned subject id number
groupId:					assigned group id number
sessionId:					assigned session id number
elapsedTime:				time it took to run script (in ms); measured from onset to offset of script
completed:					0 = script was not completed (prematurely aborted); 
							1 = script was completed (all conditions run)

matrixCount:				the number of matrix problems run							
propCorrectOverall: 		proportion correct across all matrices
meanRTOverall:				mean problem RT (across correct and incorrect solutions) across all matrices
meanCorrRTOverall:			mean correct problem RT across all correctly solved items

/////////by Level:
///level1-3 = transformation problems
///level4 = logic problems

countLevel1:				the number of level1 problems run
propCorrectLevel1: 		proportion correct across all 3 level1 items
meanRTLevel1:				mean problem RT (across correct and incorrect solutions) across all level1 items
meanCorrRTLevel1:			mean correct problem RT across all correctly solved level1 items

countLevel2:				the number of level2 problems run
propCorrectLevel2: 		proportion correct across all 3 level2 items
meanRTLevel2:				mean problem RT (across correct and incorrect solutions) across all level2 items
meanCorrRTLevel2:			mean correct problem RT across all correctly solved level2 items

countLevel3:				the number of level3 problems run
propCorrectLevel3: 		proportion correct across all 3 level3 items
meanRTLevel3:				mean problem RT (across correct and incorrect solutions) across all level3 items
meanCorrRTLevel3:			mean correct problem RT across all correctly solved level3 items

countLevel4:				the number of level4 problems run
propCorrectLevel4: 		proportion correct across all 3 level4 items
meanRTLevel4:				mean problem RT (across correct and incorrect solutions) across all 3 level4 items
meanCorrRTLevel4:			mean correct problem RT across all correctly solved level4 items
							
___________________________________________________________________________________________________________________	
EXPERIMENTAL SET-UP 
___________________________________________________________________________________________________________________	

By default, this script run 12 matrices that roughly increase in difficulty (see list.matrices for option to
change to a random presentation of the matrizes). Each matrix provides
8 answer choices to choose from. Participants can change their selection until they press the 
'Submit' button. The test is self-paced. By default, the time limit of the test is "none" which 
gives participants 2hours by design.

Please note that the assignment of 'difficulty' in this script is based on results and discussion 
of Matzen et al (2010). See further notes below.
The selection has not been empirically validated.

Transformation Problems:
//"11" => level1, difficulty1 (simple transformation)
//"12" => level1, difficulty2 (diagonal transformation)
//"13" => level3, difficulty3 (outward transformation)

//"21" => level2, difficulty1 (2 simple transformations)
//"22" => level2, difficulty2 (2 diagonal transformations)
//"23" => level2, difficulty3 (1 diagonal transformation + 1 outward transformation)

//"31" => level3, difficulty1 (2 simple transformations + 1 diagonal transformation)
//"32" => level3, difficulty2 (1 simple transformation + 2 diagonal transformations)
//"33" => level3, difficulty3 (2 diagonal transformations + 1 outward transformation)

Logic Problems:
//"41" => level4, difficulty1 (disjunction logic problem)
//"42" => level4, difficulty2 (conjunction logic problem)
//"43" => level4, difficulty3 (exclusive disjunction logic problem)

The problems in this script are randomly selected from their respective problem pools.
For example: 
list.level11 contains the itemnumber of all problems that can be selected for level1, difficulty1 problems
The problem pool lists can be customized to run fixed lists instead.


///////Additional Comments: Difficulty Assignment///////
The assignment of 'difficulty' is based on results and discussion of 
Matzen et al (2010)

Basic Progression of Difficulty:

(1) Transformational Matrices
a) Simple transformations (vertical and horizontal),
b) Diagonal transformations 
c) Outward transformation

Notes: Matzen et al (2010) report the general finding that the more transformations of each kind a problem
contains the harder it gets. However, some restrictions apply:
- For example, for level1 problems, diagonal problems were not statistically more difficult than simple transformations 

(2) Logic Matrices
a) disjunction
b) conjuction
c) exclusive disjunction

Notes: While Matzen et al (2010) report that the disjunction problems were easier than 
conjunction or exlusive disjunction problems, the difference was not statistically significant 

___________________________________________________________________________________________________________________	
STIMULI
___________________________________________________________________________________________________________________

matrices downloaded from: https://github.com/LauraMatzen/Matrices

This script only uses the matrices that can be assigned to the level-difficulty categories
defined in this script. Twelve of these items were selected to run this version of the 
Inquisit Matrix Reasoning Script.

/////////////////////////////////////////
////Running your own matrix problems/////
/////////////////////////////////////////
By replacing the images used in this script with your own (images should conform to the layout of matrix images
and images of answer choices) under item.matrices/item.matrices_answers/item.matrices_correctanswers
you could run your own matrix problems with this script.
___________________________________________________________________________________________________________________	
INSTRUCTIONS 
___________________________________________________________________________________________________________________

provided by Millisecond Software - can be edited under section 'Editable Instructions'
___________________________________________________________________________________________________________________	
EDITABLE CODE 
___________________________________________________________________________________________________________________	
check below for (relatively) easily editable parameters, stimuli, instructions etc. 
Keep in mind that you can use this script as a template and therefore always "mess" with the entire code 
to further customize your experiment.

The parameters you can change are:

/ timeLimitMS = "none"     		//the time limit (in ms) for all problems
									//by default, there is no time limit for this problem ("none"). 
									//If set to "none" the script will terminate after 2 hours if not completed earlier
									
/ showTimer = false					//true = show a timer in the upper right corner of the screen
									//false = don't show the timer					
									

//Debugging Parameter:
/ debugmode = 0						//1 = the script provides the correct response to double check the correctness of the coding
									//0 = no correct response is provided on screen (should be used for testing)