
What's new?
Note that all updates to Palamedes are backwards compatible: whatever code you wrote for earlier versions
of Palamedes will still work when you upgrade to a newer version of Palamedes. We have felt it necessary to violate this
guiding principle (knowingly) so far only once. If we violated this principle unknowingly elsewhere, please let us know.
May 6, 2019  Posted Palamedes version 1.10.0.
 Introduces Bayesian fitting of Psychometric Functions using MCMC sampling of posteriors (MCMC is actually performed
by either Stan or JAGS which must be obtained and installed from third party). Can fit multiple conditions simultaneously
and will run a hierarchical fit if data from multiple observers are included. The core function is PAL_PFHB_fitModel. See
our new 'Hierarchical Bayesian' page and the typical sources ('help PAL_PFHB_fitModel', Demos in PalamedesDemos, etc.) for more information.
December 21, 2018  Posted Palamedes version 1.9.1.
 Palamedes functions PAL_PFML_Fit, PAL_PFML_BootstrapParametric, PAL_PFML_BootstrapNonParametric, and PAL_PFML_GoodnessOfFit
will now by default check whether the likelihood function contains a true maximum. If not, Palamedes will identify the best
fitting constant or step function that can be approached to any degree of precision by the psychometric function you're trying
to fit. See the (updated) page: www.palamedestoolbox.org/understandingfitting.html for much more information. Another way to find out more about this is to type 'help [nameoffunction]'.
 'iAPLE' fitting scheme is now disabled (made code very bulky, use of 'iAPLE' over 'jAPLE' fitting is hard to defend)
September 18, 2018  Posted Palamedes version 1.9.0.
 Added PAL_PFML_CheckLimits.m This functions checks whether the fit reported by PAL_PFML_Fit corresponds to a true
global maximum or whether, instead a step function or constant function (either of which can be approached to any degree of
precision by a sigmoidal function) exists which has higher log likelihood than the fit returned by PAL_PFML_Fit.m (as in,
for example, Figure 4 on http://www.palamedestoolbox.org/understandingfitting.html). Also added PAL_PFML_CheckLimits_Demo
in the PalamedesDemos folder which demonstrates things).
 Added the option to the Maximum
Likelihood Difference Scaling (MLDS) routines to fit model in the style of Devinck & Knoblauch 2012. Type help PAL_MLDS_Fit for more information.
 Minor maintenance (see History.m for details)
July 24, 2018  We have a new citation! Click the link to visit the
article: Prins, N & Kingdom, F. A. A. (2018) Applying
the ModelComparison Approach to Test Specific Research Hypotheses in Psychophysical Research Using the Palamedes Toolbox.
Frontiers in Psychology, 9:1250. doi: 10.3389/fpsyg.2018.01250
June 22, 2016  Posted Palamedes version 1.8.2
 Added
a minimalcode, nofrills demo of the basic psimethod (PAL_AMPM_Basic_Demo). Start with PAL_AMPM_Basic_Demo if you'd like
to use the psimethod but are new to Matlab, Palamedes, or the psimethod. If you'd like to do something fancier (deal with
nuisance parameters, use a custom, nonuniform prior, or something else) check PAL_AMPM_Demo.
 Bug
fix in PAL_AMPM_setupPM.m See history.m for details.
April 20, 2016  Fixed minor bugs in PAL_SDT_PSvAS_SummSquare_Demo.m
and PAL_SDT_PSvAS_3PFmultipleFit_Demo.m (both are in PalamedesDemos folder) and fixed an error in 'help' text of PAL_SDT_PS_MonteCarlo_SLtoPC.m.
No changes were made in code of palamedes proper (i.e., the files in the Palamedes folder) so no new version number warranted
(by our own madeup rules).
December 2, 2015  Posted version 1.8.1
 Improved
PAL_PFBA_Fit. Any combination of the four parameters of a PF can now be free parameters.
 New
