0

我想将一个连续随机变量Xwithcdf F(x)变成一个连续随机变量Ywithcdf 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 等等)

4

2 回答 2

7

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.

于 2013-06-27T21:44:46.847 回答
1

通常,您可以通过以下方式将 X 上的观察 x 转换为 Y 上的观察 y

  • 得到X≤x的概率,即F X (x)。
  • 然后确定哪些观察 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结果。

于 2013-06-27T21:53:11.853 回答