---
kind: concept
slug: sde-parameter-estimation
title: SDE parameter estimation from snapshots
summary: >-
  Estimating drift, diffusion and causal graph of a linear additive-noise SDE from snapshots at several times, without tracking individuals. Core idea: alternate entropic optimal transport, which links samples across times, with closed-form MLE on the linked paths. Trade-off: the starting law must not be weakly auto-rotationally invariant; each time pair needs a Sinkhorn solve. Simulated data only.
tags: [stochastic-differential-equations, identifiability, optimal-transport, causal-discovery]
papers: ["2410.22729"]
related: [causal-discovery, optimal-transport, diffusion-models, continuous-time-state-estimation]
status: draft
updated_at: 2026-11-05
---

## Overview

Often a process can only be measured as a crowd at each time: a set of
samples per measurement time, with no way to say which sample at one time
became which sample at the next. The question is whether those crowds
determine the rules of the motion. For the linear model
dX_t = A X_t dt + G dW_t, with observed diffusion H = G Gᵀ, the answer is
yes under a condition on the starting law [arxiv:2410.22729 §2, §3.2]. Only
H is identifiable, not G [arxiv:2410.22729 §2]. A is read as directed
influences between variables, and nonzero off-diagonal entries of H flag
shared noise between a pair [arxiv:2410.22729 §4].

## Variants

### Baseline: one pass of trajectory inference and MLE

Earlier estimators assume an irrotational drift and isotropic diffusion with
a known scale [arxiv:2410.22729 §1, §2]. The paper's comparison baseline,
Waddington-OT, is the first iteration of its own procedure and is equivalent to
MLE after Waddington-OT trajectory inference [arxiv:2410.22729 §6]. That
baseline has no card here, so only the paper's description of it is used.

### APPEX: alternating optimal transport and MLE

Repeat two steps. First, link consecutive snapshots with anisotropic
entropic optimal transport under the current (A, H). Second, sample paths
by chaining the links and refit the drift, then the diffusion, by
closed-form MLE [arxiv:2410.22729 §5.1–§5.3, alg. 1]. Card:
[Identifying Drift, Diffusion, and Causal Structure from Temporal Snapshots](/papers/2410.22729).
The simulated experiments run 30 iterations and report the result of each
iteration [arxiv:2410.22729 §6].

## When to use which

| Situation | Use | Why |
|---|---|---|
| Snapshots only, linear additive noise, diffusion may be full and correlated | APPEX | On random systems with d = 3 to 10, its drift and diffusion errors are below the baseline's in every row [arxiv:2410.22729 tab. 1]; correlated-diffusion runs also favour it [arxiv:2410.22729 tab. 4] |
| Isotropic diffusion with known scale, irrotational drift, one cheap pass | Baseline | These are the assumptions the baseline needs [arxiv:2410.22729 §2]. Its accuracy is lower in the paper's tables [arxiv:2410.22729 tab. 1, tab. 2] |
| Only the causal graph is needed, d up to about 10 | APPEX, then threshold | At d = 10, p = 0.25 the mean directed-edge SHD is 0.80 for APPEX and 48.60 for the baseline [arxiv:2410.22729 tab. 3]. The thresholds are tuned to the simulator [arxiv:2410.22729 §6.3] |
| Drift is nonlinear, or noise depends on the state | Not covered | The theorems are for the linear additive-noise model [arxiv:2410.22729 §2, §3.2] |
| Many samples per marginal, or large d, with a tight compute budget | Check cost before choosing | Each time pair needs a kernel over all sample pairs and a Sinkhorn solve, repeated per iteration. The paper calls this computationally intensive and not suited to very large data [arxiv:2410.22729 §7.1]. Runtime is not reported |
| Individuals can be followed over time | Not this concept | Linking samples across times is the problem APPEX solves. If the links are observed, it is not needed |

## Implementation sketch

Common core of APPEX. Parts that differ between variants are noted in the
comments. Symbols are as in the paper: N snapshots, M samples each, d
dimensions, measurement spacing dt.

