Hope someone here can help me, I'm new to the Quest toolbox.
I'm trying to find subject's 75% threshold for a concave/convex target. The parameter I'm
adjusting is the curvature of the target (smaller value = less curvature = harder to
discriminate between concave/convex). On each trial, I am randomly presenting a concave
or convex target and subjects press a key to tell me which one they think it was.
In my reading of the documentation, Quest should be able to efficiently guide me toward
the 75% threshold level for each of my subjects.
I've closely followed QuestDemo to create my script. The problem is that when I run my
code with >30 trials, I get a NaN value returned by QuestQuantile after about 10-15 trials.
With fewer trials, it seems ok. I suspect that I'm reaching the low end of my range of
curvature values (I use values from 1 to 20) but I'm also not sure if I'm using the output
from QuestQuantile correctly.
Here's the meat of my code:
%%%%% setup Quest first
tGuess = 10; % initial guess of threshold
tGuessSd = 10; % std. dev. on initial guess of threshold
grain = 1; % curvature values are integers from 1 through 20
range = 20;
pThreshold=0.75;
beta=3.5;delta=0.01;gamma=0.5;
q=QuestCreate(tGuess,tGuessSd,pThreshold,beta,delta,gamma,grain,range);
q.normalizePdf=1;
%%%%% start trials and add results to Quest database
for trials = 1:numtrials
window = OBAPOback2
(window,vertOcc,horzOcc,boxUL,boxUR,boxLL,boxLR,fixlines,gray,lgray,black,penW,red,ch
argray);
last_time = Screen('Flip', window, 0, 1);
lobesc(trials)=round(QuestQuantile(q)); % get next level of lobescale to test
tl = randperm(4);
[response(trials)] = POquestfly(lobesc); % function to write next stim. to screen
q=QuestUpdate(q,lobesc(trials),response(trials)); % Add the new datum
end;
%%%%% finish trials and print threshold estimate to screen
t=QuestMean(q);
sd=QuestSd(q);
fprintf('Final threshold estimate (mean±sd) is %.2f ± %.2f\n',t,sd);
Thanks for any/all help,
Adam
I'm trying to find subject's 75% threshold for a concave/convex target. The parameter I'm
adjusting is the curvature of the target (smaller value = less curvature = harder to
discriminate between concave/convex). On each trial, I am randomly presenting a concave
or convex target and subjects press a key to tell me which one they think it was.
In my reading of the documentation, Quest should be able to efficiently guide me toward
the 75% threshold level for each of my subjects.
I've closely followed QuestDemo to create my script. The problem is that when I run my
code with >30 trials, I get a NaN value returned by QuestQuantile after about 10-15 trials.
With fewer trials, it seems ok. I suspect that I'm reaching the low end of my range of
curvature values (I use values from 1 to 20) but I'm also not sure if I'm using the output
from QuestQuantile correctly.
Here's the meat of my code:
%%%%% setup Quest first
tGuess = 10; % initial guess of threshold
tGuessSd = 10; % std. dev. on initial guess of threshold
grain = 1; % curvature values are integers from 1 through 20
range = 20;
pThreshold=0.75;
beta=3.5;delta=0.01;gamma=0.5;
q=QuestCreate(tGuess,tGuessSd,pThreshold,beta,delta,gamma,grain,range);
q.normalizePdf=1;
%%%%% start trials and add results to Quest database
for trials = 1:numtrials
window = OBAPOback2
(window,vertOcc,horzOcc,boxUL,boxUR,boxLL,boxLR,fixlines,gray,lgray,black,penW,red,ch
argray);
last_time = Screen('Flip', window, 0, 1);
lobesc(trials)=round(QuestQuantile(q)); % get next level of lobescale to test
tl = randperm(4);
[response(trials)] = POquestfly(lobesc); % function to write next stim. to screen
q=QuestUpdate(q,lobesc(trials),response(trials)); % Add the new datum
end;
%%%%% finish trials and print threshold estimate to screen
t=QuestMean(q);
sd=QuestSd(q);
fprintf('Final threshold estimate (mean±sd) is %.2f ± %.2f\n',t,sd);
Thanks for any/all help,
Adam