2011-05-26 4 views
6

J'ai une «carte de chaleur» 2D ou PDF que j'ai besoin de recréer par échantillonnage aléatoire. C'EST À DIRE. J'ai une carte de densité de probabilité 2D montrant les emplacements de départ. Je dois choisir aléatoirement des lieux de départ avec la même probabilité que le PDF original. Pour ce faire, je pense que je dois d'abord trouver la fonction CDF (densité cumulative), puis choisir des nombres uniformes aléatoires pour échantillonner le CDF. C'est là que je suis coincé.comment échantillonner numériquement à partir d'une fonction de distribution de probabilité conjointe, discrète

Comment trouver numériquement le CDF joint de mon PDF? J'ai essayé de faire une somme cumulative dans les deux dimensions, mais cela n'a pas donné le résultat correct. Ma connaissance des statistiques me manque. La heatmap/PDF est la forme de [x, y, z], où Z est l'intensité ou la probabilité à chaque point x, y.

+0

Dans quel format se trouve votre heatmap? Avez-vous une fonction p (x, y) qui vous donne une densité de probabilité à x, y? –

Répondre

1

Eh bien, comme on l'observe dans this answer, pour mon cas, il ne compte pas nécessairement que ma distribution est bivarié. Puisque je peux normaliser le tout pour que ce soit un vrai pdf (la surface totale s'intègre à 1), je peux alors réorganiser la matrice MxN en un vecteur 1xM * N. Une fois que j'ai cela, je peux faire une intégrale cumulative (cumtrapz dans MATLAB), puis en faire un échantillon (utiliser un nombre aléatoire uniforme pour trouver la valeur d'index correspondante).

3

Vous pouvez d'abord parcourir la carte de densité 2D et pour chaque paire (x, y), recherchez z par une recherche à partir du PDF. Cela vous donnera un point de départ (x, y) avec une probabilité de z. Ainsi, chacun des points de départ a sa propre probabilité à partir du PDF. Ce que vous pouvez faire maintenant, c'est d'ordonner les points de départ, choisir au hasard un nombre et le mapper à un point de départ. Par exemple, disons que vous avez n points de départ: P1, Pn. Avec une probabilité de p1 .. pn (probabilités normalisées ou pondérées, donc la somme est de 100%). Disons que vous choisissez une valeur aléatoire p, choisissez P1 si p < p1, choisissez P2 si p1 < p < p1 + p2, choisissez P3 si p1 + p2 < p < p1 + p2 + p3 etc Vous pouvez le regarder comme un histogramme sur les points P1 à PN, ce qui est la même chose qu'une fonction de distribution cumulative.

1

C'est ce que je veux faire aussi !!

J'ai un joint density function pour les variables indépendantes X et Y. Et je veux maintenant échantillonner de nouveaux x, y à partir de cette distribution. Ce que je crois que je dois faire est de trouver la distribution cumulative commune et ensuite en quelque sorte l'échantillon de lui. Ce qui est exactement ce que vous sembliez avoir fait. Pourriez-vous être plus précis lorsque vous dites que vous utilisez des «nombres aléatoires uniformes pour trouver les valeurs d'index correspondantes»? Juste pour référence: X est la taille des ordres de demande et Y est la taille des ordres d'achat sur le marché boursier.

+0

[Ceci] (http://www.mathworks.com/matlabcentral/fileexchange/35797) La fonction MATLAB l'a résolu! – Groot

Questions connexes