add functionality to interpolate in look-up tables

Aberta
#3,365 13 comentários 0 reações 1 responsável Ver no GitHub

Mantenedores costumam responder em até 1 dia

@SteveBronder já está trabalhando nisso.

Desde 26/8/2026.

Avaliação

Esta issue ainda não foi avaliada.

Descrição

feature new function

Many scientific and technical models incoporate tabulated data as part of the model definition. For example, to model temperature changes in some material where the heat capacity depends on temperature, one may need to compute the heat capacities at arbitrary temperatures even if measured values are only available at some specific temperatures. Many scientific computing tools implement various methods to interpolate in tabulated data, but Stan does not (as far as I know).

I think it would be good to add such functionality, as this would expand the scope of problems that can be modelled with Stan.

There are a lot of interpolation methods out there. To start with, I used OPenAI Codex to generate simple stan code for two common interpolation methods: PCHIP (Piecewise Cubic Hermite Interpolating Polynomial) and cubic natural splines. Both have continuous first derivatives which I think is good for HMC simulations. (Piece-wise linear interpolation does not, and was not included). The code is available here: https://github.com/bmelinden/stan_interpolation, and include scripts that demonstrate both their use in Stan and good agreement with corresponding interpolation methods in R.

Both are implemented as two-step calls. First a setup using the tabulated data
W = pchip_setup(xk, yk);
and then interpolated values can be calculated as
y = pchip_eval(x, W);

Versions of these interpolation methods are available in for example Matlab (pchip, spline), Boost interpolation, scipy interpolate, and R (pracma pchip, splinefun). In fact, most software packages supply more interpolation methods than that, but these two may be a good enough start.

I would be happy to work more on this, but I am unsure on how to proceed.

Linguagem predominante
C++
Estrelas
845
Forks
225
Merge médio
4d 21h
PRs com merge (30d)
13

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de stan-dev/math

Todas as issues de stan-dev/math

Issues semelhantes

Mais issues de C++

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.