GNAT sample scripts for calculating d?


Author
Message
Jay
Jay
Respected Member (344 reputation)Respected Member (344 reputation)Respected Member (344 reputation)Respected Member (344 reputation)Respected Member (344 reputation)Respected Member (344 reputation)Respected Member (344 reputation)Respected Member (344 reputation)Respected Member (344 reputation)
Group: Forum Members
Posts: 2, Visits: 1

Hello out there, 


Does anyone have a sample script (or know of an article that discusses this) for calculating a d score at the end of a GNAT?  What I am hoping is for participants to see their d score (and perhaps an interpretation) upon completion of the test.   I am also a little confused about whether the error rate alone, or the response latencies alone, or some combination of both - is the best way to score a GNAT.


On a related note . . . is there SPSS information for GNAT data? 


Thanks for the help.


JC


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: 103K

GNAT data may be summarized by calculating d' (d prime), a measure of sensitivity common in signal detection theory (SDT). Nosek & Banaji (2001) discuss analysis of GNAT data at length. Whether an accuracy based measure like d' or a latency based measure should be used depends on the specifics of your GNAT procedure. Note that d' is neither identical to the IAT D score measure nor Cohen's d (a measure of effect size). Because of the underlying distributional assumptions, calculating d' requires some advanced mathematical functions available in popular stats software, but not Inquisit (which is primarily a data collection, not a data analysis tool). Pulling this off in Inquisit would be very awkward if at all possible. SPSS syntax is available from the GNAT page at millisecond.com or Brian Nosek's site at Project Implicit.



Regards,


~Dave


seandr
seandr
Supreme Being (143K reputation)Supreme Being (143K reputation)Supreme Being (143K reputation)Supreme Being (143K reputation)Supreme Being (143K reputation)Supreme Being (143K reputation)Supreme Being (143K reputation)Supreme Being (143K reputation)Supreme Being (143K reputation)
Group: Administrators
Posts: 1.3K, Visits: 5.6K

Just a quick comment on computing d prime in Inquisit. As Dave suggested, this can't be done with the current set of built in functions available in Inquisit. Specifically, Inquisit lacks a function for computing the Z score, which is required for computing d prime. This will likely be added to a future release.


-Sean


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: 103K

Since I've been doing some related work anyway, I might as well throw this in here. If anyone really, really, really needs to compute p or z values for whatever reason, Inquisit syntax for the standard normal CDF and its inverse is provided below. The code is based on Aludaat & Alodat (2008). More accurate algorithms are available, but I prefer these approximations because they're (a) relatively concise and (b) accurate enough for most purposes in psychology and related fields. Warning to unsuspecting readers: If you don't understand what this code does, chances are you don't need it.



# Normal CDF and Inverse Normal CDF functions
# This code is based on the approximations given in Aludaat & Alodat (2008).
# Results should be accurate to about two decimal places, with larger deviations
# for extreme values. This code is provided without any warranty.

# expressions.p_z computes p given z
# expressions.z_p computes z given p

<expressions>
/ p_z = if(values.z>0) 0.5*(1+sqrt((1-exp(-sqrt(m_pi/8)*pow(values.z,2))))) else
    1-0.5*(1+sqrt((1-exp(-sqrt(m_pi/8)*pow(values.z,2)))))
/ z_p = if(expressions.p_z>0.5) sqrt(-ln(1-pow(2*expressions.p_z-1,2))/sqrt(m_pi/8)) else
    -sqrt(-ln(1-pow(2*expressions.p_z-1,2))/sqrt(m_pi/8))
</expressions>

<values>
/ z = 0.6
</values>

<text mytext>
/ items = ("z = <%values.z%> | p_z = <%expressions.p_z%> | z_p = <%expressions.z_p%>")
</text>

<trial mytrial>
/ stimulusframes = [1=mytext]
/ validresponse = (anyresponse)
</trial>



Regards,


~Dave


GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search