Skip to content

Semi-parametric proportional odds (non-parametric baseline odds) #341

Description

@derrynknife

Split out of #149, which bundled this with two unrelated frailty items.

Status: maybe / not scheduled. Kept as a record of a considered design, not a plan. The reasoning against it below has not changed since it was first written.

What exists

Parametric proportional odds only — PO(Logistic), WeibullPO, LogNormalPO and the rest, via ProportionalOddsFitter. The baseline is a fitted distribution:

S(x|Z) / F(x|Z) = [S₀(x) / F₀(x)] · exp(β'Z)

with S₀ parametric. There is no surpyval.ProportionalOdds name; the semi-parametric form does not exist in any shape.

What is missing

The same model with a non-parametric baseline odds — an unspecified step function O₀(x) estimated jointly with β, the proportional-odds analogue of what CoxPH is for proportional hazards.

Why it is harder than Cox

Cox gets a partial likelihood: the baseline factors out entirely, and β is estimated without ever touching Λ₀. Proportional odds has no such factorisation. It needs a joint NPMLE of (β, Λ₀) — a profile likelihood over β with an inner loop solving a monotone (isotonic) problem for the baseline at each step. That is a different and substantially heavier piece of machinery than anything currently in the regression module, and it brings its own convergence and identifiability questions.

Why it is low priority

The parametric PO family already covers the practical cases. The usual reason to want a non-parametric baseline is that the baseline shape is the thing you cannot commit to — and where that matters, CoxPH is generally the model people reach for anyway.

If it were built

  • ProportionalOdds alongside CoxPH and AdditiveHazards, returning a SemiParametricRegressionModel.
  • Profile likelihood in β, isotonic inner solve for Λ₀.
  • Validation against a parametric PO fit on data generated from that parametric model — the semi-parametric fit should recover the same β with a baseline tracking the parametric one.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions