Gostaria de desenhar uma amostra . A Wikipedia sugere usar uma composição de Cholesky ou Eigend , por exemplo , ou
E, portanto, o exemplo pode ser obtido via: ou onde
A Wikipedia sugere que ambos são igualmente bons para gerar amostras, mas o método de Cholesky tem o tempo de computação mais rápido. Isso é verdade? Especialmente numericamente ao usar o método de Monte Carlo, onde as variações ao longo das diagonais podem diferir em várias ordens de magnitude? Existe alguma análise formal sobre esse problema?
car::ellipse
) . Embora a pergunta seja feita em uma aplicação diferente, a teoria por trás é a mesma. Você verá figuras agradáveis para explicação geométrica lá.Respostas:
O problema foi estudado por Straka et.al para o Filtro Kalman Unscented, que extrai amostras (determinísticas) de uma distribuição Normal multivariada como parte do algoritmo. Com alguma sorte, os resultados podem ser aplicáveis ao problema de monte-carlo.
A decomposição de Cholesky (CD) e a decomposição de Eigen (ED) - e, nesse caso, a raiz quadrada de matriz (MSR) real são todas as maneiras pelas quais uma matriz semi-definida positiva (PSD) pode ser decomposta.
Considere o SVD de uma matriz de PSD, . Uma vez que P é PSD, isto é, na verdade, o mesmo que o ED com P = L S L T . Além disso, podemos dividir a matriz diagonal por sua raiz quadrada: P = U √P=USVT P=USUT , observando que√P=US−−√S−−√TUT .S−−√=S−−√T
Agora podemos introduzir uma matriz ortogonal arbitrária :O
.P=US−−√OOTS−−√TUT=(US−−√O)(US−−√O)T
A escolha de realmente afeta o desempenho da estimativa, especialmente quando há fortes elementos fora da diagonal da matriz de covariância.O
O artigo estudou três opções de :O
Das quais foram tiradas as seguintes conclusões no trabalho após muita análise (citação):
Referência:
fonte
Aqui está uma ilustração simples usando R para comparar o tempo de computação dos dois métodos.
Os tempos de execução são
Ao aumentar o tamanho da amostra para 10000, os tempos de execução são
Espero que isto ajude.
fonte
Aqui está a demonstração do manual, ou pobre homem, prove-me-yourself:
1. MÉTODO SVD:
2. CHOLESKY METHOD:
Thank you to @userr11852 for pointing out to me that there is a better way to calculate the difference in performance between SVD and Cholesky, in favor of the latter, using the function
microbenchmark
. At his suggestion, here is the result:fonte
microbenchmark
and it really makes a difference.