SC-IAT Scoring


Author
Message
becgwin
becgwin
Guru (7.1K reputation)Guru (7.1K reputation)Guru (7.1K reputation)Guru (7.1K reputation)Guru (7.1K reputation)Guru (7.1K reputation)Guru (7.1K reputation)Guru (7.1K reputation)Guru (7.1K reputation)
Group: Forum Members
Posts: 53, Visits: 313
Hi,

I ran an SC-IAT last year based on the Inquisit task library version dated 03-26-2013 and I am slightly confused by the summary output. While I get no expressions.da (it appears to leave out calculations of the practice trials), I do get an expressions.db (which according to previous posts is for the test trials - topics3444) and an expressions.d (which according to same post is meant to combine practice and test trials). The expressions.d seems to be the expressions.da divided by 2. The expressions.latdiffb and expressions.latdiff are identical which I think makes sense if the practice trials are not included. I have since seen the updated version of the SC-IAT (dated 11-21-2013) and the programmed output makes more sense to me, so I assume it may have been amended in part to address this issue.  I just want to confirm that expressions.db in my summary output is D for test trials, and what I should use assuming I am satisfied to exclude trials larger than 10000ms and error trials.  Also, can anyone explain what expressions.d is in this case when it appears the practice trials were not included in the analysis, and yet it differs from expressionsdb. The script is as follows:

* 1 is compatible, 2 is incompatible
* a is first block, b is second block

<expressions>
/ m1a = values.sum1a / values.n1a
/ m2a = values.sum2a / values.n2a
/ m1b = values.sum1b / values.n1b
/ m2b = values.sum2b / values.n2b
/ sd1a = sqrt((values.ss1a - (values.n1a * (expressions.m1a * expressions.m1a))) / (values.n1a - 1))
/ sd2a = sqrt((values.ss2a - (values.n2a * (expressions.m2a * expressions.m2a))) / (values.n2a - 1))
/ sd1b = sqrt((values.ss1b - (values.n1b * (expressions.m1b * expressions.m1b))) / (values.n1b - 1))
/ sd2b = sqrt((values.ss2b - (values.n2b * (expressions.m2b * expressions.m2b))) / (values.n2b - 1))
/ sda = sqrt((((values.n1a - 1) * (expressions.sd1a * expressions.sd1a) + (values.n2a - 1) * (expressions.sd2a * expressions.sd2a)) + ((values.n1a + values.n2a) * ((expressions.m1a - expressions.m2a) * (expressions.m1a - expressions.m2a)) / 4) ) / (values.n1a + values.n2a - 1) )
/ sdb = sqrt((((values.n1b - 1) * (expressions.sd1b * expressions.sd1b) + (values.n2b - 1) * (expressions.sd2b * expressions.sd2b)) + ((values.n1b + values.n2b) * ((expressions.m1b - expressions.m2b) * (expressions.m1b - expressions.m2b)) / 4) ) / (values.n1b + values.n2b - 1) )
/ da = (m2a - m1a) / expressions.sda
/ db = (m2b - m1b) / expressions.sdb
/ d = (expressions.da + expressions.db) / 2
/ latdiffa = m2a - m1a
/ latdiffb = m2b - m1b
/ latdiff = ((values.sum2a + values.sum2b) / (values.n2a + values.n2b)) - ((values.sum1a + values.sum1b) / (values.n1a + values.n1b))
/ attitude = "unknown"
</expressions>


Finally, can any-one confirm that the raw error trial latencies are uncorrected, or corrected for in calculations only by their exclusion?  That way I can easily run my own analysis if I want to change the parameters e.g. delete trails less than 350ms etc.

Thanks,

Rebecca 








Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 13K, Visits: 104K
expressions.da, expressions.db and expressions.d represent what https://www.millisecond.com/forums/Topic3444.aspx details them to represent -- the kind of IAT (standard or single-category) does not matter in that regard.

If, for some reason (I don't know which and it it not possible to infer from the information you posted), expressions.da is not properly computed and thus remains at zero, your observations directly follow from the math in the respective expressions:

> The expressions.d seems to be the expressions.da divided by 2 [...]
(I assume you really mean expressions.db here, as previously you state "I get no expressions.da [...]")

d = (expressions.da + expressions.db) / 2 = (0 + expressions.db) = expressions.db / 2

> The expressions.latdiffb and expressions.latdiff are identical [...]

latdiff = ((values.sum2a + values.sum2b) / (values.n2a + values.n2b)) - ((values.sum1a + values.sum1b) / (values.n1a + values.n1b)) = ((0 + values.sum2b) / (0 + values.n2b)) - (0 + values.sum1b) / (0 + values.n1b)) = m2b - m1b = lattdiffb

> can anyone explain what expressions.d is in this case when it appears the practice trials were not included in the analysis, and yet it differs from expressionsdb

You have already perfectly answered that yourself: "The expressions.d seems to be the expressions.db divided by 2". It should not be used in this case.

> can any-one confirm that the raw error trial latencies are uncorrected

The RTs on error trials include a "built-in error penalty" (as is recommend; see Greenwald et al., 2003) -- if a person presses the wrong key in a given trial, she is not allowed to progress until she presses the correct key. The latency reflects when the latter happened, not when the first (wrong) response occurred.

Otherwise, raw RTs are what they appear to be -- no raw data is excluded or changed. You can thus re-compute the various d's from the raw data at any time.

Outlier RTs (latency > 10000ms) are excluded from automatic calculations only, which does not affect or alter the recorded raw latency in any way (you can see this for yourself by looking at the /ontrialend attributes in the script -- you will find that only latencies < 10000 are added to the respective summing variables).

