J'ai 1000 nombres aléatoires uniformément répartis. Comment les manipuler pour obtenir un histogramme en forme de V?
J'ai 1000 nombres aléatoires uniformément répartis. Comment les manipuler pour obtenir un histogramme en forme de V?
Recherchez la "méthode de transformation" ou la "méthode de transformation inverse", qui est un moyen de générer des nombres aléatoires avec une distribution arbitraire. Vous trouverez de nombreuses notes de cours décrivant l'idée. Voici la page wikipedia: Échantillonnage par transformée inverse. Il contient des liens vers des ressources plus détaillées en bas.
Le résultat de base est cette recette: si vous avez besoin d'une distribution $ D $, alors
Le calcul ne peut pas être effectué de manière analytique pour chaque distribution. Pour votre distribution, c'est possible. Si le domaine du "V" est $ [- 1,1] $, alors le PDF est $ | x | $, le CDF est $ (1+ \ operatorname {sign} (x) x ^ 2) / 2 $ , et le CDF inverse sera $$ \ operatorname {sign} (2x-1) \ sqrt {| 1-2x |} $$
Par exemple, dans Mathematica
Si $ X $ et $ Y $ sont des variables aléatoires indépendantes uniformément distribuées sur $ [0,1] $, alors $ X + Y $ a une distribution en forme de pyramide ou en "V inversé" sur $ [0,2] $ .
Tout ce que nous devons faire pour transformer cette pyramide en un V est d'échanger les deux moitiés de la distribution.
Ainsi, étant donné $ X, Y \ sim \ mathcal U indépendant (0,1) $, soit $$ Z = \ begin {cases} X + Y & \ text {if} X + Y < 1 \\ X + Y-2 & \ text {sinon.} \ End {cases} $$
La variable aléatoire $ Z $ aura alors la forme en V de la distribution que vous voulez sur $ [- 1,1] $.
Cela devrait vraiment être un commentaire sous la réponse ci-dessus. Mais comme je n'ai pas assez de réputation pour faire ce commentaire je le posterai ici. Dans la question que vous avez initialement demandé comment faire cela dans "Excel". Cela devrait le faire,
=SIGN(2*RAND()-1)*(ABS(1-2*RAND()))^0.5
Une note intéressante à la réponse précédente est qu'elle ne change pas du tout la distribution de la variable créée si vous utilisez une variable aléatoire uniforme (la même pour les deux) pour générer la distribution en V ou deux (pour le signe fonction et la fonction abs).
Vous voulez utiliser $ U \ sim \ text {Uniform} (0,1) $. Vous recherchez quelque chose qui s'appelle Probability Integral Transform (PIT).
Si $ X \ sim F $ alors, $ F (X) \ sim \ text {Uniforme} (0,1) $. Par conséquent, vous trouverez d'abord le CDF pour la distribution qui vous intéresse, puis vous vous transformerez. Par exemple, si vous voulez $ f (x) = | x | $, $ x \ in (-1,1) $, intégrez pour obtenir $ F (x) = P (X \ leq x) = \ begin {cases} \ frac {-x ^ 2} {2} + \ frac {1} {2} & x \ leq 0 \\ \ frac {x ^ 2} {2} + \ frac {1} {2} & x> 0 \ end {cases} $. Ensuite, $ F ^ {- 1} (u) \ sim F $
Il existe une variété d'approches qui pourraient convenir.
Même avec les commentaires, vous ne l'avez pas vraiment assez épinglé (vous donnez un exemple de ce que vous voulez, mais pas de la gamme de cas que vous voulez considérer), mais voici quelques exemples d'approches:
1) échantillonnage de rejet. Générez un uniforme sur la plage souhaitée et utilisez le rejet pour obtenir la distribution souhaitée. Cela fonctionne assez généralement et peut être rendu raisonnablement efficace même pour des cas assez généraux. Les variantes d'échantillonnage par rejet, comme l'approche ziggurat, peuvent être très rapides, mais peuvent être assez fastidieuses à mettre en place si vous ne voulez que quelques nombres.
2) Pour le cas de $ f (x) = | x | $ sur $ (- 1,1) $. Soit $ U_1, U_2 $ un uniforme standard iid. Alors $ \ text {max} (U_1, U_2) $ a une distribution comme la moitié positive de la densité désirée. Soit $ Z $ un signe aléatoire - c'est-à-dire $ \ {- 1, +1 \} $ avec une probabilité égale. Alors $ X = Z \, \ text {max} (U_1, U_2) $ a la distribution désirée.
3) (suivant la même configuration que dans (2)): Soit $ V = \ sqrt {U_1} $, et attachez-y un signe aléatoire, $ X = Z \, V $. (Ceci utilise la transformation intégrale de probabilité pour obtenir V de la bonne forme.)
Il existe d'innombrables autres approches avec des mélanges variés de commodité et de vitesse. Par exemple, l’approche de (2) peut être utilisée pour générer deux ces variables à la fois, et si la vitesse est primordiale, le bit requis pour un signe aléatoire peut être pris dans l’un des uniformes utilisés. (de préférence avant de normaliser à (0,1), puis le décalage de bits ou un facteur de mise à l'échelle plus petit utilisé pour prendre ce qui reste encore uniforme); cette approche ultérieure pourrait être utilisée dans (3) par exemple, ou dans une version modifiée de (1).