R语言生成随机数问题
答案:1 悬赏:10 手机版
解决时间 2021-01-17 11:35
- 提问者网友:活着好累
- 2021-01-16 19:00
R语言生成随机数问题
最佳答案
- 五星知识达人网友:枭雄戏美人
- 2021-01-16 19:20
一般地,如果你已知一个连续随机变量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,否则就另想办法了。
所以你可以写出来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,否则就另想办法了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