R语言生成随机数问题

R语言。如何可以在已知一个概率分布的情况下,生成满足这个概率分布的随机数组。这个概率分布不在系统自带的概率分布里面。
可不可以举个例子,比如就限定你只能利用生成均匀分布这个功能,来生成一些满足指数分布的随机数。当然我只能系统有自带指数分布,就是问。直接复制粘贴code就好,谢谢。我应该可以看懂。

一般地,如果你已知一个连续随机变量X的cdf F_X(x)(=P(X<=x))的话,那么F^(-1)(U)(F^(-1)为F的反函数)就符合这个分布(U为(0,1)上的均匀分布),反之亦然。证明很简单,就是直接套定义。
所以你可以写出来F^(-1)这个函数(比如说自定义函数名为FInverse),然后生成随机数组:
randomSequence<-FInverse(runif(n))
对于指数分布来说,
FInverse<-function(p,lambda=1){
-log(1-p)/lambda
}
离散随机变量类似吧。。。
当然,前提是你能写出来F^(-1)。。。(所以我老师说这个方法没啥用。。。)有的分布不好写F^(-1),但是有一些比较巧妙的办法(比如正态分布),这种应该就只能具体问题具体分析了。追问

回答很好,我明白了。这种方法比较好理解,你能再说说怎么来用rejection那种方法吗?就是通过一个已知的分布,来与目标那个分布比较,在范围内保留,不在范围内reject那个方法?你会么?就是关于指数的我没太想出来,或者模拟结果差很多,感觉问题出在找到已知分布并且要大于等于目标分布那个分布。如果是均匀的话,感觉范围有点奇怪。

追答

没太看懂你后面的问题。。。
以我的渣水平看,应该只能具体情况具体分析了吧。光是检验样本是不是符合正态分布都有一大堆不同的方法,更不用说其他的分布了。现在想到的思路是这样的:

你感觉样本和null hypothesis的分布有出入,就着重看一下是什么方面和那个分布不一样,然后算一下在承认null hypothesis正确的前提下出现观察到的情况(或者更“极端”)的概率是多少(就是p-value),如果太小就可以说在多少confidence level下决定reject null hypothesis,否则就另想办法了。

温馨提示:答案为网友推荐,仅供参考
相似回答