[From Bill Powers (980928.1146 MDT)]
Att'n, mainly, Bob Eberlein:
Yesterday I posted the source and executable code for a tracking
experiment. This is the writeup describing how to use it and what's going on.
In this experiment there is a moving target (green) and a cursor (red)
which can move vertically on the screen. The target is split and the cursor
moves up and down between the halves of the target. The object of the task
is to move the mouse vertically so as to keep cursor aligned as exactly as
possible with the target.
When you start the program, the first thing that happens is the creation of
two patterns of disturbance, dist1 and dist2. These are recorded in the
output data set and part of them is displayed on the screen. Dist2 becomes
the pattern of target positions. Dist1 is applied to the cursor position
along with the effect of moving the handle (mouse). The cursor position is
the sum of handle position and dist1 magnitude. The screen is updated close
to 30 times per second, and a run lasts for about 66 seconds. The first 6
seconds of a run is a "run-in time" to allow the participant to get
control, and the next 60 seconds is the data run. A run starts when any
key is pressed after the disturbance patterns are displayed.
After the run, the 1800 values of data after the run-in time are printed to
a file called "\rundata.txt", in the root directory of the drive being
used. The values are in ASCII text in the format
dist1<comma>Dist2<comma>handle<carriage return><line feed>
During the run, the cursor position is computed and displayed as
cursor = dist1 + handle
and the target position as
target = dist2
In the model we use, the controlled variable is assumed to be the perceived
difference between target and cursor positions, and the reference level for
this variable is assumed to be zero. That is, the participant is instructed
to keep the perceived distance between the target and the cursor at zero,
and it's assumed that this was actually accepted as the goal. As a check to
see if the instructions were translated properly, we can plot (target -
cursor) and compute the RMS difference between this variable and zero. This
somewhat clumsy way of describing the task becomes more understandable when
it is known that the task could be defined otherwise -- for example,
keeping the target minus cursor distance equal to one centimeter.
The basic model that seems to fit the data the best is as follows, written
in terms of Vensim operations:
perceptual signal = delay fixed(target position - cursor position,DEL)
error signal = reference signal - perceptual signal
handle position = INTEG(K1*error signal - K2*handle position)
The reference signal can be assumed to be zero, or better can be set to the
average value of (target - cursor). The perceptual delay (DEL), the
integrating factor (K1) and the leakage factor (K2) are the parameters to
be determined (by adjusting them for best fit of model to data). The third
equation above lumps together all the physiological and physics functions
between the neural error signal and the physical "handle" position (we
started out using joysticks or cranks, hence the reference to a handle).
Actually there are several lower levels of control involved there, but by
lumping them into a single overall function we can predict the behavior
pretty well. The best-fit criterion is the difference between the actual
handle position and the model's handle position.
In PCT, we speak of the output process in terms of a "gain" factor and a
"slowing" factor. K1 is equal to gain/slowing and K2 is equal to 1/slowing,
so the best-fit values of K1 and K2 can be translated into an equivalent
gain and slowing factor.
For finding the best model, it's a good idea for the person doing the
tracking to practice a number of times, at least 10 runs, so that learning
will be, if not complete, at least well-advanced. It is also useful to save
the test results starting with the very first exposure to this experiment,
to investigate the learning curve. This requires renaming the file
c:\rundata.txt after each run (that file is written over after each run).
Have at it!
Best,
Bill P.