DEMO file: PAL_PFLR_LearningCurve_Demo
 All code now compatible with examples and such in the soontobereleased 2nd Edition of Psychophysics:
A Practical Introduction
 Minor updates and bug fixes.
 See History.m
for details.
February 19th, 2015  Posted version 1.8.0
 Revised
some existing Signal Detection Theory (SDT) routines. Introduced new SDT routines, new routines for fitting psychometric functions
with SDT models, new routines for computing additive and probability summation measures, and new routines for fitting psychometric
functions with additive and probability summation models.
 The revised existing SDT routines are:
 PAL_SDT_MAFCoddity_DiffMod_DPtoPC. Used
to be PAL_SDT_MAFCoddity_DPtoPC but the new routine name makes explicit that the analysis assumes a Differencing model.
 PAL_SDT_MAFCoddity_DiffMod_PCtoDP. Used
to be PAL_SDT_MAFCoddity_PCtoDP, but name changed for the same reason as above.
 PAL_SDT_MAFCoddity_DPtoPC now nonoperational
 PAL_SDT_MAFCoddity_PCtoDP now nonoperational
 The new SDT routines are:
 PAL_SDT_2AFC_DPtoPC converts dprime
(DP) to proportion correct (PC) for a 2AFC task.
 PAL_SDT_2AFC_PCtoDP converts proportion correct (PC) to dprime (DP) for a 2AFC task.
 PAL_SDT_SLtoPC converts stimulus intensity/level
(SL) to proportion correct (PC) for any SDT model (e.g. 2AFC, Oddity), and for any number of alternatives/intervals M, stimulus
gain g and transducer exponent p.
 PAL_SDT_PCtoSL converts proportion correct (PC) to stimulus intensity/level (SL) for any SDT model (e.g. 2AFC, Oddity),
and for any number of alternatives/intervals M, stimulus gain g and transducer exponent p.
 The new SDT psychometric function fitting routines are:
 PAL_SDT_PFML_Fit. Uses maximumlikelihood to fit
a psychometric function of proportion correct against stimulus level with any SDT model and estimates parameters stimulus
gain g and transducer exponent p.
 PAL_SDT_PFML_BootstrapParametric. Estimates errors on the parameters g and p estimated from the
fitted SDT psychometric function
 PAL_SDT_PFML_Goodness_Fit. Calculates a transformed likelihood ratio measure of goodnessoffit for
the fitted SDT psychometric function
 PAL_SDT_PF_Demo. Script for demonstrating the operation of the three above routines
 The new summation routines are:
 PAL_SDT_AS_2uneqSLtoPC calculates proportion
correct (PC) for the additive summation (AS) of two stimuli given the intensity/level (SL) of one of them and the ratio of
their intensities/levels.
 PAL_SDT_AS_PCto2uneqSL calculates the intensity/levels (SLs) of two stimuli from proportion correct (PC), assuming
additive summation (AS), given the ratio of their levels/intensities. The routine enables two unknowns (different stimulus
levels) to be computed from one PC.
 PAL_SDT_PS_2uneqSLtoPC as above but for probability summation (PS).
 PAL_SDT_PS_PCto2uneqSL as above but for probability
summation (PS).
 The new summation psychometric function fitting routines are:
 PAL_SDT_Summ_MultiplePFML_Fit fits simultaneously either an additive
(AS) or probability (PS) summation model to multiple psychometric functions (e.g. for stimulus A, B, A+B), and estimates the
parameters stimulus gain g and transducer exponent p.
 PAL_SDT_Summ_MultiplePFML_BootstrapParametric estimates the errors on parameters g and p obtained
from the above routine.
 PAL_SDT_Summ_MultiplePFML_GoodnessOfFit Calculates a transformed likelihood ratio measure of goodnessoffit for
the multiplefit summation psychometric functions
 PAL_SDT_PSvAS_3PFmultipleFit_Demo. Script demonstrates the usage of the multiplefit additive
