Home¶

Kriterion is a Python library for analysing data using signal detection theory.
Key features:
- Compute sensitivity and bias measures: \(d'\), \(c\) and more
- Fit detection models to ROC data
- Assess model fits
Installation¶
It is recommend to use a virtual environment when installing python packages (see here). Then:
Dependencies¶
- NumPy
- SciPy
Usage¶
Example 1: Basic signal detection theory measures¶
With a single true positive and false positive rate, return all common detection measures:
from kriterion.measures import compute_performance
result = compute_performance(tpr=0.75, fpr=0.21)
print(result)
Out
Performance(
tpr=0.75,
fpr=0.21,
d_prime=1.480910997214322,
a_prime=0.850886075949367,
c_bias=0.06596574841107933,
beta=1.1026202605581668,
a_z=None
)
Example 2: Receiver operating characteristic (ROC) modelling¶
Given a set of rating-scale responses to signal and noise trials:
from kriterion.data import ROCData
from kriterion.fit import fit
from kriterion.models import UnequalSignalDetection
data = ROCData(
# Strongest "signal" <---> Strongest "noise"
# All responses to signal-present trials
signal=[505, 248, 226, 172, 144, 93],
# All responses to signal-absent (i.e. noise) trials
noise=[115, 185, 304, 523, 551, 397],
)
uvsdt = UnequalSignalDetection(data)
result = fit(uvsdt)
Out
print(uvsdt.parameters)
{
'd': 1.1830254066861041,
'signal_sd': 1.337287925732202,
'c0': 1.0405303717702958,
'c1': 0.46634923592441596,
'c2': -0.06932116955166004,
'c3': -0.6973808897916125,
'c4': -1.4561271120010804
}
print(result)
ModelSummary(
dof=3,
chi2=9.183606301259807,
chi2_p=0.02694676677704899,
g2=9.305614752213955,
g2_p=0.02549179488508846,
log_likelihood=-5761.067476662813,
aic=11536.134953325625,
bic=11579.184187136441,
sse=0.0004422615018773785
)

License¶
This project is licensed under the terms of the GPL-3.0 license.