Comment fonctionne la méthode de transformation inverse?

21

Comment fonctionne la méthode d'inversion?
Disons que j'ai un échantillon aléatoire de densité f (x; \ theta) = {1 \ over \ theta} x ^ {(1- \ theta) \ over \ theta} over 0 <x <1 et donc avec cdf F_X (x) = x ^ {1 / \ theta} sur (0,1) . Ensuite, par la méthode d'inversion, j'obtiens la distribution de X comme F_X ^ {- 1} (u) = u ^ \ theta . X1,X2,...,Xnf(x;θ)=1θx(1θ)θ
0<x<1FX(x)=x1/θ(0,1)XFX1(u)=uθ

Est-ce que uθ a la distribution de X ? Est-ce ainsi que fonctionne la méthode d'inversion?

u<-runif(n)
x<-u^(theta)
clarkson
la source
3
Voir nos discussions sur la transformation intégrale de probabilité .
whuber
1
Oui, bien qu'on l'appelle généralement la "transformation intégrale de probabilité". Essayez de dériver la fonction de distribution de F1(U) pour voir pourquoi cela fonctionne.
dsaxton

Réponses:

20

La méthode est très simple, je vais donc la décrire en termes simples. Tout d'abord, prenez la fonction de distribution cumulative FX d'une distribution à partir de laquelle vous souhaitez échantillonner. La fonction prend en entrée une valeur x et vous indique quelle est la probabilité d'obtenir Xx . Donc

FX(x)=Pr(Xx)=p

inverse d'une telle fonction fonction, prendrait comme entrée et renverrait . Notez que s » sont uniformément distribués - ce qui pourrait être utilisé pour l' échantillonnage de tout si vous connaissez . La méthode est appelée l' échantillonnage par transformée inverse . L'idée est très simple: il est facile d'échantillonner uniformément des valeurs à partir de , donc si vous voulez échantillonner à partir de certains , prenez simplement les valeurs et passez par pour obtenir « s p x p F X F - 1 XFX1pxpFXFX1F X u U ( 0 , 1 ) u F - 1 X xU(0,1)FXuU(0,1)uFX1x

FX1(u)=x

ou en R (pour une distribution normale)

U <- runif(1e6)
X <- qnorm(U)

Pour le visualiser, regardez CDF ci-dessous, généralement, nous pensons aux distributions en termes de recherche de l' axe pour les probabilités des valeurs de l' axe . Avec cette méthode d'échantillonnage, nous faisons le contraire et commençons par les «probabilités» et les utilisons pour choisir les valeurs qui leur sont liées. Avec des distributions discrètes, vous traitez comme une ligne de à et attribuez des valeurs en fonction de l'endroit où se situe un point sur cette ligne (par exemple, si ou si pour l'échantillonnage à partir de ).x U 0 1yxU010 0 u < 0,5 1 0,5 u 1 B e r n o u l l i ( 0,5 )u00u<0.510.5u1Bernoulli(0.5)

entrez la description de l'image ici

Malheureusement, cela n'est pas toujours possible car toutes les fonctions n'ont pas leur inverse, par exemple, vous ne pouvez pas utiliser cette méthode avec des distributions bivariées. Il ne doit pas non plus être la méthode la plus efficace dans toutes les situations, dans de nombreux cas, de meilleurs algorithmes existent.

Vous demandez également quelle est la distribution de . Puisque est un inverse de , alors et , donc oui, les valeurs obtenues en utilisant ce procédé possède la même distribution que . Vous pouvez le vérifier par une simple simulationF - 1 X F X F X ( F - 1 X ( u ) ) = u F - 1 X ( F X ( x ) ) = x XFX1(u)FX1FXFX(FX1(u))=uFX1(FX(x))=xX

U <- runif(1e6)
all.equal(pnorm(qnorm(U)), U)
Tim
la source
Bonne réponse. Cette méthode fonctionne lorsque vous avez des distributions telles que exponentielle, Cauchy, géométrique, Pareto, logistique, Extreme Value Weibull , etc. Par exemple, vous ne pouvez pas trouver une forme fermée pour une distribution normale . Par conséquent, vous ne pourrez pas utiliser cette méthode. Vous pouvez essayer d'autres méthodes telles que la méthode de rejet .
Abbas Salimi
2
Vous pouvez utiliser la méthode de transformation inverse avec la distribution normale. Il existe de nombreuses implémentations pour le CDF inverse normal . Par exemple, vous pouvez écrire un CDF inverse normal à l'aide de la fonction d'erreur complémentaire . Un exemple d'implémentation de erfc est ici . Ne codez pas erfc vous-même; utiliser une bibliothèque. L'absence de formule fermée ne signifie pas que vous ne pouvez pas utiliser d'approximations numériques de haute qualité.
Matthew Gunn
2

Oui, a la distribution de . XUθX

Deux points supplémentaires sur l'intuition derrière la méthode de transformation inverse pourraient être utiles

(1) Afin de comprendre ce que signifie réellement, veuillez vous référer à un graphique dans la réponse de Tim pour m'aider à comprendre la fonction quantile (CDF inverse)F1

(2) [S'il vous plaît, ignorez simplement ce qui suit, si cela apporte plus de confusion au lieu de clarté]

Soit une variable aléatoire (rv) avec un cdf continu et strictement croissant . Alors Remarque sur la notation: est un rv Par conséquent, la fonction de rv , est un rv lui-même. F F ( X ) Unif ( 0 , 1 ) X X F ( X )XF

F(X)Unif(0,1)

XXF(X)

Par exemple, si vous renversiez la question, afin d'avoir accès à et que vous vouliez générer un uniforme standard, alors . Laissez appeler cette variable aléatoire . Alors Pour revenir à votre question, vous avez la tâche inverse: pour générer sur . Donc, en effet X 1 / θUnif ( 0 , 1 ) U U = X 1 / θ X U X = U θXX1/θUnif(0,1)U

U=X1/θ
XU
X=Uθ

PS. Les noms alternatifs de la méthode sont la transformation intégrale de probabilité, l'échantillonnage par transformation inverse, la transformation quantile et, dans certaines sources, "le théorème fondamental de la simulation".

den2042
la source