逆变换方法如何工作?


21

反转方法如何工作?
说我有一个随机样本与密度在,因此cdf在。然后通过反演方法,我得到的分布为。 f x ; θ = 1X1,X2,...,Xn 0<X<1˚FXX=X1/θ01X˚F - 1 XÛ=Üθf(x;θ)=1θx(1θ)θ
0<x<1FX(x)=x1/θ(0,1)XFX1(u)=uθ

那么是否具有的分布?这是反演方法的工作方式吗? XuθX

u<-runif(n)
x<-u^(theta)

3
有关概率积分变换,请参见我们的主题。
ub

1
是的,尽管通常将其称为“概率积分变换”。尝试导出的分布函数,以了解其工作原理。F1(U)
dsaxton,2015年

Answers:


20

该方法非常简单,因此我将用简单的词来描述它。首先,采用要从中采样的某些分布的累积分布函数 。该函数将一些值作为输入,并告诉您获得的概率是多少。所以FXxXx

FX(x)=Pr(Xx)=p

该函数的函数将作为输入并返回。请注意,的均匀分布 -这可以用于从任何取样如果你知道。该方法称为逆变换采样。这个想法很简单:很容易从统一采样值,因此,如果要从某些采样,只需取值并将传递给获得的 p X p ˚F X ˚F - 1 X ü 0 1 ˚F X ù ù 0 1 Ü ˚F - 1 X XFX1pxpFXFX1U(0,1)FXuU(0,1)uFX1x

FX1(u)=x

或R(用于正态分布)

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

为了将其可视化,请看下面的CDF,通常,我们考虑从轴看轴值的概率的分布。使用这种采样方法,我们做相反的事情,从“概率”开始,然后使用它们来选择与它们相关的值。与离散分布你把如从线到和分配值基于其中做了一些点在这条线位于(例如如果或,如果用于从取样)。x U 0 1 uyxU01u0 Ü < 0.5 1 0.5 ù 1个Ë ř Ñ Ò ù 0.5 00u<0.510.5u1Bernoulli(0.5)

在此处输入图片说明

不幸的是,这并非总是可能的,因为并非每个函数都有其逆函数,例如,您不能对双变量分布使用此方法。它也不一定在所有情况下都是最有效的方法,在许多情况下,存在更好的算法。

您还要询问的分布是什么。由于是的逆,则且,所以,使用这种方法与具有相同的分布。您可以通过简单的模拟检查F 1 X F X F XF 1 Xu = u F 1 XF Xx = x XFX1(u)FX1FXFX(FX1(u))=uFX1(FX(x))=xX

U <- runif(1e6)
all.equal(pnorm(qnorm(U)), U)

好答案。当您具有指数分布,柯西分布,几何分布,帕累托分布,逻辑分布,极值威布尔分布等时,此方法有效。例如,找不到正态分布的闭合形式。因此,您将无法使用此方法。您可以尝试其他方法,例如拒绝方法
阿巴斯·萨利米

2
您可以对正态分布使用逆变换方法。正常的逆CDF有很多实现方式。例如,您可以使用互补误差函数编写正态CDF逆。erfc的示例实现在这里。不要自己编写erfc。使用图书馆。没有封闭的形式存在公式不意味着你不能使用高品质的数值逼近。
马修·冈恩

2

是的,具有的分布。 XUθX

关于逆变换方法背后的直觉的另外两个点可能会有用

(1)为了理解实际含义,请参考蒂姆答案中的图表以帮助我理解分位数(CDF逆函数)F1

(2)[如果带来更多的混乱而不是清晰,请忽略以下内容]

令为cdf连续且严格增加的任何随机变量(rv)。然后 上的符号说明:是因此,一个RV,RV的函数,是一个RV本身。 ˚F ˚F X UNIF 0 1 X X ˚F X XF

F(X)Unif(0,1)

XXF(X)

例如,如果您要翻转问题,以便可以访问并想要生成标准的制服,则。我们称这个随机变量。因此, 现在回到你的问题,你有相反的任务:产生出。因此,实际上 X 1 / θUNIF 0 1 Ü Ü = X 1 / θ X Ù X = û θXX1/θUnif(0,1)U

U=X1/θ
XU
X=Uθ

PS。该方法的替代名称是概率积分变换,逆变换采样,分位数变换,在某些情况下还包括“模拟的基本定理”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.