laplace_sample: expose CmdStan's diagnostic_file (the Hessian at the mode)
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 25/100
Línea de trabajo
Start from CmdStanModel.laplace_sample and compare it with how sample handles save_diagnostics, since the issue proposes mirroring that argument. The result would be exposed on CmdStanLaplace as a hessian attribute. Pull request #870 is already open against this issue, so check it before starting. Done means the diagnostic file is requested, parsed, and its Hessian is available when requested.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
CmdStan's laplace method can write a diagnostic file (output diagnostic_file=...), but CmdStanModel.laplace_sample has no argument to request it. That file is where CmdStan reports the Hessian at the mode, so cmdstanpy users can't get the Hessian the Laplace approximation was built from.
Details
laplace_sample's signature in 1.3.0 is(data, mode, draws, *, jacobian, seed, output_dir, sig_figs, save_profile, show_console, refresh, time_fmt, timeout, opt_args). There is nodiagnostic_fileorsave_diagnostics, unlikesample(save_diagnostics=...).- In CmdStan 2.40.0, running
laplace mode=<mode.csv> ... output file=lap.csv diagnostic_file=lap_diag.jsonwrites a JSON file whose"Hessian"key holds the Hessian of the log density at the mode, on the unconstrained scale. We confirmed this by running it directly.
Use case
We fit a model by optimize (MLE, jacobian=False) and want observed-information standard errors at the optimum. The Hessian at the mode is that object. Through cmdstanpy we can only get the Laplace draws, and from those we'd have to re-estimate a covariance that CmdStan has already computed exactly.
Suggested API
Add a save_diagnostics: bool = False argument, mirroring sample. It would pass diagnostic_file=<output_dir>/<name>-diagnostic.json to CmdStan, and expose the parsed file on CmdStanLaplace. For example, CmdStanLaplace.hessian would return an np.ndarray, or None if the diagnostic file wasn't requested.
We are happy to open a PR with a test, if this API is acceptable.
Versions
cmdstanpy 1.3.0, CmdStan 2.40.0, Python 3.12, Linux x86_64.
- Lenguaje dominante
- Python
- Estrellas
- 198
- Forks
- 82
- Merge medio
- 4 d 11 h
- PR fusionados (30 d)
- 3
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de stan-dev/cmdstanpy
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
-
documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
Release 2.0Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
-
feature
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
-
documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 55/100
Todos los issues de stan-dev/cmdstanpy
Issues similares
-
Broken links found in docsAbiertodocs pydanty:is-working
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
pydantic/pydantic-ai#10113 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
GreedyBear-Project/GreedyBear#1727 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
ARM-software/CMSIS-DSP#354 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
kiat/codeAssist#391 ·
-
needs triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
darnitdevorg/darnit#587 ·
Los mantenedores suelen responder en 1 día