Skip to content

Instantly share code, notes, and snippets.

@mwaskom
Last active June 11, 2024 15:48
Show Gist options
  • Save mwaskom/39e43ac049fd26679bae to your computer and use it in GitHub Desktop.
Save mwaskom/39e43ac049fd26679bae to your computer and use it in GitHub Desktop.
Translation of Justin Gardner's Signal Detection Theory tutorial from MATLAB into Python
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Signal detection simulation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Translation of Justin's [Signal Detection Tutorial](http://gru.stanford.edu/doku.php/tutorials/sdt) from MATLAB to Python.\n",
"\n",
"We're going to simulate a signal detection experiment and an “ideal observer” (an observer who behaves exactly according to signal detection theory). This is always a useful thing to do when trying to understand a decision model, experimental method or an analysis tool. You get to control and play around with the simulation to see what effect it has on the analysis that comes out.\n",
"\n",
"\n",
"On each trial, our observer sees an element sampled from either the signal present gaussian distribution or the signal absent distribution, which is also gaussian with the same standard deviation. The observer chooses to say “signal present” when the signal they see on that trial is above criterion and “signal absent” otherwise. The picture you \n",
"should have in your head is this:\n",
"\n",
"<img src=http://gru.stanford.edu/lib/exe/fetch.php/tutorials/nobias.png?w=&h=&cache=cache>\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import numpy as np\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Make `signal_present` array"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So, here goes. First let's make a sequence of n = 1000 trials in which 50% randomly are going to have “signal” and 50% are randomly going to have no signal. To do that we want to create an array called `signal_present` that is True 50% of the time and False 50% of the time."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"signal_present = np.random.rand(1000) > .5"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can make a heatmap to show the binary values:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10518e190>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.heatmap(signal_present.reshape(25, 40), linewidths=0, xticklabels=False, yticklabels=False);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Make signal array "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ok, now we want to simulate the **signal** that the observer actually gets to base the decision on. Remember that in applying signal detection to cognitive neuroscience you should be thinking of the signal as a neuron or population of neurons response and that the magnitude of this response (e.g. spikes per second) is monotonically related to the actual signal strength. The signal is corrupted by random noise. In particular, signal trials should come from some gaussian distribution and noise trials should come from another gaussian distribution that differ only in the means. This is an assumption about the process that is termed $iid$ - the signal and noise come from independent identical distributions.\n",
"\n",
"Ok, let's make a new array from our `signal_present` array such that on signal present trials (i.e. when `signal_present == 1`), values are picked from a gaussian distribution with standard deviation of 1 who's mean is 1 and on signal absent trials (i.e. when `signal_present == 0`), values are picked from a gaussian distribution with standard deviation of 1 (that's the identical part of the $iid$ assumption) but who's mean is 0."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"signal = np.random.normal(0, 1, size=signal_present.size)\n",
"signal[signal_present] = np.random.normal(1, 1, size=signal_present.sum())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can look at a heatmap of the signal values:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n9EQzGx4EwcytPz8zCIKTzSzPOTc+CIJxZjbVtrztNcE5t7IhD8JmBgCwZCPtZs65lJld8J1fXrzN\n9clmNnlHH4fNDABgjXcw2zm4mxEA4D1OZgAAS3p+NIukQl4n/WxVmfzwnuiwt3yQ36+cHnp9U0z/\ns4Lm6z6VzeJb/iCb3FbhcyLNzNqc9WvZpDatkc3aTkNlUxTRsxnH/muJbB4Z3UE2Ly2Py2bU8n/J\n5sW2o2VzXMfwuYqxTSvkGpuadZNNwfrFsln37ATZFA0bKZvPWuv5l92zKmQTq1gvG4vX6aaqTCZ1\nnQbKJm2jnsG64KKLZdPj16eGXn8870C5xpnF9Zg3WTJPNsv7niCbDgn9ZzjxyTuySZbq38/oKP13\nSiSVlE1mbn6j3XK4aXNlg7ezgrycRnte9cXJDADg/cmMzQwA4P0NIGxmAADvT2bczQgA8B4nMwCA\nhd0M6AM2MwCA6Xspf9rYzAAAjTmbcadgMwMAeH8DCJsZAMD798y4mxEA4D1OZgAA728ACZ3NuOjs\nY+S5M/aHx+WD5GWEHwAnuXVyjVN6F8um9qHfySb7rBtlk77gNdlUL/y3fqzeg2QTKdAfV6JZe9mk\nrS2RzVupLrIZsmSSbNK76Xmcn+d0Db3eOX2zXCM5W3+Lo1hRK9lE0jJkY8V6tmWioJ1sSuP6xY6q\nuH45JzNNj7prXvmNbBb/7zjZdP/9dbIpnfq8bJoMHR56vWbhXLlGctRFsvnsuFGy6TXxFdksK6uV\nTadc/Xu1OZUum1g9Jhdmvfuobo64oNFmIC5dv7nBrzN2KMpjNiMAYNdrrG/OubOwmQEAmM0IAPCf\n77fmczcjAMB7nMwAAEwAAQD4L+n5u2ZsZgAATmYAAP/5fgMImxkAwPuTGXczAgC8x8kMAMANIAAA\n//n+MmPooOFkyfvyw0uWb5IPEs0vCL3ubv6DXCPn9qdks+Sw8EGnZmaDJz8hm0i8WjbJ5Yv0Ol0H\nyKY8q7ls8itWyuaF1VmyGfnBvbLJO+pM2SyOtJRNt+XvhF6PNS2SazxToYf/Htddr7O6MiGbG17/\nXDabKvVg2vuO7yWbBWsrZTNo3sOyydxrP9ls7jBQNhlvjpdN+YFnyeaJT1aFXh8z729yjfye+vNX\n+bmTzeSBF8rmJD2/21ZYU9nE/nyxbFoOO0A2iY1rZZNz4pWNNtD3oxWbGryd9WtbwKBhAMCul/D8\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10518ed50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.heatmap(signal.reshape(25, 40), linewidths=0, xticklabels=False, yticklabels=False);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is somewhat helpful, but it doesn't really show us the distribution of values. To do that, let's make a histogram and density plot."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x115fcc190>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.distplot(signal);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"That's weird, it only has one peak, centered roughly around 0.5. Why? Shouldn't we have one peak at 0 and one peak at 1 for the signal present and absent trials? Yeah, but because they are so close together you can't really see them. You can see them separately if you display the histogram for just the signal present or just the signal absent trials."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nP4I3GlrSfu1UAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x116eeb850>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.distplot(signal[signal_present], color=\".2\", label=\"Signal present\")\n",
"sns.distplot(signal[~signal_present], color=\"darkred\", label=\"Signal absent\")\n",
"plt.legend();"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now confirm numerically that the means and standard deviations are what they should be:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Signal present mean: 1.00\n",
"Signal absent mean: -0.10\n"
]
}
],
"source": [
"print(\"Signal present mean: {:.2f}\".format(signal[signal_present].mean()))\n",
"print(\"Signal absent mean: {:.2f}\".format(signal[~signal_present].mean()))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ok, we're good to go. We have created the stimulus that our ideal observer will get to see (`signal`) and we know which of the trials come from the signal and which from the absent distributions (`signal_present`)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Make ideal observer responses"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we are going to simulate an *ideal observer* which will behave just as signal detection says. They will choose signal present (response = 1) when the signal they get to see (signal array from above) is greater than their internal criterion and they will choose signal absent (response = 0) when the signal is below their internal criterion.\n",
"\n",
"Let's start by making the criterion right in between the signal present and absent distributions that we created above. That is, let's set criterion to 0.5 and make an array of responses:"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"response = signal > .5"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's make a heatmap like before"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nUIagBUAZ/w/g76lOJJTgqAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x116e98e50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.heatmap(response.reshape(25, 40), linewidths=0, xticklabels=False, yticklabels=False);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Again, not too informative, but it would help us catch strange cases like response always being `True`, which might indicate a problem in the code."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Calculate hits, misses, correct-rejects and false-alarms"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ok, so now we have our experiment (`signal_present`) a simulation of the signal it generates in the observer (`signal`) and the ideal observers responses (`response`).\n",
"\n",
"From these you should be able to calculate hits, misses, correct rejects and false alarms.\n"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"hit = response[signal_present]\n",
"miss = ~response[signal_present]\n",
"fa = response[~signal_present]\n",
"cr = ~response[~signal_present]"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hit rate: 0.71\n",
"Miss rate: 0.29\n",
"False alarm rate: 0.27\n",
"Correct rejection rate: 0.73\n"
]
}
],
"source": [
"print(\"Hit rate: {:.2f}\".format(hit.mean()))\n",
"print(\"Miss rate: {:.2f}\".format(miss.mean()))\n",
"print(\"False alarm rate: {:.2f}\".format(fa.mean()))\n",
"print(\"Correct rejection rate: {:.2f}\".format(cr.mean()))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Calculate $d'$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now let's calculate $d'$. But, first a pop quiz: what should $d'$ be given how we made the signal and noise distributions?\n",
"\n",
"Answer: (mean of signal - mean of noise) / standard deviation = (1 - 0) / 1 = 1\n",
"\n",
"The picture you should have is:\n",
"\n",
"<img src=http://gru.stanford.edu/lib/exe/fetch.php/tutorials/neuraldprime.png>\n",
"\n",
"Ok, now we know what it should be, we're ready for pop quiz 2: what's the formula for computing $d'$ from behavioral data?\n",
"\n",
"$$d' = z(\\textrm{hits}) - z(\\textrm{false alarms})$$\n",
"\n",
"So, how do we calculate those $z$'s?\n",
"\n",
"$z$ means the distance in units of standard deviation from the center of a gaussian distribution such that the area under the curve to the right of that is the proportion hits or false alarms that we measured in the experiment. By convention, center of the distribution is 0, and criterion to the left are positive. The picture you should have for example if $z$ is 1 (giving an area under the curve to the right of that of 0.84 is):\n",
"\n",
"<img src=http://gru.stanford.edu/lib/exe/fetch.php/tutorials/zof1.png>\n",
"\n",
"To get this area you can use the `stats.norm.ppf()` function which gives the inverse of the cumulative density function. It's the cumulative density function since you are interested in the area under the gaussian probability density function, and its the inverse since you are going from the area, back to the $z$ (units of std of the gaussian)."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"d prime: 1.16\n"
]
}
],
"source": [
"from scipy import stats\n",
"dprime = stats.norm.ppf(hit.mean()) - stats.norm.ppf(fa.mean())\n",
"print(\"d prime: {:.2f}\".format(dprime))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"How close is the dPrime you got to the expected value? Why is it different?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Different criterion\n",
"\n",
"Now let's simulate an observer that doesn't want to miss as much and see if we get a similar $d'$ from the data."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"response = signal > .2"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"d prime: 1.15\n"
]
}
],
"source": [
"hit = response[signal_present]\n",
"fa = response[~signal_present]\n",
"dprime = stats.norm.ppf(hit.mean()) - stats.norm.ppf(fa.mean())\n",
"print(\"d prime: {:.2f}\".format(dprime))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ROC calculation\n",
"\n",
"Now, let's make an ROC curve. This assumes that we have some examples of samples from the signal and noise distributions. In the Newsome experiments these are the values of the spike counts for the neurons preferred direction (signal) and the neurons anti-preferred direction (noise, what they called the anti-neuron). Will just do it by pulling actual values from a signal distribution that is gaussian with mean of 1 and standard deviation of 1, just like we did above. For the noise, let's do mean of 0 and standard deviation of 1. Make two arrays of length n = 1000, one for signal and noise using the techniques from above:"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"n = 1000\n",
"signal = np.random.normal(1, 1, n)\n",
"noise = np.random.normal(0, 1, n)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Check that the procedure worked by computing the means and standard deviations of signal and noise and making sure that they are what you expected (always good to double check everything when programming to make sure that things are working out the way you expected)."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Signal mean +/- std: 0.98 (0.97)\n",
"Noise mean +/- std: -0.04 (1.01)\n"
]
}
],
"source": [
"print(\"Signal mean +/- std: {:.2f} ({:.2f})\".format(signal.mean(), signal.std()))\n",
"print(\"Noise mean +/- std: {:.2f} ({:.2f})\".format(noise.mean(), noise.std()))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It's also helpful to make plots like we did above:"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x1160c4d90>"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nhv4/z6Fproe9G2kAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x116f15590>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.distplot(signal, color=\".2\", label=\"Signal\")\n",
"sns.distplot(noise, color=\"darkred\", label=\"Noise\")\n",
"plt.legend()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ok, how do we compute the ROC curve? What's on those two axes. Remember?\n",
"\n",
"<img src=http://gru.stanford.edu/lib/exe/fetch.php/tutorials/basicroc.png>\n",
"\n",
"Ok, so that is computed for various criterions, right? So, if you think you know how, try to compute a curve from the signal and noise distributions.\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"criterions = np.linspace(10, -10, 100)\n",
"hit_rates = [(signal > c).mean() for c in criterions]\n",
"fa_rates = [(noise > c).mean() for c in criterions]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ok, now plot it:"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x115f37d90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"f, ax = plt.subplots(figsize=(6, 6))\n",
"ax.plot(fa_rates, hit_rates)\n",
"ax.plot([0, 1], [0, 1], ls=\"--\", c=\".5\")\n",
"ax.set(xlabel=\"FA Rate\", ylabel=\"Hit Rate\");"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And, remember that the area under the ROC is performance on a two alternative forced choice task (2AFC). So, calculate the area under the curve and see what you get."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Area under ROC curve: 0.76\n"
]
}
],
"source": [
"from scipy.integrate import trapz\n",
"auc = trapz(hit_rates, fa_rates)\n",
"print(\"Area under ROC curve: {:.2f}\".format(auc))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"What did you get? Is it right? Well, one way to check is to see if a simulation of 2AFC will give you the same (or numerically similar) values. The experimental logic says that if signal is greater than noise then the ideal observer will get the 2AFC right, otherwise the observer will choose the noise interval and get it wrong. So, that's pretty easy to simulate. Try it!"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2AFC performance: 0.75\n"
]
}
],
"source": [
"afc_perf = (signal > noise).mean()\n",
"print(\"2AFC performance: {:.2f}\".format(afc_perf))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.9"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment