我想将一个连续随机变量X
withcdf
F(x)
变成一个连续随机变量Y
withcdf
F(y)
并且想知道如何在 R 中实现它。
例如,对服从正态分布 (X) 的数据执行概率变换,使其符合理想的 Weibull 分布 (Y)。
(x=0 有 CDF F(x=0)=0.5,CDF F(y)=0.5 对应 y=5,然后 x=0 对应 y=5 等等)
我想将一个连续随机变量X
withcdf
F(x)
变成一个连续随机变量Y
withcdf
F(y)
并且想知道如何在 R 中实现它。
例如,对服从正态分布 (X) 的数据执行概率变换,使其符合理想的 Weibull 分布 (Y)。
(x=0 有 CDF F(x=0)=0.5,CDF F(y)=0.5 对应 y=5,然后 x=0 对应 y=5 等等)
There are many built in distribution functions, those starting with a 'p' will transform to a uniform and those starting with a 'q' will transform from a uniform. So the transform in your example can be done by:
y <- qweibull( pnorm( x ), 2, 6.0056 )
Then just change the functions and/or parameters for other cases.
The distr package may also be of interest for additional capabilities.
通常,您可以通过以下方式将 X 上的观察 x 转换为 Y 上的观察 y
即您希望概率 Y≤y = F Y (y) 与 F X (x) 相同。
这给出了 F Y (y) = F X (x)。
因此 y = F Y -1 (F X (x))
其中 F Y -1被称为分位数函数 Q Y。从 X 到 Y 的整体转换总结为:Y = Q Y (F X (X))。
在您的特定示例中,从 R 帮助中,正态分布的分布pnorm
函数为 ,威布尔分布的分位数函数为qweibull
,因此您首先要调用pnorm
,然后再调用qweibull
结果。