Je voudrais dessiner un échantillon . Wikipedia suggère d'utiliser soit une composition de Cholesky soit une composition Eigend , c'est-à-dire Σ = D 1 D T 1 ou Σ = Q Λ Q T
Et donc l'échantillon peut être tiré via: ou x = Q √ où v∼N(0,I)
Wikipedia suggère qu'ils sont tous deux également bons pour générer des échantillons, mais la méthode Cholesky a le temps de calcul le plus rapide. Est-ce vrai? Surtout numériquement lors de l'utilisation d'une méthode de monte-carlo, où les variances le long des diagonales peuvent différer de plusieurs ordres de grandeur? Existe-t-il une analyse formelle de ce problème?
car::ellipse
) . Bien que la question soit posée dans des applications différentes, la théorie sous-jacente est la même. Vous y verrez de belles figures pour une explication géométrique.Réponses:
Le problème a été étudié par Straka et al pour le filtre de Kalman non parfumé qui tire des échantillons (déterministes) d'une distribution normale multivariée dans le cadre de l'algorithme. Avec un peu de chance, les résultats pourraient être applicables au problème de monte-carlo.
La décomposition de Cholesky (CD) et la décomposition propre (ED) - et d'ailleurs la racine carrée de matrice réelle (MSR) sont toutes des façons de décomposer une matrice semi-définie positive (PSD).
Considérons la SVD d'une matrice de PSD, . C'est depuis P est PSD, en fait le même que l'ED avec P = U S U T . De plus, nous pouvons diviser la matrice diagonale par sa racine carrée: P = U √P=USVT P=USUT , notant que√P=US−−√S−−√TUT .S−−√=S−−√T
Nous pouvons maintenant introduire une matrice orthogonale arbitraire :O
.P=US−−√OOTS−−√TUT=(US−−√O)(US−−√O)T
Le choix de affecte en fait les performances d'estimation, en particulier lorsqu'il existe de forts éléments hors diagonale de la matrice de covariance.O
L'article a étudié trois choix d' :O
D'où les conclusions suivantes ont été tirées dans le document après de nombreuses analyses (citant):
Référence:
la source
Voici une illustration simple utilisant R pour comparer le temps de calcul des deux méthodes.
Les temps de course sont
Lors de l'augmentation de la taille de l'échantillon à 10000, les durées de fonctionnement sont
J'espère que cela t'aides.
la source
Voici la démonstration manuelle ou la démonstration du pauvre homme:
1. SVD METHOD:
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:la source
microbenchmark
and it really makes a difference.