Psignifit is a toolbox that allows the user to fit psychometric functions and to test hypotheses about psychometric data. Compared to the “classical” version of Psignifit, the new package comes with a number of additional features:
- full Bayesian treatment of psychometric functions including Bayesian model selection and goodness of fit assessment
- identification of influential observations
- detection of outliers (potentially to be excluded)
- new philosophy of defining the shape of the psychometric function allowing for considerably more flexibility in specifiing psychometric function models.
The preferred interface for Psignifit 3.0 is now Python, but Matlab is also supported. In contrast to Matlab, Python is a complete programming language that supports virtually all features you might wish for. Python allows you to perform numerical computations as flexible and fast as in Matlab. In addition, Python provides features like object oriented programming and simple creation of graphical user interfaces. Python is easy to learn: even users with no prior programming experience can master Python within weeks. Finally Python is free to use because of its OSI-approved open source license.
However, even though Python is similar to Matlab, it is not the same. Therefore, we also plan to provide a Matlab version of Psignifit 3.0 with the first official release. However, we will not guarantee support for this toolbox in future releases and we encourage users to use the Python version as this will be up to date.
We also noted that a growing number of statistical toolboxes are designed for the statistics environment R and there might be users that are interested in using a R version of Psignifit. Similar to the Matlab interface, we provide a basic R version of Psignifit 3.0. Again, we do not guarantee support for this R library. A very rudimentary R library can be found in the folder ‘rpsignifit’. Be warned that this is work in progress.
We would be glad to find developers that are interested in supporting these non-Python interfaces to the Psignifit engine.
Important
Psignifit3 is beta software. This means that it is still under heavy development. Occasionally it might not work as expected. This might have two reasons: either, the documentation was ambiguous, or you have discovered a programming error (bug). In any case, you would help us a lot if you write an email to our mailing list (see below) or personally to us. Typically we can solve your problem within hours.
To contact the authors and current maintainers please use:
This list can be used to ask questions about usage and installation, report bugs, and request new features. If you use Psignifit on a regular basis we recommend you subscribe to this list.
Note
Non-member postings are allowed so you do not need to subscribe to the list, to post to it. However, we recommend you mention that you are not subscribed, so that we don’t forget to include you in our reply.
Discussions about development and Psignifit internals happen on:
Subscribe here if you plan to contribute or simply want to follow development.
Authors & Contributors
The Psignifit3 core development team currently consists of:
We are very grateful to the following people, who have contributed to Psignifit3:
Commands to be entered into the shell prompt (e.g. bash) are prefixed with the $ character, for example:
$ make install
Commands to be entered into the python interpreter (e.g. ipython) will be prefixed with the >>> characters, for example:
>>> import pypsignifit
The following sections detail the installation instructions for the Python version of Psignifit (python-psignifit) and the Command Line Interface (cli):
If you wish to use the Matlab version of Psignifit (mpsignifit), first follow the appropriate installation instructions above to install the Command Line Interface. And then see Psignifit for Matlab users. The Command Line Interface is required for the Matlab version of Psignifit.
Installation instructions for the R version of Psignifit (rpsignifit) are going to follow as soon as this toolboxes is ready for use.
For additional information about the structure of the code, the build system, version control and an extended list of dependencies see: Contributing to Psignifit 3.0.
The following reference currently (Jul 2011) provides the most detail on the implementation of Psignifit3:
Fründ, I, Haenel, NV, Wichmann, FA. Inference for psychometric functions in the presence of nonstationary behavior. Journal of Vision 2011
It is available directly from Journal of Vision: http://www.journalofvision.org/content/11/6/16
Bibtext entry:
@Article{FrundJOV2011,
author = "Fr{\"u}nd, I and Haenel, N V and Wichmann, F A",
title = {Inference for psychometric functions in the presence of
nonstationary behavior},
abstract = {Measuring sensitivity is at the heart of psychophysics.
Often, sensitivity is derived from estimates of the psychometric
function. This function relates response probability to stimulus
intensity. In estimating these response probabilities, most studies
assume stationary observers: Responses are expected to be dependent only
on the intensity of a presented stimulus and not on other factors such
as stimulus sequence, duration of the experiment, or the responses on
previous trials. Unfortunately, a number of factors such as learning,
fatigue, or fluctuations in attention and motivation will typically
result in violations of this assumption. The severity of these
violations is yet unknown. We use Monte Carlo simulations to show that
violations of these assumptions can result in underestimation of
confidence intervals for parameters of the psychometric function. Even
worse, collecting more trials does not eliminate this misestimation of
confidence intervals. We present a simple adjustment of the confidence
intervals that corrects for the underestimation almost independently of
the number of trials and the particular type of violation.},
journal = "Journal of Vision",
year = "2011",
volume = "11",
number = "6",
pages = "",
month = "May",
pmid = "21606382",
url = "http://www.journalofvision.org/content/11/6/16"
doi = "10.1167/11.6.16"
}