【发布时间】:2014-06-22 05:31:46
【问题描述】:
我需要从混合分布中生成样本
40% 的样本来自 Gaussian(mean=2,sd=8)
20% 的样本来自 Cauchy(location=25,scale=2)
40% 的样本来自 Gaussian(mean = 10, sd=6)
为此,我编写了以下函数:
dmix <- function(x){
prob <- (0.4 * dnorm(x,mean=2,sd=8)) + (0.2 * dcauchy(x,location=25,scale=2)) + (0.4 * dnorm(x,mean=10,sd=6))
return (prob)
}
然后测试:
foo = seq(-5,5,by = 0.01)
vector = NULL
for (i in 1:1000){
vector[i] <- dmix(foo[i])
}
hist(vector)
我得到这样的直方图(我知道这是错误的)-
我做错了什么?谁能指点一下?
【问题讨论】:
-
我只注意到一件事:您可以使用
hist(dmix(seq(-5,5,by = 0.01)))without looping 和vector创建相同的情节 -
你能做一个随机样本的直方图吗?
dmix <- function(x = 100) {prob <- c(rnorm(x * .4, mean = 2, sd = 8), rcauchy(x * .2, location = 25, scale = 2), rnorm(x * .4, mean = 10, sd = 6)); hist(prob)}; dmix() -
@rawr 我可以使用这个 - dmix2
标签: r probability markov-chains mcmc mixture-model