```pseudocode
# Estimate drift A and diffusion H from snapshots  [arxiv:2410.22729 alg. 1]
# snapshots: N arrays (M, d), one per measurement time, spacing dt

def estimate_sde(snapshots, dt, n_iters):
    # Any starting guess works in principle; the paper's choice is in §6
    A = zeros((d, d))
    H = identity(d)
    for _ in range(n_iters):
        # Link consecutive snapshots by entropic OT under current (A, H)  [§5.1]
        links = [
            entropic_ot_plan(snapshots[k], snapshots[k + 1], A, H, dt)
            for k in range(N - 1)
        ]
        # Chain the links to get sample paths from the first snapshot  [§5.1]
        paths = chain_links(snapshots[0], links)
        # Drift by closed-form MLE first  [§5.2]
        A = mle_drift(paths, dt)
        # Diffusion by closed-form MLE, using the new drift  [§5.2]
        H = mle_diffusion(paths, A, dt)
    # Causal graph: threshold entries of A (edges) and H (confounders)  [§6.3]
    return A, H
```

The baseline is the same loop with one iteration and an isotropic kernel
with known scale [arxiv:2410.22729 §2, §6]. The paper says the OT kernel
uses the linearised mean for d ≥ 2 in its experiments [arxiv:2410.22729 §6].

## Contradictions

Only one paper is on this page, so no cross-paper disagreement is recorded.
Within the paper, two places do not match its own code, and the code is
what the repository runs. These are listed on the paper card:

- Initial diffusion: the paper draws a random scale, the code starts from the
  identity [arxiv:2410.22729 §6]. See [Identifying Drift, Diffusion, and Causal Structure from Temporal Snapshots](/papers/2410.22729), "Paper vs code".
- Drift MLE denominator: the population form sums N−1 terms, the finite-sample
  form given in the paper sums N−2 [arxiv:2410.22729 §5.2].

## Pitfalls

- **Starting law matters.** Identifiability fails only when the initial law is
  weakly auto-rotationally invariant, a symmetry of its higher cumulants
  [arxiv:2410.22729 §3.2]. The paper states that its default starting support
  is not in that case [arxiv:2410.22729 §6]. Check any other starting law.
- **Generic is not uniform.** For the remaining case, identifiability holds
  for almost every parameter set, leaving a measure-zero exception set. The
  paper gives no finite-sample bound on how often estimates fail
  [arxiv:2410.22729 §3.2, §7.1].
- **Discrete times can alias rotations.** The identifiability theorems assume
  marginals at all times. Sampling at discrete times can hide rotations
  [arxiv:2410.22729 §3.2]. The experiments use a spacing of 0.05 and rely on
  how the covariance evolves [arxiv:2410.22729 §6].
- **Only H is identifiable.** The noise matrix G, and so the sign and path of
  each latent source, cannot be recovered [arxiv:2410.22729 §2, §4]. Shared
  sources among three or more variables are not resolved by the lemma that
  links H entries to confounders [arxiv:2410.22729 §4].
- **Thresholds are simulator-specific.** The edge and confounder thresholds
  match the smallest simulated weight and the simulated confounder strength
  [arxiv:2410.22729 §6.3]. Real data needs its own choice.
- **Convergence is not proven.** The paper shows the KL divergence to the
  reference process does not increase per iteration, but only for population
  quantities. It does not prove convergence of the nonconvex iteration
  [arxiv:2410.22729 §5.3, §7.1]. The paper reports occasional dips in
  accuracy across iterations [arxiv:2410.22729 §6.2].
- **Evidence is simulated.** All reported numbers come from simulated linear
  systems with d = 3 to 10 and 500 samples per marginal [arxiv:2410.22729 §6].

## Papers

- [Identifying Drift, Diffusion, and Causal Structure from Temporal Snapshots](/papers/2410.22729): identifiability for linear additive-noise SDEs from marginals, and the APPEX alternating estimator.
