I’m trying to reconstruct the psychometric function from a dataset collected using the QUEST adaptive staircase handler. The experiment was a 2AFC contrast detection task - I have simplified the experiment to a single staircase for this post. In a single trial, two gabor patches of different contrast were presented either side (randomised) of a fixation cross (pedestal, target). The contrast of the pedestal was fixed at 0% (transparent), the contrast of the target was the pedestal contrast + the staircase increment. The participant had to select the gabor of highest contrast (target). The parameters of the staircase were:
stairs = data.QuestHandler(startVal=0.0145, startValSd=0.02, pThreshold=0.82, nTrials=150, delta=0.01, gamma=0.01, method='quantile', minVal=0, maxVal=1.0, beta=3.5, stopInterval=.05)
Using the built-in demos as guidance, I’ve used the functionFromStaircase & FitWeibull functions to reconstruct the fit, but the threshold this produces does not match that produced by querying the mean of the QuestHandler object. My code is:
thisFile = 'datafile_0_percent' thisDat = fromFile(thisFile) print('Mean Thresh is %f' % (thisDat.mean())) #detection threshold is around 1.4% Mean Thresh is 0.01408328315420852 #Whereas if I try to reconstruct the function i, r, n = data.functionFromStaircase(allIntensities, allResponses, bins=10) fit = data.FitWeibull(i, r, expectedMin = 0.5, guess=[0.0145, 0.02]) thresh = fit.inverse(0.82) print(thresh) 0.001749428283190563
I know this is a naive question - but could somebody help me to understand why these thresholds differ so much? I’m unsure of some of the parameters of the FitWeibull function: I’m assuming “guess” is my priors (tGuess & tGuessSd), while expectedMin is the minimum possible performance on a 2AFC (50%). I’m quite new to psychophysics (especially Bayesian) - I hope you can forgive any dumb oversights…! I should say - these stimuli are still in prep - I haven’t inflicted them on anyone but myself yet!