Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save pietromarchesi/fc752323f574708f6b1a69038d17f86f to your computer and use it in GitHub Desktop.
Save pietromarchesi/fc752323f574708f6b1a69038d17f86f to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"# LDA score and decoding accuracy across different dimensionalities"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"When analyzing neural data we are often interested in establishing contrasts between experimental conditions (i.e. seeing whether neural responses differentiate between stimulus A and stimulus B). A possible way to quantify this at the population level is by computing the LDA score (projecting the data to the one-dimensional space which achieves the highest separation between classes and then taking the difference between the centroids of the two classes). Moreover, we might want to determine whether information on a certain experimental parameter is encoded in the activity of the neurons (i.e. can be decoded from it). These two things are not unrelated, because if neural responses differentiate between conditions, then we have good reasons to suspect that a decoder will be able to learn this discrimination rule and correctly decode the variable of interest.\n",
"\n",
"Sometimes, it might be natural to want to use these measures to make comparisons between different recordings (in brain areas, or different animals). A problem might arise if the number of recorded neurons is different across areas/animals. Then, the difference that you see in LDA score or decoding performance might be confounded by the different dimensionality of the two datasets, and not truly reflective of information encoded in the neural response. "
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import sklearn.datasets\n",
"from sklearn.ensemble import RandomForestClassifier\n",
"from sklearn.linear_model import LogisticRegression\n",
"from sklearn.model_selection import cross_val_score\n",
"from p_utils import lda_score\n",
"import warnings\n",
"warnings.filterwarnings(\"ignore\", category=UserWarning)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Recording differently-sized subsets of a larger population"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To test the effect of dimensionality, we suppose that we are interested in a population of neurons, and that only a certain fraction of neurons in this population is actually responsive to the experimental parameter of interest (i.e. differentiates between two conditions of interest). During an experiment, we generally only have access to the activity of a small subset of all the neurons in the population. Here, we want to investigate what happens to the LDA score and decoding accuracy if we experimentally record subsamples of different sizes from the same population. \n",
"\n",
"In the code below, an artificial dataset is generated in which only part of the features (i.e. neurons) are informative, while the rest is uninformative noise. We then repeatedly draw samples of increasing size from this population, corresponding to the neurons that we have actually recorded, and compute LDA score and decoding performance on these data. "
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [],
"source": [
"n_dim = range(20, 300, 20)\n",
"n_iter = 100\n",
"rs = pd.DataFrame(columns=['n_dim', 'lda_score', 'dec_acc'])\n",
"\n",
"X, y = sklearn.datasets.make_classification(n_samples=500,\n",
" n_classes=2,\n",
" n_features=300,\n",
" n_informative=50,\n",
" n_redundant=0, \n",
" n_repeated=0,\n",
" shuffle=False,\n",
" random_state=None)\n",
"\n",
"for n in n_dim:\n",
" for i in range(n_iter):\n",
" sample = np.random.choice(range(X.shape[1]), replace=False, size=n)\n",
" X_sample = X[:, sample]\n",
" clf = LogisticRegression()\n",
" cvscore = cross_val_score(clf, X_sample, y, cv=3)\n",
" lda = lda_score(X_sample, y)\n",
" rs.loc[rs.shape[0] + 1] = [n, lda, cvscore.mean()]"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fbcdfac21d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# average the results and plot\n",
"lda = rs.groupby('n_dim').mean().lda_score\n",
"std_lda = rs.groupby('n_dim').std().lda_score\n",
"acc = rs.groupby('n_dim').mean().dec_acc\n",
"std_acc = rs.groupby('n_dim').std().dec_acc\n",
"\n",
"f, ax = plt.subplots(1, 2, figsize=[12, 6])\n",
"ax[0].errorbar(n_dim, lda, yerr=std_lda, fmt='-o')\n",
"ax[1].errorbar(n_dim, acc, yerr=std_acc, fmt='-o')\n",
"ax[0].set_xlabel('Dimensions')\n",
"ax[1].set_xlabel('Dimensions')\n",
"ax[0].set_title('LDA score')\n",
"ax[1].set_title('Cross-validated accuracy score')\n",
"for axis in ax:\n",
" axis.set_xticks(n_dim)\n",
" axis.set_xticklabels(n_dim)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is relatively unsuprising: if we have recorded more neurons from our population, there's also a higher chance that we have recorded more of the responsive ones, and so our decoder will have access to more information, and the LDA will be able to separate the two classes more effectively. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Using dimensionality reduction to equalize the dimensionality of the datasets"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It was recently suggested to me that we might be able to avoid the strong effect of dimensionality that emerges in the previous plots by applying PCA (or a dimensionality reduction method of choice) to the different datasets, in order to reduce them to the same dimensionality before computing the measures. After a quick check that four PCA components capture most of the variance in this dataset (not shown here) I try this potential solution:"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [],
"source": [
"n_dim = range(20, 300, 30)\n",
"n_iter = 500\n",
"rs = pd.DataFrame(columns=['n_dim', 'lda_score', 'dec_acc'])\n",
"\n",
"from sklearn.decomposition import PCA\n",
"\n",
"X, y = sklearn.datasets.make_classification(n_samples=1000,\n",
" n_classes=2,\n",
" n_features=300,\n",
" n_informative=50,\n",
" n_redundant=0,\n",
" n_repeated=0,\n",
" shuffle=False,\n",
" random_state=None)\n",
"\n",
"for n in n_dim:\n",
" for i in range(n_iter):\n",
" sample = np.random.choice(range(X.shape[1]), replace=False, size=n)\n",
" X_sample = X[:, sample]\n",
" # compute the PCA transform, keeping the first 4 components\n",
" pca = PCA(n_components=4)\n",
" X_sample = pca.fit_transform(X_sample)\n",
" clf = LogisticRegression()\n",
" cvscore = cross_val_score(clf, X_sample, y, cv=3)\n",
" lda = lda_score(X_sample, y)\n",
" rs.loc[rs.shape[0] + 1] = [n, lda, cvscore.mean()]"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nf37/+9+fd/2ZevfujTGG/fv3A/DZZ58xZswYAFasWOH43K9fP0drY02Sk5OprKxkyJAhANx0002O\nbT179mT9+vX4+vri4uJC3759azzXxo0bGTBgAFFRUQBMnjyZzz//HJvNxo4dOxy5hIeHM2DAgBrz\nmDp1Ki+++CIWiwV/f3+6du1KWloaFRUVJCYmMn78eABGjhzJf//731rXX0hVVZWjX7Srqytbtmyh\nT58+APTv399xfRs3bmTYsGH4+vri7u7OkiVLGDVqFOPGjWP16tXY7XYKCgrYs2cPI0aMOCuGh4cH\nFouFZcuWkZOTw5gxY7j33ns5duwY+fn5DBs2DIA77riD5557jrS0NHJychy/r3r16kVYWJijxdnT\n05NBgwZd8LuWi+fq7AREfiw9Pd3xC2bVqlVkZWU5bpjGGNzd3Zk9ezZubm5nHTdr1ixefvllHn74\nYSoqKpg+fTq33347+fn5+Pn5Ofbz8fEBTj829Pf3d6z39/cnNzf3rGWAoqIijDFMnjzZsa20tNRR\nmItIyxIQEEBmZuYF9zvz/nK++80//vEP/vGPfzBx4kTatWvHnDlzGDBgQI3rIyMjueuuu4DTBfBf\n/vIXRo0axbp164iIiGDXrl08++yzAHz44Yf8+9//pqSkBLvdft6+yoWFhfj6+taYe1lZGQsWLHB0\nxygsLHQ0EpypqKiIHTt2MHr0aMc6X19fCgoKKCwsPOs+3KpVqxrzSE5OZuHChRw9ehQXFxdOnjzJ\nxIkTKSgowG63O85hsVjw8fEhMzOzxvUXYrVaz7reJUuW8P7771NZWUllZSUWiwU43Y0jJCTEsZ+X\nlxcAffv2xc3NjW3btnHy5EmGDBmCt7f3WTHc3Nx44403eOmll3juuefo1q0bc+fOpaSk5KzvwtXV\nFVdXV/Ly8vDz83PE/uF7ysvLo02bNmf9TM73XV/MH2hymopgaVRsNhtr167loYceAk63ZCxZssTx\nFzrAAw88wIYNG4iLizvrWB8fHx555BEeeeQRvv32W+69916uvfZaAgICyM/Pd+x38uRJ/P39adOm\nDQUFBY71BQUFtGnT5pycgoKCsFqtvPfeexd1cxWR5q1Pnz7k5uaSlJRETEyMY31VVRXPP/88999/\n/znHnO9+ExERwYIFC7Db7axYsYKZM2eyadOmWtd/8sknZ507ISGB+fPn07VrV66++mp8fX3JzMzk\nj3/8I++++y49evQgOTmZhISEWq/J39+f4uJix/KZ/Uv/9a9/kZyczPLly/Hx8eHvf/97jX8EhISE\ncO2117Jo0aJztrVq1eqsfsB5eXl06NDhnP3mzZtHTEwML7zwAlar1dH4EBAQgMViIT8/n8DAQIwx\nHD9+nHbt2tW4PiIiAhcXF+x2u+PchYWFNV77rl27ePXVV3n33XcJDw9n8+bNPPbYY464Z/7++OFz\nQEAA48aN45NPPuHkyZNntZyfKTo6mkWLFlFZWclrr73G3LlzWbBggaOod3FxoaqqiszMTIKCgigs\nLMQY4yiEaytqz/ddy8VTdwhpNEpLS3nsscfw9/dnzJgxHDlyhIyMDK688sqz9ouLizvrxbkf3H//\n/Y6XDqKiovD19cVisRAbG8uKFSswxpCdnc2ECRPIz89n+PDhLFu2DJvNRmlpKR988IHj8dSZXF1d\nGTZsGP/5z3+A060iv//97zVcm0gL1apVK+655x4effRRUlJSgNP3hccff5y9e/c6WgvPNHz4cFau\nXElZWRnV1dUsW7aMYcOGkZeXxy9+8QuKi4txcXHhyiuvxGKx1Lq+Jn379iU3N5fly5c7uhzk5eXh\n7e1N586dqa6uZunSpQCUlJTUeI6IiAisVqujtXf58uWOeLm5uXTu3BkfHx/S09PZsGGD46U+V1dX\nR3E7ZMgQduzY4ehK8O233/LnP/8ZOP2Hw9q1awE4fvw4O3furDGP3NxcevTogdVqZfPmzaSkpFBa\nWoq7uzuDBw/m/fffB2DTpk3cd999ta63WCwEBwc7uomsXr36rFGHzpSXl0dQUBBhYWGUlZXx/vvv\nU1paijGG2NhYPv/8cwoLC6muruahhx7iyy+/BGD8+PGsXbuWr7/+usbfHQcOHOBXv/oVlZWVuLu7\n07NnTywWCx07dqRt27Z8+umnACxbtozHH3+c8PBw2rZty+rVq4HTxXlOTg69e/c+59zn+67l4qkl\nWBrEnXfeidVqdSz/8J/1m2++YfTo0djtdsrLyxk5ciSLFy/G1dWV999/n9jY2HNu/CNGjODJJ5+k\noKCA1q1bO9bfcccdzJw5k6qqKgBuu+02OnbsyN13301KSgojRozA09OTRx99lLCwMO68805SU1MZ\nN24cFouF0aNHO36B/NgTTzzB3Llzeffdd4HTfZPbtWtXp9+RiDQdM2bMwN/fnwceeACbzYaLiwsj\n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\nOmbOnMmSJUto164dHh4ePPPMMy4cmYiI6zSbJtgwDHa8nw7AzHF9aKUvw4mIiSxbtqzWdlBQkP3n\nuXPnMnfu3FqPR0VFERUVdc3rdO3alf/93/91TJEiIs1Ik2+Ck49nUVBymeqaK18E6dujI3d2be/i\nqkRERESkOWvSTXDy8Sy27Eqrte+r0wUkH8/i3n4BLqrKeTY8OdKli9BFREREWqom/cW4d5JO1bM/\n06l1iIiIiEjLclNNcGxsLFFRUUybNo0vvviizuc8++yzzJ49u1GLO5db96V5zueVNmqOiIiIiJjL\nDZdD3Mw96zMyMjh06BCtWzfuJcu6dvLgTM61DW8XP89GzREREWnOtHxOpOFueCa4vnvWf9/atWtZ\nunRpoxc3acQd9ey/vdGzRERERMQ8btgE3+ie9YmJidxzzz1069at0Yu7t18Ajz8YjLXVlcuhdbd5\n8fiDwab4UpyIiIiIOE6Drw7x/XvWFxQUkJiYyPbt28nKyrqp4xt6H/ofjfbmTwe+AeCFlWMaVmwj\ncOW94K/SvcnNkW3GMZs5W0REXOuGTfD17ll/8OBBLl68yMyZM6moqOD06dPExsYSHR1d7+vpPvQN\no3uTmyPbjGNurtlqnEVEWoYbLoe43j3rIyMjeffdd9m5cyfPP/88wcHB122ARURERESaghueCb7R\nPetFRERERJqbm1oTfL171l/VvXt34uLiGqcqEREREREHatJ3jBMRERERcQQ1wSIiIiJiOmqCRURE\nRMR01ASLiIiIiOmoCRYRERER01ETLCIiIiKmoyZYRERERExHTbCIiIiImI6aYBERERExnZu6Y5yZ\nbXhyJDabNzk5xa4uRUREREQaic4Ei4iIiIjpqAkWEREREdNREywiIiIipqM1wSIiIo1A3yERaV50\nJlhERERETEdNsIiIiIiYjppgERERETEdNcEiIiIiYjpqgkVERETEdNQEi4iIiIjpqAkWEREREdNR\nEywiIiIipqObZYiINAOxsbGkpqZisViIjo5m4MCB9sciIiLo3LkzVqsVgI0bNxIQEFDnMefPn2f5\n8uVUV1djs9nYsGED7u7urhpWo9MNK0TkZqkJFhFp4lJSUsjMzCQ+Pp6TJ08SHR1NfHx8reds3boV\nT0/PGx6zadMmZsyYwYQJE3juuedISEhgxowZzh6SiIjLaTmEiEgTl5SUxNixYwHo1asXhYWFlJSU\n/EPHJCcnM2bMGADCw8NJSkpybPEiIk2UzgSLiDRxubm5BAcH27d9fX3JycnBy8vLvi8mJoazZ88y\ndOhQnnrqqXqPKSsrsy9/8PPzIycn57rZPj4euLlZG1Sv1WoBwGbzbtBxjUnZ5sg1a7YZx+yIbDXB\nIiLNjGEYtbYXLVpEaGgoHTp0YP78+ezZs+eGx9S374fy8y81uL7qagOr1eKydbmuXBNsxmwzjtmV\n2WYc861kX69xVhMsItLE+fv7k5uba9/Ozs7GZrPZtydPnmz/OSwsjPT09HqP8fDwoLy8nLZt25KV\nlYW/v79zBiEi0sRoTbCISBMXEhJiP7ublpaGv7+/fSlEcXEx8+bNo6KiAoBDhw4RGBhY7zEjR460\n79+7dy+hoaEuGJGIiOvpTLCISBM3ZMgQgoODmTZtGhaLhZiYGBITE/H29mbcuHGEhYURFRVFmzZt\n6NevH5GRkVgslmuOAVi4cCErVqwgPj6erl271jqLLCJiJmqCRUSagWXLltXaDgoKsv88d+5c5s6d\ne8Nj4MrSiu3btzd+gSIizYyWQ4iIiIiI6agJFhERERHTURMsIiIiIqajJlhERERETEdNsIiIiIiY\njppgERERETEdNcEiIiIiYjpqgkVERETEdNQEi4iIiIjpqAkWEREREdNREywiIiIipqMmWERERERM\nR02wiIiIiJiOmmARERERMR01wSIiIiJiOmqCRURERMR01ASLiIiIiOmoCRYRERER01ETLCIiIiKm\noyZYRERERExHTbCIiIiImI6aYBERERExHTXBIiIiImI6aoJFRERExHTUBIuIiIiI6agJFhERERHT\nURMsIiIiIqbj5uoCbsaGJ0dis3mTk1Ps6lJEROQGNGeLSHOgM8EiIiIiYjpqgkVERETEdG5qOURs\nbCypqalYLBaio6MZOHCg/bGDBw/y3HPP0apVK3r27MnTTz9Nq1bqrUVERESk6bpht5qSkkJmZibx\n8fE8/fTTPP3007UeX716NZs2beKNN96gtLSUAwcOOKxYEREREZHGcMMmOCkpibFjxwLQq1cvCgsL\nKSkpsT+emJhI586dAfD19SU/P99BpYqIiIiINI4bLofIzc0lODjYvu3r60tOTg5eXl4A9v9mZ2fz\n6aefsnjx4uu+no+PB25u1n+oWJvN+x86rjGYMduMY3ZlthnHbObshrresrSrnn32WY4ePUpcXBz/\n8z//w65du+yPffnll3z++efMnj2bS5cu4eHhAcCKFSvo37+/08YhItJUNPgSaYZhXLMvLy+PJ554\ngpiYGHx8fK57fH7+pYZGArj0cjtmzDbjmF2ZbcYxN9dsVzTO31+WdvLkSaKjo4mPj6/1nIyMDA4d\nOkTr1q0BmDp1KlOnTrUfv3v3bvtzn3nmGfr06eO8AYiINEE3XA7h7+9Pbm6ufTs7OxubzWbfLikp\n4Wc/+xlLlixh1KhRjqlSRMTEbrQsDWDt2rUsXbq0zuN/+9vf8uSTTzq8ThGR5uSGTXBISAh79uwB\nIC0tDX9/f/sSCLgy8c6dO5ewsDDHVSkiYmK5ubm1PmW7uiztqsTERO655x66det2zbFffPEFXbp0\nqXXyYtOmTcycOZPVq1dTXl7u2OJFRJqoGy6HGDJkCMHBwUybNg2LxUJMTAyJiYl4e3szatQo3nzz\nTTIzM0lISADgRz/6EVFRUQ4vXETErL6/LK2goIDExES2b99OVlbWNc9NSEhgypQp9u05c+bQt29f\nevToQUxMDDt27GDevHn1Zul7HMpuyrlmzTbjmB2RfVNrgpctW1ZrOygoyP7zl19+2agFiYhIbddb\nlnbw4EEuXrzIzJkzqaio4PTp08TGxhIdHQ1AcnIyq1atsh87btw4+88RERG8++67183W9ziU3VRz\nzZptxjHfSvb1Gmfd1UJEpIm73rK0yMhI3n33XXbu3Mnzzz9PcHCwvQHOysrC09MTd3d34MoZ5Ecf\nfZSioiLgSoMcGBjoghGJiLheg68OISIiznW9ZWnfP7P7Qzk5Ofj6+tq3LRYLjzzyCI8++ijt2rUj\nICCAhQsXOmMIIiJNjppgEZFm4HrL0q7q3r07cXFx9u3+/fuzbdu2Ws+ZOHEiEydOdEyRIiLNiMWo\n68K/IiIiIiItmNYEi4iIiIjpqAkWEREREdNREywiIiIipqMmWERERERMR02wiIiIiJiOmmARERER\nMZ0me53g9evXc/jwYaqqqnj88ccZMGAAy5cvp7q6GpvNxoYNG+x3QWpMycnJLF682H4XpT59+vDY\nY485PLu0tJQVK1ZQWFhIZWUl8+fPx2azsWbNGgD69u3Lf/zHfzRqJkB6ejpPPvkkjz76KLNmzQLg\n1VdfZd26daSkpODp6QnArl27eOWVV2jVqhWPPPIIU6dObfRcgAMHDvDYY4/x1VdfOSS3ruxFixaR\nn58PQEFBAYMHD+ZXv/oV27Zt47333sNisbBgwQJGjx59y9k3+75u7HH/MNdms7F+/Xrc3Nxwd3dn\nw4YN+Pr6OuT3/cPs8PBwVq5cSWZmJp6enmzatIkOHTo4JbtXr16sXr0ai8XCHXfcwZo1a3Bzc3NI\nttmYbc4G18zbrpqz68sGx8/bZpyz68p21rxtqjnbaIKSkpKMxx57zDAMw7h48aIxevRoY+XKlca7\n775rGIZhPPvss8aOHTsckn3w4EFj4cKFtfY5IzsuLs7YuHGjYRiGceHCBWP8+PHGrFmzjNTUVMMw\nDOMXv/iFsX///kbNLC0tNWbNmmWsWrXKiIuLMwzDMP70pz8Zzz33nHH//fcbJSUl9uc98MADRlFR\nkVFWVmZMmjTJyM/Pb9RcwzCM8vJyY9asWUZISIhDcq+XfdXKlSuN1NRU4/Tp08aUKVOMy5cvG3l5\necb48eONqqqqW8q+2fd1Y4+7rtyFCxcap0+fNgzDMDZv3my88MILDvl915X92muvGb/61a8MwzCM\nN954w9i3b5/Tsp944gn739Hzzz9v7Nq1yyHZZmPGOdswnD9vu2rOri/bMBw/b5txzq4v2xnzttnm\n7Ca5HGL48OH893//NwDt27enrKyM5ORkxowZA0B4eDhJSUlOq8cZ2T4+PhQUFABQVFREx44dOXv2\nLAMHDnRYrru7O1u3bsXf39++b+zYsSxduhSLxWLfl5qayoABA/D29qZt27YMGTKEI0eONGouwIsv\nvsiMGTPsZ2waO/d62QDffPMNxcXFDBw4kOTkZEJDQ3F3d8fX15du3bqRkZFxS9k3+75u7HHXlfub\n3/yG2267DcMwyMrKonPnzg75fdeV/dFHH/Hggw8CEBUVxZgxY5yWferUKfvfVGhoKJ9++qlDss3G\njHM2OH/edtWcXV82OH7eNuOcXV+2M+Zts83ZTbIJtlqteHh4AJCQkEBYWBhlZWX2PzI/Pz9ycnIc\nlp+RkcETTzzB9OnT+fTTT52SPWnSJM6dO8e4ceOYNWsWy5cvp3379vbHHZHr5uZG27Zta+3z8vK6\n5nm5ubn4+vrat319fW+plrpyv/32W/72t78xYcIEh+XWl33Vq6++av+IzxHZN/u+buzsunKtVisf\nf/wxkZGR5Obm8uCDDzptzGfPnuXjjz9m9uzZLF26lIKCAqdl9+3bl7/85S/AlY9wc3NzHZJtNmac\ns8H587ar5uz6sp0xb5txzq4v2xnzttnm7CbZBF+1b98+EhISWL16da39hgPv9HzHHXewYMECXnjh\nBdatW8e///u/U11d7fDst956i65du/L+++/zyiuv8K//+q+1HnfkmBvKEbU888wz/Nu//ZvTc6+q\nqKjg8OHD3HfffQ7Pbuj7urGyf5gbFhbGe++9x5133slLL73ksNwfZhuGQc+ePYmLiyMwMJAtW7Y4\nLXvFihXs3r2bOXPmYBhGnTlN6W+tuTHTnA3NZ952VB2unLfNMGfXle2sedssc3aTbYIPHDjAiy++\nyNatW/H29sbDw4Py8nIAsrKy6vxopDEEBAQwceJELBYLPXr0oFOnThQWFjo8+8iRI4waNQqAoKAg\nLl++bF/478jcm+Hv709ubq59Ozs7u1FrycrK4ptvvmHZsmU88sgjZGdnM2vWLIfnft+hQ4fsH7nA\ntWNurN//zbyvHTHuH+a+//77AFgsFsaPH8/hw4cd9vv+YXanTp0YPnw4AKNGjSIjI8Np2V26dGHL\nli28+uqrDBo0iG7dujn1fdaSmW3OhqY7bzvjPe3qebulz9l1ZTtr3jbTnN0km+Di4mLWr1/Pli1b\n6NixIwAjR45kz549AOzdu5fQ0FCHZO/atYuXX34ZgJycHPLy8vjJT37i8Ozbb7+d1NRUAM6ePYun\npye9evXir3/9q0Nzb8agQYM4duwYRUVFlJaWcuTIEYYNG9Zorx8QEMC+ffvYuXMnO3fuxN/fn9de\ne83hud937NgxgoKC7Nv33Xcf+/fvp6KigqysLLKzs+ndu/ctZdzs+7qxx11X7ubNmzlx4gRwZQ1f\nz549HfL7ris7LCyMAwcOAJCWlubU7E2bNrF//34AEhMTiYiIcOr7rKUy45wNTXfedsZ72tXzdkue\ns+vLdsa8bbY522I0lc9rvic+Pp7NmzfTs2dP+761a9eyatUqLl++TNeuXXnmmWdo3bp1o2eXlJSw\nbNkyioqKqKysZMGCBdx1112sWLHCodmlpaVER0eTl5dHVVUVixcvxmazsXr1ampqahg0aNANP3Zq\nqC+//JJ169Zx9uxZ3NzcCAgIYOTIkXz22WccPXqUAQMGMHjwYJYvX857773Hyy+/jMViYdasWfZF\n8o2Vu3nzZvubPiIigg8//BCgUXOvl71582aGDh3KxIkT7c+Ni4vjz3/+MxaLhSVLljBixIhbym7I\n+7oxx11X7qJFi3j22WexWq20bduW9evX4+fn1+i/77qy161bx9q1a8nJycHDw4N169bRqVMnD9f4\nLgAABJFJREFUp2QvXLiQ9evXYxgGw4YNs/9NNXa22Zhxzgbnz9uumrPry3bGvG3GObu+bGfM22ab\ns5tkEywiIiIi4khNcjmEiIiIiIgjqQkWEREREdNREywiIiIipqMmWERERERMR02wiIiIiJiOm6sL\nkJbtzJkzREZGcvfddwNQWVnJsGHDmD9/PocOHSItLY2f//znTq1p6dKlrFy5koCAAKfmiog0B5q3\nxSx0iTRxqDNnzjBjxgw+/vhjAC5fvszatWvJysrid7/7nYurExGRH9K8LWahM8HiVG3atCE6Oprx\n48ezY8cOPv/8czZu3EhERATTpk3jwIED5OTksGLFCuLj48nIyGD+/PlMmTKFwsJCYmJiuHjxIiUl\nJfz0pz/lxz/+MZs3b6agoIALFy6QmZnJvffeyy9/+UvS09NZvXo1rVu3pry8nPnz53P//fcTERHB\n9u3b6d69O7GxsaSlpQFX7ji0ZMkSkpOTeemll+jcuTMZGRm4ubmxbds2ampqeOqppygqKqKqqorw\n8HCnnw0REXE2zdvSUqkJFqdr3bo1/fv3p7S0tNZ+Hx8f4uLiWLlyJa+88grbt28nJSWF2NhYpkyZ\nwn/9138RGhrKww8/zKVLl3jooYcICQkB4Pjx47z22mtUVlYyYsQIFi1axM6dO4mIiOBf/uVfyMvL\ns9/28ardu3dz5swZ/vjHP1JTU8O0adMYOXIkAEePHmXv3r34+fkxe/ZsPvnkEwCqqqp4/fXXqamp\nIS4ujpqaGlq10tJ6EWnZNG9LS6QmWFyiuLgYq9Vaa9+QIUOAK/ekDwgIwGKx0LlzZ4qLiwFITk7m\n2LFjvPnmmwC4ublx5swZAIYOHYrVasVqteLj40NhYSHjx49n5cqVnDt3jvDwcB566KFaeampqYwY\nMQKLxYLVamXYsGEcO3aM/v3706tXL/z8/ADo1q0bBQUFREREsGnTJhYvXszo0aOZOnWqJlIRMQ3N\n29LS6J0gTldWVsaJEyfo0KFDrf1ubm51/nyVu7s7MTExxMXFERcXx+7duxk4cCDANROzYRgMHz6c\nt99+m7CwMBITE1m2bFmt51gslmuOubrvh68H4Ofnx1tvvcWcOXPIyMjg4Ycfpry8vAEjFxFpnjRv\nS0ukJlicqrKykl//+teEhIQ0+F/jQ4cOZffu3QCUl5ezZs0aqqqq6n1+XFwcFy5cICIigqeffprU\n1NRajw8ePJjPPvsMwzCoqqoiJSWFQYMG1ft6n3zyCfv372fo0KEsX74cDw8P8vLyGjQGEZHmRvO2\ntFRaDiEOd/HiRWbPnk11dTVFRUWEhISwevVq3nnnnQa9zoIFC1i1ahXTp0+noqKCqKioOs88XHXn\nnXfy1FNP4enpaf9yxPdFRkZy5MgRpk+fTk1NDWPHjmXo0KEkJyfX+Xo9e/Zk5cqVbNu2DavVyqhR\no+jWrVuDxiAi0hxo3hYz0CXSRERERMR0tBxCRERERExHTbCIiIiImI6aYBERERExHTXBIiIiImI6\naoJFRERExHTUBIuIiIiI6agJFhERERHTURMsIiIiIqbzf6ZBJGlxXVgFAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fbcdff939b0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"lda = rs.groupby('n_dim').mean().lda_score\n",
"std_lda = rs.groupby('n_dim').std().lda_score\n",
"acc = rs.groupby('n_dim').mean().dec_acc\n",
"std_acc = rs.groupby('n_dim').std().dec_acc\n",
"\n",
"f, ax = plt.subplots(1, 2, figsize=[12, 6])\n",
"ax[0].errorbar(n_dim, lda, yerr=std_lda, fmt='-o')\n",
"ax[1].errorbar(n_dim, acc, yerr=std_acc, fmt='-o')\n",
"ax[0].set_xlabel('Dimensions')\n",
"ax[1].set_xlabel('Dimensions')\n",
"ax[0].set_title('LDA score')\n",
"ax[1].set_title('Cross-validated accuracy score')\n",
"for axis in ax:\n",
" axis.set_xticks(n_dim)\n",
" axis.set_xticklabels(n_dim)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Take-home message"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Comparing LDA scores or decoding accuracy between recordings with different numbers of neurons may be subject to contamination effects due to the dimensionality of the data, and should thus be handled with care. One should not come to the conclusion that differences in LDA or decoding accuracy of two groups of neurons of different sizes reflect differences in the underlying population, because these differences might be due to the sampling effects shown here. Applying PCA to equalize the dimensionality reduces but does not eliminate the magnitude of this effect in the datasets analyzed here. "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
""
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2.0
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment