HomeOverviewDownload PalamedesSupporting documentationFrequently asked questionsSubmit comments and questionsSubmit a bug reportNews and updates (last update: June 22, 2016Why "Palamedes"?About usOptions besides PalamedesDemos figure galleryModel Comparison ExamplesConfused about Weibull?Failed Fits?

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.

June 22, 2016

  • Posted Palamedes version 1.8.2
  • Added 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.
  • 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 made-up 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 soon-to-be-released 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 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 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 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 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 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 (version 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 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 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 above].
    • 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.
    • New 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).
    • Note 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 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' ('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.
    • 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
  • Palamedes version 1.2.0 is here

    • Most important change is that functions that fit single Psychometric Functions using a Maximum Likelihood criterion (i.e.., PAL_PFML_Fit, PAL_PFML_BootstrapParametric, PAL_PFML_BootstrapNonParametric, PAL_PFML_GoodnessOfFit) now accept a 0D, 1D, 2D, 3D or 4D (!) parameter grid through which to perform a brute force search for initial guesses to use in the iterative Simplex search procedure. The old method of providing a vector containing one initial guessed value for each of the parameters still works but when you do this, you will be encouraged to look into using the new method and warned that in some non-specified time in the future the old method will disappear from Palamedes. Confused? Not to worry. PAL_PFML_Demo has been changed to make use of this new feature and we created a new demo (PAL_PFML_SearchGrid_Demo) that specifically demonstrates use of the new feature.

    • Also, psychometric functions, inverse psychometric functions, and first derivatives (dy/dx) of psychometric functions  are now all incorporated in the existing functions PAL_CumulativeNormal, PAL_Weibull, PAL_Gumbel, PAL_HyperbolicSecant, and PAL_Logistic. For example, to get the value at which the logistic with alpha = 0, beta =1, gamma = 0.5, and lambda = .03 evaluates to .8 use: x = PAL_Logistic([0 1 .5 .03],.8,’inverse’), to find the slope of the tangent line to the above function at x = 0, use: tangentslope = PAL_Logistic([0 1 .5 .03],0,’derivative’). The older inverse PF functions (e.g., PAL_inverseLogistic) still exist but are now obsolete and when you use them, you will be encouraged to use the above strategy instead and warned that at some non-specified time in the future these functions will disappear from Palamedes.

    • Some other minor changes were made (see history.m for details).

October 31, 2010
  • Posted Palamedes version 1.1.1. Very minor changes only. See PAL_History for details.

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.
    • 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 Matlab-generated 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.