Durante el último año, he oído hablar mucho de Programación probabilística (PP) como PyMC3 y Stan y lo bueno que es el PP. Y hoy, alguien compartió este enlace conmigo: Pyro: un lenguaje de programación probabilística profunda
Sin embargo, no entiendo muy bien qué tiene de especial, ya que me da la sensación de que todo lo que se puede hacer en PP se puede hacer en cualquier otro lenguaje de propósito general. Estoy seguro de que hay aspectos técnicos en PP que lo hacen atractivo (por ejemplo, la computación paralela), pero aparte de esto, ¿es PP realmente diferente de cualquier otro lenguaje?
Pregunta: Me preguntaba si había consenso sobre lo que es PP y en qué se diferencia de otros programas informáticos centrados en la estadística como R, Matlab o Mathematica. Cabe señalar que PyMC3
y Stan
se centran en un análisis más bayesiano.
Investigando un poco en Google, he encontrado las dos definiciones siguientes. La primera más abstracta y la segunda más sobre las características técnicas del PP.
1.2. La programación probabilística es
En cambio, la programación probabilística es una herramienta de modelización estadística. La idea es tomar prestadas lecciones del mundo de los lenguajes de programación y aplicarlas a los problemas de diseño y uso de modelos estadísticos. Los expertos ya construyen modelos estadísticos -a mano, en notación matemática sobre papel-, pero se trata de un proceso exclusivo de expertos que es difícil apoyar con razonamientos mecánicos. La idea clave de PP es que la modelización estadística puede, cuando se hace lo suficiente, empezar a parecerse mucho a la programación. Si damos el salto y realmente utilizamos un lenguaje real para nuestros modelos, muchas herramientas nuevas se vuelven viables. Podemos empezar a automatizar las tareas que antes justificaban escribir un artículo para cada caso.
He aquí una segunda definición un lenguaje de programación probabilístico es un lenguaje de programación ordinario con
rand
y un gran montón de herramientas relacionadas que le ayudarán a comprender el comportamiento estadístico del programa.Ambas definiciones son correctas. Sólo que enfatizan diferentes ángulos de la misma idea central. La que tenga sentido para ti dependerá de para qué quieras usar PP. Pero no te distraigas por el hecho de que los programas PPL se parecen mucho a las implementaciones de software ordinarias, donde el objetivo es ejecutar el programa y obtener algún tipo de salida. El objetivo de PP es el análisis, no la ejecución (énfasis añadido).
-- Programación probabilística
Me gustaría saber si la comunidad estadística en general está de acuerdo con estas dos definiciones de PP, y si hay alguna otra característica que pueda faltar en esta definición.
2 votos
Estoy de acuerdo con la primera definición: PP te hace definir un modelo estadístico y se encarga de la parte de simulación por sí mismo. Ejemplos aparte de Stan son BUGS, Church, Anglican. R no es un PP.
0 votos
@Xi'an, ¿dirías que PP parece centrarse sobre todo en la modelización estadística bayesiana? En caso afirmativo, ¿se supone que PP sólo admite un enfoque bayesiano?
0 votos
La atención se centra en el "modelado jerárquico". Esto es inherentemente conveniente para los métodos bayesianos. Aunque también existe una interpretación frecuentista menos natural.
0 votos
@Jon: Supongo que la respuesta es "principalmente, pero no del todo". En su conjunto, el PP se centra en utilizar la teoría de la probabilidad para modelizar la incertidumbre y hacer predicciones. Eso no requiere el uso del teorema de Bayes. Por ejemplo, los propios métodos de Monte Carlo son procedimientos frecuentistas. Sí, usamos métodos MC para muestrear posteriors bayesianos normalmente, pero eso no significa que los métodos MC sólo apoyen la inferencia bayesiana.