Adaptive Method in Eprime

David McFarlane mcfarla9 at msu.edu
Fri Feb 8 16:06:29 UTC 2008


Carolina,

>Participants in my study will see two lines: One line is the standard
>line; it never changes its length. The other one is the comparative
>line: The comparative line changes its size depending on the response
>of the participants on the trial before. The length of the line is
>calculated by an algorithm that looks like this: Xn+1 = Xn - c/n (Zn -
>K). Xn is the actual stimulus size of the comparative line, c is a
>constant, n is the trial number, Zn is the response of the participant
>which is either 0 or 1 and K is a set criteria. After every trial Xn+1
>is calculated and set as the new stimulus size Xn. This new stimuli
>size should be displayed in the next trial. This continues until a
>criteria is achieved.

I programmed something very much like this last year, a temporal 
acuity experiment where the duration of a tone was modified after 
each response according to a "staircase" procedure.  Here's an 
outline of what I did.

The essential structure looks like this:
StaircaseInitScript
TrialList
     TrialProc
         TrialInitScript
         StimulusObject

TrialList just provides a looping mechanism for running the trials, 
and allows you to put an upper limit on the number of 
trials.  TrialProc runs each trial within a 
staircase.  StimulusObject shows your lines and collects a 
response.  Now, your trials may include more elements (fixation, 
mask, a separate response object), but you get the idea.

The stimulus is controlled by using an attribute reference in the 
relevant property of your stimulus object.  In your case it will be 
line length, so we might enter this as [LineLength].

The value of LineLength does not come from a list, but instead from 
an inline script, TrialInitScript.  That is the key.  TrialInitScript 
does all the work of looking at the previous response and calculating 
the next value of LineLength using whatever computation you like.  I 
can't go into much detail here, but it will probably involve some 
If... Thens, etc.  Three things you will need to know,  (1) You can 
get the subject's response with StimulusObject.RESP.  (2) You set 
LineLength in script like this:  c.SetAttrib "LineLength", x  (where 
x is some variable; and that variable can itself be named LineLength 
without conflict).  (3) When the subject meets criterion you exit the 
list like this:  TrialList.Terminate.

Finally, all this staircase stuff has to be initialized somewhere, 
that's what StaricaseInitScript is for.  You will also need some 
global variables, so some stuff will go in the User area of the full 
experiment script.  And if you want to run several staircases you 
will need to enclose all this in yet another list, e.g., StaircaseList.

Again, this is only a sketch, if I tell you any more I would have to 
charge you :).

-- David McFarlane, Systems Designer
    Dept. Psychology, Michigan State University


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "E-Prime" group.
To post to this group, send email to e-prime at googlegroups.com
To unsubscribe from this group, send email to e-prime-unsubscribe at googlegroups.com
For more options, visit this group at http://groups.google.com/group/e-prime?hl=en
-~----------~----~----~----~------~----~------~--~---



More information about the Eprime mailing list