Hope this helps.

becgwin
becgwin
Guru (7.1K reputation)Guru (7.1K reputation)Guru (7.1K reputation)Guru (7.1K reputation)Guru (7.1K reputation)Guru (7.1K reputation)Guru (7.1K reputation)Guru (7.1K reputation)Guru (7.1K reputation)
Group: Forum Members
Posts: 53, Visits: 313
Hi Dave,
Hi Dave,


That helps a lot.  Thanks again for answering my questions so quickly and thoroughly.  And yes I did mean expressions.db (not expressions.da) - sorry! Just one further question re the built in error penalty - I used the Karpinski and Steinman (2006) version (the SC-IAT as versus the ST-IAT) which allows a subject to move on without getting the correct answer (it just shows an X to indicate an incorrect answer).  It therefore doesn't have an automatically built in error penalty and it records both correct and incorrect latencies.  It doesn't however include any incorrect response latencies in the calculations of D as block instructions only relate to correct responses (e.g. / ontrialend = [if(values.correct == 1 && block.incompatibletest.latency  <= 10000) values.sum2 =  values.sum2 + block.incompatibletest.latency].  Am I understanding that correctly?  If I wanted to include error responses, I assume I would have to follow Karpinski and Steinman's recommendation of replacing error responses with the block mean plus 400ms error penalty. I have also worked out why the practice trials were not included - as Karpinski and Steinman excluded them from their analysis, the Inquisit script I adapted did not have any commands re generating calculations for the practice trials!


Thanks again,

Bec

Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 13K, Visits: 104K
> It doesn't however include any incorrect response latencies in the calculations of D as block instructions only relate to correct
> responses [...].  Am I understanding that correctly?

I believe so. It's also in line with the task description at the top of the script:

Script Specifics:

(1) EXPERIMENTAL PROCEDURE:
a) Block Practice Compatible* (24 trials); responses not counted towards D-score
b) Block Compatible (72 trials)
c) Block Practice InCompatible (24 trials); responses not counted towards D-score
d) Block InCompatible (72 trials)

*order compatible - incompatible counterbalanced by groupnumber

=> one D-score is determined

(2) TRIALS
After a pretrialpause of 250ms(default, editable), stimuli are presented for 1500ms max (default, editable).
If no response occurs during that time, a reminder is presented to "respond more quickly."
In contrast to the general IAT procedure used in the Millisecond Software scripts,
participants don't have to correct their response to move on. They are given
error feedback but no response correction is necessary.

(3) STIMULI:
- 21 words for Attribute Categories Good/Bad
- 7 words for target category (here: Animals)

(4) SCORING:
- latencies of trials larger than 10000ms and error trials are excluded from D-score analyses

becgwin
becgwin
Guru (7.1K reputation)Guru (7.1K reputation)Guru (7.1K reputation)Guru (7.1K reputation)Guru (7.1K reputation)Guru (7.1K reputation)Guru (7.1K reputation)Guru (7.1K reputation)Guru (7.1K reputation)
Group: Forum Members
Posts: 53, Visits: 313
Thanks for confirming that Dave.  I'll move on now with more confidence!

AC
AC
Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)
Group: Forum Members
Posts: 17, Visits: 102

Hello,

 

Does anyone have SPSS syntax for scoringthe SC-IAT? I am not syntax savvy and am tying myself in mental knots trying toamend the Brief IAT SPSS syntax to suit.

 

Hopeful thanks in advance

 

AC


Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 13K, Visits: 104K
If you are going to use any existing syntax as the basis, you should *not* use the Brief IAT syntax, but the Standard IAT syntax. The Brief IAT is *very different* from a regular IAT, while the Standard IAT and the SC-IAT are a much closer match. Beyond that, I'm not aware of any existing scoring syntax and -- since the script itself already computes the usual dependent variables and logs them to the data file -- most people don't actually need any.

Hope this helps..

AC
AC
Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)
Group: Forum Members
Posts: 17, Visits: 102

Hello, thank you so much for the speedy for the response. I cansee the d scores, but I need to exclude the responses below 350ms (as Karpinskiand Steinman guidelines) so d will have to be recalculated in spss and I was just hoping that someone might havesyntax so that I avoided the likelihood of me making a mistake as I do itmanually. Even if Ididn’t need to recalculate I can’t get my head around how to tell spss to pickup just the last d score for an individual in a particular block when restructuring‘selected cases to variables’.

Thanks again


Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 13K, Visits: 104K
> Even if Ididn’t need to recalculate I can’t get my head around how to tell spss to pickup just the last d score for an individual in a > particular block when restructuring‘selected cases to variables’.

You use SPSS's last() function. https://www-01.ibm.com/support/docview.wss?uid=swg21476173

In general, aggregating data is not hard. Good introductions are among others:

- Lacroix & Giguère (2006) available at http://www.tqmp.org/Content/vol02-1/p020/p020.pdf

- https://computingforpsychologists.wordpress.com/2012/12/11/how-to-analyse-reaction-time-rt-data-part-1/

- http://ron.dotsch.org/importing-inquisit-data-files-into-spss-pasw/

- http://jeromyanglim.blogspot.com/2010/07/how-to-process-inquisit-raw-data-in.html

Once you've got the basics down, you should be able to (a) read and understand any existing SPSS syntax and (b) be able to modify it according to your needs.

AC
AC
Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)Distinguished Member (3.1K reputation)
Group: Forum Members
Posts: 17, Visits: 102
Hi again, for what I think its the final time. Surprisingly I seem to have sorted it out. It's great to know about the last function. Thanks for all of your help!

GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search