and probability summation model routines for the case of three psychometric functions, for stimuli A, B and A+B.
 PAL_SDT_PSvAS_SummSquare_Demo. Script demonstrates
the usage of the multiplefit additive and probability summation model routines for the case of five psychometric functions,
each derived from a particular ratio of levels/intensities of two stimuli A and B, with thresholds arranged in a summation
square.
September 16, 2014  We have added a page that explains some of the issues involved in Maximum Likelihood fitting. Not getting the nice
fit you were hoping for? This page will probably tell you what happened and provide some ideas to fix it: www.palamedestoolbox.org/understandingfitting.html
June 27, 2014  Posted version 1.7.0
 Introduced some new routines
that model probability summation and linear summation of multiple stimuli according to the assumptions of Signal Detection
Theory (details below).
 Introduced a function (PAL_GoodnessOfFitZeroDF)
that determines goodnessoffit of model of binomial data in which the model has zero df. Always wondered whether that coin
was fair? This is the routine for you!
 Corrected some regressions
that occurred in version 1.6.3.1 (version 1.6.3.1 somehow undid some updates introduced in 1.6.3).
 As always, see History.m for details.
 Here are the details of the summation routines!
 Routines calculate probabilty and additive summation for detection tasks with multiple stimuli under the assumptions
of SignalDetectionTheory, using new formulae solved by numerical integration.
 The new routines for probability summation (PS) are:
 PAL_SDT_PS_SLtoPC converts stimulus level (i.e. amplitude) x to proportion correct PC, for input
parameters, g (stimulus level scaling factor), p (exponent on transducer), M (num. alternatives in forcedchoice task), Q
(num. monitored channels) and n (number of stimuli in target interval).
 PAL_SDT_PS_PCtoSL performs the inverse of PAL_SDT_PS_SLtoPC, i.e, converts PC to x.
 PAL_SDT_PS_uneqSLtoPC same as PAL_SDT_PS_SLtoPC except it handles stimuli with different
stimulus levels (x), scaling factors (g) and transducer exponents (p).
 PAL_SDT_PS_MonteCarlo_SLtoPC use MonteCarlo simulation rather than numerical integration to perfom the same
task as PAL_SDT_PS_SLtoPC. Usefull for verification and educational purposes.
 PAL_SDT_PS_MonteCarlo_uneqSLtoPC performs MonteCarlo simulation of PAL_SDT_PS_uneqSLtoPC.
 The new routines for additive summation (AS) are:
 PAL_SDT_AS_SLtoPC, PAL_SDT_AS_PCtoSL, PAL_SDT_AS_uneqSLtoPC. These perform the
additive summation equivalents of PAL_SDT_PS_SLtoPC, PAL_SDT_PS_PCtoSL and PAL_SDT_PS_uneqSLtoPC.
April 10, 2014  We created a page that explains how the various psychometric functions in the 'Weibullfamily'
(i.e., Weibull, Gumbel, Quick, and logQuick) relate to each other: www.palamedestoolbox.org/weibullandfriends.html.
 Posted Palamedes version 1.6.3.1 which introduces changes only in help comments and information provided in some
error messages (see History.m for details).
March 3, 2014  Posted version 1.6.3
 Restored backward compatibility to Matlab Release 14 SP1 (2004).
Compatibility checked with Matlab version 7.0.1.24704 without any of the additional Matlab toolboxes. Compatibility also checked
against GNU Octave 3.6.1 under MS windows and GNU Octave version 3.8.0 under Ubuntu Linux. Known issue: Figures created by
the Demo programs in the PalamedesDemos folder do not come out under Octave as intended (all routines in the Palamedes toolbox
[i.e., in the 'Palamedes' folder] function properly, though!).
 Palamedes no longer suppresses Matlab's logOfZero and
DivideByZero warning. Matlab stopped issuing these warnings years ago (2007?). Users of older versions of Matlab or Octave
(Octave 3.8.0 still issues 'division by zero' warning) may encounter these warnings occassionally: ignore (they are inconsequential)
or suppress in your own routines.
 PAL_Weibull and PAL_Quick generate an error if negative values for stimulus intensity
