R语言:逆变换法生成密度函数的随机变量

Posted 方舟aark

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R语言:逆变换法生成密度函数的随机变量相关的知识,希望对你有一定的参考价值。

在我的文章中,有关于逆变换法生成随机变量的。但是,关于逆变量法还有一种应用,就是根据密度函数生成随机变量。

我们以下面的密度函数为例子:

f ( x ) = 5 2 ∗ e [ − 5 2 ( x − 2 ) ] , x ≥ 2 f(x)=\\frac52*e[-\\frac52(x-2)] , x\\geq 2 f(x)=25e[25(x2)],x2

我们根据概率论知识,将之积分获得其累积分布函数,并设为U:

U = − e ∗ ( − 5 2 ( x − 2 ) ) U=-e*(-\\frac52(x-2)) U=e(25(x2))

进而逆变换为:

x = 2 − 2 5 ∗ l o g ( − U ) x=2-\\frac25*log(-U) x=252log(U)

由于U的取值范围为[-1,0),由此,我们只需要在r语言程序中随机生成一个在-1到0的数,另其为U,就可以获得x的值。

代码:

q =  function(n) 
  u = runif(n,min=-1,max=0)
  x = 2 - (2/5)*log(-u)
  x

以上是关于R语言:逆变换法生成密度函数的随机变量的主要内容,如果未能解决你的问题,请参考以下文章

谁知道利用逆变换法(反变换法),用matlab编程正态分布随机变量随机数?

逆分布函数法生成随机数(指数分布) R语言实现

R语言:筛选法

R语言:筛选法

R语言:作业七(创建随机变量函数)

《R语言实战》自学笔记26-概率函数