Em conjunto com uma pergunta de Validação cruzada sobre a simulação de uma cópula específica, ou seja, um Cdf multivariado definido em , comecei a me perguntar sobre o panorama geral, como, quando dada tal função, alguém pode imaginar um algoritmo genérico para simular a partir da distribuição de probabilidade correspondente?[ 0 , 1 ] k
Obviamente, uma solução é diferenciar vezes para produzir o pdf correspondente e depois chamar um algoritmo genérico do MCMC como Metropolis-Hastings para produzir uma amostra de (ou ).k κ ( u 1 , ... , u k ) κ
Além disso: Outra solução é seguir as cópulas arquimedianas, usando a transformação de Laplace-Stieljes para simulação, mas isso nem sempre é possível na prática. Como descobri ao tentar resolver a pergunta acima mencionada .
Minha pergunta é sobre evitar esse passo diferenciador de maneira genérica, se possível.
Respostas:
Esta é uma tentativa pela qual não trabalhei completamente, mas muito tempo para a seção de comentários. Pode ser útil colocá-lo aqui como outra alternativa básica para muito baixo . Não requer diferenciação explícita + MCMC (mas executa diferenciação numérica, sem MCMC).k
Algoritmo
Para small :ε>0
Discussão
Esse algoritmo deve gerar amostras de iid a partir de uma aproximação de de , em que depende apenas da precisão numérica. Existem detalhes técnicos práticos para refinar a aproximação e torná-la numericamente estável.C ( u 1 , ... , u k ) εε C(u1,…,uk) ε
O problema óbvio é que a complexidade computacional é escalonada como ; portanto, para ser generoso, isso não é muito geral em termos de (mas o exemplo que você vinculou tinha , talvez esse método seja não completamente inútil - não estou familiarizado com o cenário típico no qual você teria acesso ao cdf). Por outro lado, para distribuições de dimensões muito baixas, isso poderia funcionar, e o custo é compensado pelo fato de que, diferentemente da outra solução genérica de "diferenciação + MCMC", não há necessidade de calcular derivados, as amostras são iid e existem não é sintonizado (além da opçãok k = 3 εO(2k) k k=3 ε , que deve ser algo um pouco acima da precisão da máquina). E talvez haja maneiras de melhorar isso do que a abordagem ingênua.
Como eu mencionei, isso está fora de questão, então pode haver outros problemas.
fonte