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.
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 Model-Comparison 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
a minimal-code, no-frills demo of the basic psi-method (PAL_AMPM_Basic_Demo). Start with PAL_AMPM_Basic_Demo if you'd like
to use the psi-method but are new to Matlab, Palamedes, or the psi-method. If you'd like to do something fancier (deal with
nuisance parameters, use a custom, non-uniform prior, or something else) check PAL_AMPM_Demo.
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 made-up rules).
December 2, 2015
- Posted version 1.8.1
PAL_PFBA_Fit. Any combination of the four parameters of a PF can now be free parameters.
DEMO file: PAL_PFLR_LearningCurve_Demo
- All code now compatible with examples and such in the soon-to-be-released 2nd Edition of Psychophysics:
A Practical Introduction
- Minor updates and bug fixes.
- See History.m
February 19th, 2015
- Posted version 1.8.0
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 non-operational
- PAL_SDT_MAFCoddity_PCtoDP now non-operational
- The new SDT routines are:
- PAL_SDT_2AFC_DPtoPC converts d-prime
(DP) to proportion correct (PC) for a 2AFC task.
- PAL_SDT_2AFC_PCtoDP converts proportion correct (PC) to d-prime (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 maximum-likelihood 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 goodness-of-fit 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
- 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
- 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 goodness-of-fit for
the multiple-fit summation psychometric functions
- PAL_SDT_PSvAS_3PFmultipleFit_Demo. Script demonstrates the usage of the multiple-fit 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 multiple-fit 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
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 goodness-of-fit 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 18.104.22.168 (version 22.214.171.124 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 Signal-Detection-Theory, 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 forced-choice 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 'Weibull-family'
(i.e., Weibull, Gumbel, Quick, and logQuick) relate to each other: www.palamedestoolbox.org/weibullandfriends.html.
- Posted Palamedes version 126.96.36.199 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 188.8.131.5204 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 (non-log-transformed) in which x = 0 signifies an absence of signal, PAL_Gumbel and
PAL_logQuick, respectively, are their counterparts which expect log-transformed 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
- Minor maintenance. See History.m for detail.
February 17, 2014
- Posted version 1.6.2
- Improved on PAL_Contrasts: Returns integer-valued 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 single-interval rating scale data are here! PAL_SDT_ROCML_Fit fits the ROC curves
using maximum likelihood to obtain estimates of d’ (d-prime) and the ratio of standard deviations (SD ratio)
of the two underlying distributions (e.g. noise and signal-plus-noise). PAL_SDT_BootstrapParametric
provides estimates of the errors on the two output parameters, while PAL_SDT_ROCML_GoodnessOfFit measures the curve’s
goodness-of-fit. 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.
SDT routines are also provided for Oddity tasks under the Independent Observation model. For the 3AFC (three-alternative-forced-choice)
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 'Psi-marginal' method. In the Psi-marginal
method any combination of the four parameters of a PF can be included in the adaptive Psi-method 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 Psi-marginal 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
('log-Weibull') 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).
that PM.pdf now varies alpha values across the first dimension (rows) of a 2-D 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 user-supplied 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.
- Nelder-Mead 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 user-defined
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
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' ('non-Asymptotic 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.
this was quite an extensive upgrade. Despite elaborate testing, bugs may remain. Please help us find any bugs by submitting
- 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 multi-condition 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 'behind-the-scenes' 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.
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
- Corrected some filenames in help comments
- For details, view history.m in Palamedes
September 17, 2009
- Posted version 1.0.1. Very minor changes only:
- Added a demo script: PAL_SDT_DPtoPCacrossM_demo
Demo scripts no longer hijack figures that happen to be open
- Some SDT routines now go easier on RAM
warning message in PAL_PFML_BootstrapNonParametricMultiple
- Modified warning message in PAL_PFML_BootstrapNonParametric
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.