R语言中知道分布函数怎样产生随机变量;如果还知道cdf呢

提供一个思路,不知道是不是符合你这个问题的要求。Simulation里有两种简单的方法产生随机数。第一种是acceptance-rejection method,第二种是inverse transformation method。两种方法都要先从pdf求出cdf(之后记为R语言中知道分布函数怎样产生随机变量;如果还知道cdf呢
)第一种方法的算法是:1.产生两个uniform random variable u1,u2.2.检查是否有 【R语言中知道分布函数怎样产生随机变量;如果还知道cdf呢】 R语言中知道分布函数怎样产生随机变量;如果还知道cdf呢
, 其中g(x)是自选的instrumental distribution, M是f(x)/g(x)的最大值。3.如果 (2) 成立,产生f(u2); 不成立则返回 (1).第二种的思路是(懒得写了,直接抄了书上原话):Let U be a uniform (0, 1) random variable. For any continuous distribution function F the random variable X defined byR语言中知道分布函数怎样产生随机变量;如果还知道cdf呢
has distribution F. 具体的细节刚才查了下在wiki的Rejection sampling和Inverse transform sampling的词条下都有详细解释,可以参考一下。
■网友
谢邀,为啥邀请我...我很懒的,而且不喜欢重复劳动,可不可以把我上课的讲义放上,并且加了自己的备注。如果你能看得了的话...

R语言中知道分布函数怎样产生随机变量;如果还知道cdf呢

逆变换方法极其主观解释上图最后的直观解释,可以在一篇CSDN博客上找到。

■网友

如果是一维的话,而且pdf属于容易计算数值,但不方便sampling的分布函数的那种,可以采用rejection sampling。基本思路就是选取一个容易sample的pdf——g(x)。先根据g(x) sample,再根据f(x)/g(x)来从得到的点中进行筛选,保留下的点就符合f(x)对应的分布,一般要选取比f(x)更长尾的分布作为g(x)。

另外还有一些技巧,适用于一些特定的f(x)。比如引入一个新的随机变量y,两个conditional distribution y|x,x|y比较好sample, 根据conditional distribution不断sample {x,y}组合,这样得到的x的边缘分布就是想要的分布。我觉得还是rejection sampling更general一点。

如果是高维的话,可以采用Gibbs Sampler或者Metropolis Hasting等诸多MCMC方法。

具体可参考Computational Statistics,Chapter 6,7
Computational Statistics, by G. H. Givens and J. A. Hoeting

■网友
谢邀。不懂R,但是懂一点概率论。有这样一个命题,如果X服从上的均匀分布,给定一个满足某些条件的函数F,那么一定存在Borel可测函数f,使得f(X)的分布函数是F.这个命题的证明是构造性的,应该可以直接用程序实现.


    推荐阅读