No ano passado, tenho ouvido muito sobre estruturas de Programação Probabilística (PP), como PyMC3 e Stan , e quão bom é o PP. E hoje, alguém compartilhou este link comigo: Pyro: uma linguagem de programação probabilística profunda
No entanto, eu realmente não sigo o que há de especial, pois parece que tudo o que você pode fazer no PP pode fazer em qualquer outra linguagem de uso geral. Tenho certeza de que existem aspectos técnicos sobre o PP que o tornam atraente (por exemplo, computação paralela), mas, além disso, o PP é realmente diferente de qualquer outra linguagem?
Pergunta: Eu queria saber se havia um consenso sobre o que era PP e como ele difere de outros softwares estatísticos, como R, Matlab, Mathematica. Deve-se notar que PyMC3
e Stan
estão focados em mais análises bayesianas.
Fazendo uma pequena pesquisa no Google, me deparei com as duas definições a seguir. O primeiro mais abstrato e o segundo mais sobre as características técnicas da PP.
1.2 A programação probabilística é
Em vez disso, a programação probabilística é uma ferramenta para modelagem estatística. A idéia é pegar emprestadas lições do mundo das linguagens de programação e aplicá-las aos problemas de projetar e usar modelos estatísticos. Os especialistas já constroem modelos estatísticos - manualmente, em notação matemática no papel -, mas é um processo somente para especialistas, difícil de suportar com o raciocínio mecânico. O principal insight do PP é que a modelagem estatística pode, quando você faz o suficiente, começar a parecer muito com programação. Se dermos o salto e realmente usarmos uma linguagem real para nossa modelagem, muitas novas ferramentas se tornarão viáveis. Podemos começar a automatizar as tarefas usadas para justificar a redação de um artigo para cada instância.
Aqui está uma segunda definição : uma linguagem de programação probabilística é uma linguagem de programação comum
rand
e uma grande pilha de ferramentas relacionadas que ajudam a entender o comportamento estatístico do programa.Ambas as definições são precisas. Eles apenas enfatizam ângulos diferentes na mesma idéia central. Qual deles faz sentido para você depende do que você deseja usar o PP. Mas não se distraia com o fato de os programas PPL parecerem muito com implementações comuns de software, onde o objetivo é executar o programa e obter algum tipo de saída. O objetivo no PP é análise, não execução (ênfase adicionada).
Gostaria de saber se a comunidade estatística geral concorda com essas duas definições de PP e se existem outras características que possam estar ausentes.
Respostas:
A Programação Probabilística é uma técnica para definir um modelo estatístico. Ao contrário de definir um modelo por sua função de distribuição de probabilidade ou desenhar um gráfico, você expressa o modelo em uma linguagem de programação, normalmente como um amostrador direto.
A inferência automática de uma especificação de modelo é um recurso típico das ferramentas de programação probabilística, mas não é essencial e não é necessário que seja bayesiano. Há várias coisas úteis que você pode fazer com um modelo especificado como um programa probabilístico. Por exemplo, o artigo Funções Derivadas de Densidade de Probabilidade de Programas Funcionais Probabilísticos descreve uma ferramenta que analisa um programa probabilístico e elabora sua função de distribuição de probabilidade. O artigo Detectando simetrias de parâmetros em modelos probabilísticos analisa um programa probabilístico de simetrias de parâmetros. Esse tipo de trabalho também se enquadra na programação probabilística.
fonte