zeta-test statistical testing package

Parameter-free statistical testing package with one-sample and two-sample tests for point event data and (auto-correlated) time-series data
Updated 18 Jan 2024

The ZETA-test repository

Repository containing ZETA-test functions and dependencies. For an example of how to use the code, check runExampleZETA.m in the /example/ subfolder. Your output should look like the images in the same directory.

Our pre-print describing data-stitching, the time-series ZETA-test, and the two-sample tests is now online: https://www.biorxiv.org/content/10.1101/2023.10.30.564780v1

The article describing the original ZETA-test has been published in eLife: https://elifesciences.org/articles/71969

If you're looking for the original ZETA repository, you can find it here: https://github.com/JorritMontijn/ZETA

The ZETA-test for spiking data has been extensively tested on real and artificial data, and has been peer-reviewed. The time-series ZETA-test and two-sample ZETA-tests are also thoroughly tested and are described in our pre-print, which we will submit for peer-review soon. We are confident all ZETA-tests, including the two-sample tests, are reliable and statistically sound, but if you find any bugs, do let us know on the Issues page!

More information on these tests can be found in runExampleZETA.m and the help comments of the respective functions.

This repository contains five main functions:

  1. zetatest.m: Calculates the Zenith of Event-based Time-locked Anomalies (ZETA) for spike times of a single neuron. Outputs a p-value.
  2. zetatstest.m: Calculates the time-series version of ZETA, for data such as calcium imaging or EEG recordings.
  3. zetatest2.m: Same as (1), but for testing whether two neurons respond differently to the same stimulus; or whether one neuron responds differently to two sets of stimuli.
  4. zetatstest2.m: Same as (2), but for testing differences between two time-series data arrays.
  5. getIFR.m: Calculates the instantaneous firing rate (IFR) without running the ZETA-test. Use this as you would a PSTH function.

Rationale for ZETA

Neurophysiological studies depend on a reliable quantification of whether and when a neuron responds to stimulation, be it sensory, optogenetically or otherwise. However, current statistical analysis methods to determine a neuron’s responsiveness require arbitrary parameter choices, such as a binning size. This choice can change the results of the analysis, which invites bad statistical practice and reduces the replicability of analyses. Moreover, many methods, such as bin-wise t-tests, only detect classically mean-rate modulated cells. Especially with advent of techniques that yield increasingly large numbers of cells, such as Neuropixels recordings or two-photon calcium imaging, it is important to use tests for cell-inclusion that require no manual curation. Here, we present a new family of statistical tests for responses in point-event and time-series data for one- and two-sample comparisons: the family of ZETA-tests. As shown in our papers, they outperform approaches such as optimally-binned ANOVAs, t-tests and model-based approaches, in the sense that it includes more cells in real neurophysiological data at a similar false-positive rate.

Finally, ZETA’s timescale-, parameter- and binning-free nature allowed us to implement a ZETA-derived algorithm to calculate peak onset and offset latencies in neuronal spike trains with theoretically unlimited temporal resolution.

Please send any questions or comments to j.montijn at nin.knaw.nl.


The ZETA-test functions require the following Mathworks toolboxes to work:

  • Signal Processing Toolbox
  • Image Processing Toolbox
  • Statistics and Machine Learning Toolbox
  • (Optional: Parallel Computing Toolbox to reduce computation time)


Cite As

Heimel, J. Alexander, et al. A New Family of Statistical Tests for Responses in Point-Event and Time-Series Data for One- and Two-Sample Comparisons. Cold Spring Harbor Laboratory, Nov. 2023, doi:10.1101/2023.10.30.564780.

View more styles
MATLAB Release Compatibility
Created with R2019b
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes

See release notes for this release on GitHub: https://github.com/JorritMontijn/zetatest/releases/tag/v3.1.5

See release notes for this release on GitHub: https://github.com/JorritMontijn/zetatest/releases/tag/v3.1.4


See release notes for this release on GitHub: https://github.com/JorritMontijn/zetatest/releases/tag/v3.1.3
See release notes for this release on GitHub: https://github.com/JorritMontijn/zetatest/releases/tag/v3.1.3

See release notes for this release on GitHub: https://github.com/JorritMontijn/zetatest/releases/tag/v3.1.2

See release notes for this release on GitHub: https://github.com/JorritMontijn/zetatest/releases/tag/v3.1.1


See release notes for this release on GitHub: https://github.com/JorritMontijn/zetatest/releases/tag/v3.0.0

To view or report issues in this GitHub add-on, visit the GitHub Repository.
To view or report issues in this GitHub add-on, visit the GitHub Repository.