Tuning curves as functional data

I don’t know anything about cellular neuroscience or single cell recording, but I recently came across the problem of estimating the receptive field of a neuron from its spiking frequency in response to movement at various angles. This is directional AND functional statistics, which is just great, so I thought I’d try my hand at a principled model of the thing.

I simulated a dataset consisting of observed spike counts at various angular values. These counts are plotted below

Note that I’ve omitted axes or labels on all of the plots because they’re prettier that way. The goal is to estimate the mean firing rate at each angular value (the tuning curve of the neuron). We can do this pointwise, or (better) by machine learning, but parametric models are nice. Let’s make a few assumptions:

  1. The tuning curve is smooth.
  2. The tuning curve is defined on the circle, not \mathbb{R}. That means its endpoints should be identified.
  3. The number of spikes at a given angle is Poisson.

Point (1) means that the mean curve is functional, so I immediately think “spline basis”. Point (2) means that the basis should be defined on S^1. So my thought was to model the spiking rate as a Poisson distribution with a mean function estimated from a spline basis roughly defined on the circle (in a kind of ad hoc way). I constructed a cubic spline basis on S^1 by, basically, constructing a basis on [-\pi,\pi) and taking the care to identify the boundary points. The result is a radially symmetric spline basis on the circle. There is certainly a more rigorous way to do this, but it would require more effort than I’m willing to expend in my hotel room. It occurs to me that a basis of von Mises densities might be more natural. In any case, the basis for the mean function is plotted below:

Letting y_{\theta,j} be the j‘th observed spike count for angle \theta, \mathbf{B} a matrix of k basis elements, and \mathbf{a} a k-vector of coefficients, our model is then

    \begin{align*}         y_{\theta,j} &\sim \mathrm{Poisson}(\lambda_\theta) \\         \lambda &= \mathbf{B} \mathbf{a} \\         \mathbf{a}   &\geq 0 \\         a_1 &= a_k    \end{align*}

where \lambda is parametrized by a spline basis on the circle. We can then easily fit the model with MCMC and get a full posterior tuning curve, which I’ve plotted below.

It’s unlikely that the model would hold up to modern techniques in machine learning, but it has the benefit that it can be easily extended to accommodate arbitrary conditions or predictors, or multi-level structures.