are passed to them. The error comes with a suggestion to use functions PAL_Gumbel or PAL_logQuick (PAL_Weibull and PAL_Quick
expect stimulus intensities on linear (nonlogtransformed) in which x = 0 signifies an absence of signal, PAL_Gumbel and
PAL_logQuick, respectively, are their counterparts which expect logtransformed values). We will add a page to this website
soon that will explain how the Weibull, Gumbel, Quick and logQuick functions are related. [Done, see April 10, 2014 entry
above].
 Minor maintenance. See History.m for detail.
February 17, 2014  Posted version 1.6.2
 Improved on PAL_Contrasts: Returns integervalued contrast
coefficients when possible, finds polynomial contrast coefficients for values that are not equally spaced, issues warning
when a full set of orthogonal polynomial contrasts cannot be found.
 Directs user to possible cause of warning issued
by a fitting function regarding the values of MaxFunEvals and/or MaxIter.
December 20, 2013  Posted version 1.6.1
 Minor changes only. Recoded some PAL_AMPM routines to improve
speed of execution (without change in usage or functionality), added Quick and logQuick as options in PAL_spreadPF, and fixed
a problem that crashed PAL_AMPM_Demo when executed in GNU Octave (thanks to Mark Scott for pointing out the issue).
March 15, 2013  Posted version 1.6.0
 SDT (signal detection theory) routines for fitting ROC
(receiver operating characteristic) curves to singleinterval rating scale data are here! PAL_SDT_ROCML_Fit fits the ROC curves
using maximum likelihood to obtain estimates of d’ (dprime) and the ratio of standard deviations (SD ratio)
of the two underlying distributions (e.g. noise and signalplusnoise). PAL_SDT_BootstrapParametric
provides estimates of the errors on the two output parameters, while PAL_SDT_ROCML_GoodnessOfFit measures the curve’s
goodnessoffit. A useful extra is PAL_SDT_ROCML_RatioSDcomparison which determines whether the SD ratio
is significantly different from unity. The operation of all ROC routines is demonstrated in the script
PAL_SDT_ROCML_Demo, which outputs graphs of all three example data sets and their fits.
 New
SDT routines are also provided for Oddity tasks under the Independent Observation model. For the 3AFC (threealternativeforcedchoice)
Oddity task PAL_SDT_3AFCoddity_IndMod_DPtoPC and PAL_SDT_3AFCoddity_IndMod_PCtoPDP convert d’ to PC (proportion
correct) and PC to d’ respectively. For MAFC (M>3) Oddity tasks the corresponding routines
are PAL_SDT_MAFCoddity_IndMod_DPtoPC and PAL_SDT_MAFCoddity_IndMod_PCtoPDP.
 We've updated
the Psi method routines (PAL_AMPM_) such that they can run (if so instructed) our very own 'Psimarginal' method. In the Psimarginal
method any combination of the four parameters of a PF can be included in the adaptive Psimethod procedure. Importantly, for
each of the PF's four parameters you can specify whether it should be treated as a parameter of primary interest whose estimation
should be optimized, as a nuisance parameter whose estimation should be subservient to the estimation of the parameters of
primary interest, or as a fixed parameter. We've updated PAL_AMPM_Demo in order to demonstrate things. Note that any code
you wrote for earlier versions of Palamedes that calls on any of the PAL_AMPM routines will still do exactly what it did before
(with possibly one minor exception). For a lot more information on the Psimarginal method see Prins (2013; www.journalofvision.org/content/13/7/3.abstract).
 Also new in the Psi method: You can now constrain the guess and the lapse rate to be equal and estimate a single,
shared value. This would be appropriate in, say, a vernier acuity task in which the lower and the upper asymptote not equaling
0 or 1 would be due to attentional lapses.
 We added the Quick and logQuick PFs. These are like the Weibull and Gumbel
('logWeibull') functions respectively, except that an exponent of 2 is used instead of the natural exponent. Performance
at x = alpha will be halfway between lower and upper asymptote (this is not the case for the Weibull and Gumbel). Type help
PAL_Quick or help PAL_logQuick for more information.
 For other minor changes, see history.m
June 10, 2012  Posted Version 1.5.0: The Psi+ method is here. You can now place stimuli using the psi method
to optimize estimation of lapse rate and/or guess rate as well as threshold and slope. Added an FAQ that addresses whether
you should or not. Wrote a new PAL_AMPM_Demo that demonstrates the Psi+ method (or the regular Psi method).
 Note
that PM.pdf now varies alpha values across the first dimension (rows) of a 2D PM.pdf and beta values across the second dimension
(columns). This was vice versa in earlier versions. This change will affect behavior of scripts writen for older version of
Palamedes ONLY in case (1) the script supplied a prior to PAL_AMPM_setupPM instead of using the default uniform prior or (2)
if script performed operation on PM.pdf (e.g., plotted PM.pdf using, for example, 'surf' or 'image'). To make scripts written
for previous versions compatible with Palamedes 1.5.0, simply transpose a usersupplied prior (i.e., prior = prior';) and/or
transpose PM.pdf in the plot command[e.g., surf(PM.pdf') instead of surf(PM.pdf)]. A bit more information can be found here.
March 29, 2012  Posted Version 1.4.4: minor bug fixes. See history.m. Will no longer report every minor
bug fix here. Keep eye on version number posted on homepage instead.
March 19, 2012  Posted Version 1.4.3. undoes an unintended change introduced in 1.4.2. See history.m
March 17, 2012  Posted Version 1.4.2: minor bug fix. See history.m.
February 18, 2012  Posted version 1.4.1: minor bug fix. See history.m.
February 15, 2012  Posted version 1.4.0
 Palamedes is now compatible with GNU Octave! (http://www.gnu.org/software/octave/).
Please let us know if you come across any remaining incompatibilities.
 Palamedes proper (i.e., files in Palamedes
folder) is fully compatible with Octave.
 Some figures created by the demo programs in the PalamedesDemos folder do
not render properly under Octave, however.
 NelderMead Simplex search now performed by Palamedes (using
lower default tolerance values, i.e., higher default precision).
 Guess rate can now be constrained to lie within userdefined
interval when fitting PFs (same was already true of lapse rate).
 PAL_inverseLogistic, PAL_inverseWeibull, PAL_inverseHyperbolicSecant,
PAL_inverseGumbel, PAL_inverseCumulativeNormal are no longer functional. Instead of, say, x = PAL_inverseLogistic(params,
y), use x = PAL_Logistic(params, x, 'inverse').
 We have created a 'Demos figure gallery' page on the Palamedes
website.
September 25, 2011  Posted Version 1.3.1. Minor upgrade: changed the manner in which some warnings are issued.
September 19, 2011  Palamedes version 1.3.0 is here
 Version 1.3.0 allows alternative schemes to incorporate
lapses into psychometric function models. Alternative fitting schemes may be performed using the optional argument 'lapseFit'
(all functions that involve PF fits accept it). The default value is 'nAPLE' ('nonAsymptotic Performance Lapse Estimation'),
which is the method advocated by Wichmann & Hill (2001a). If during testing a stimulus level is used which is so high
that it can be assumed that errors observed at this asymptotic intensity can only be due to a lapse, consider using 'jAPLE'
('joint APLE'), which is identical to 'nAPLE' except that the probability correct at the highest intensity level used will
be modeled as 1  lambda (i.e., errors observed there are assumed to be due only to lapse). A third option is 'iAPLE' ('isolated
APLE'), in which the probability correct at the highest stimulus level will be modeled as 1  lambda. Observations at other
stimulus intensities will then be modeled by fitting a PF with threshold and slope parameters free to vary (if so desired),
while the lapse rate is fixed at the value obtained earlier at the highest stimulus intensity. For more information go here.
 Version 1.3.0 allows one to constrain the guess rate and the lapse rate to be equal, as would be appropriate in,
say, a task involving bistable percepts. Use optional argument 'gammaEQlambda', followed by 1, [or logical(true)], to set
this constraint (accepted by all functions that involve fitting PFs). Lapse rates can still beconstrained in a variety of
ways and guess rates will follow suit.
 Some other, very minor, changes were made. See History.m for the boring details.
 Overall,
this was quite an extensive upgrade. Despite elaborate testing, bugs may remain. Please help us find any bugs by submitting
bug reports.
 The new features of version 1.3.0 are demonstrated in PAL_PFML_LapseFit_Demo and PAL_PFML_gammaEQlambda_Demo
in the PalamedesDemos folder.
 Added a few new FAQs
March 23, 2011
October 31, 2010
November 23, 2009  Palamedes version 1.1.0 is here
 Version 1.1.0 introduces custom reparametrization of the parameters of PFs in multicondition fitting situations. See our overview page, PAL_PFLR_CustomDefine_Demo in the
PalamedesDemos folder, or type 'help PAL_PFML_CustomDefine' for more information. This was quite a substantive overhaul of
many functions (including PAL_PFML_FitMultiple, PAL_PFML_BootstrapParametricMultiple, PAL_PFML_BootstrapNonParametricMultiple,
PAL_PFML_GoodnessOfFitMultiple, PAL_PFLR_ModelComparison, as well as many 'behindthescenes' functions). Though we spent
quite a bit of time testing, bugs might remain and we would appreciate any bug reports. Of course, all previous functionality
has been retained (whatever worked with previous versions of Palamedes, will still work).
 PAL_PFML_FitMultiple can
now return the number of free parameters in the model fitted.
 Added a function PAL_PFML_LLsaturated which returns
the Log Likelihood of the saturated model as well as the number of parameter estimates in the saturated model.
 Some
additional minor changes were made (see history.m for the details).
 Added a few Q and As on our frequently asked questions page.
 We are already working on Palamedes version 1.2.0 which will introduce more Signal Detection routines.
October 27, 2009  Palamedes version 1.1.0 coming soon.
 New feature: custom reparametrization of PF
parameters across mutiple conditions. For example:
 Need to fix the threshold values values in conditions 1, 3, and
6 to equal 1, 2, and pi respectively but have thresholds in conditions 2, 4, 5, and 7 adhere to 'threshold(condition) = a
x sin(b x condition^2) where 'a' and 'b' are free parameters? We understand.
 Wish to compare the model above to an
identical one except that parameter 'a' is fixed to equal sqrt(3)? Absolutely.
 Wish to apply another set of unlikely
constraints on slopes, guess rates, and/or lapse rates? No problem.
 For just one example of what you will be able
to do, click here.
October 1, 2009  Posted version 1.0.2 . Very minor changes only:
 Suppressed a few inconsequential
Matlabgenerated warnings
 Corrected some filenames in help comments
 For details, view history.m in Palamedes
folder
September 17, 2009  Posted version 1.0.1. Very minor changes only:
 Added a demo script: PAL_SDT_DPtoPCacrossM_demo
 Other
Demo scripts no longer hijack figures that happen to be open
 Some SDT routines now go easier on RAM
 Added
warning message in PAL_PFML_BootstrapNonParametricMultiple
 Modified warning message in PAL_PFML_BootstrapNonParametric
 Added
file History.m which records changes across versions
 Download page contains links to two zip archives
 Full Palamedes version 1.0.1
 Upgraded files only (replace existing files with downloaded files)
September 15, 2009:  Over 200 downloads since our launch on September 13, 2009
 Changed file names of some
pages (update your bookmarks).
 Palamedes version 1.0.1 is coming soon. It will add an SDT Demo script and fix some
minor issues of a cosmetic nature in some of the other Demo scripts.
