全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
8676 7
2008-11-04

请教各位高手:

如果我的混合分布为:F(x)=0.4*N(1,0.5)+0.6*N(3,2)

在用r进行模拟数据时,我按p=0.4的概率生成一个两点分布,即z=rbinom(1,1,0.4),如果z=1 就按正态分布N(1,0.5)

生成数据,否则就按后一个正态分布产生随机数.

这样产生的数据和按用均匀分布做判断属于哪个分布有区别吗?

我这种生成方法有问题吗?

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2008-11-4 11:25:00

您描述的做法应该和您所列分布式F(x)=0.4*N(1,0.5)+0.6*N(3,2)不符。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2008-11-4 15:50:00
那我应该怎样产生哩?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2008-11-8 18:40:00

u<-runif(1)

x<- ifelse(u<0.4,rnorm(1,1,0.5),rnorm(1,3,2))

x即为所求。

你的做法也没错阿!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2008-11-10 19:33:00
应该是,
u<-runif(1)
x<- ifelse(u<0.4,rnorm(1,1,sqrt(0.5)),rnorm(1,3,sqrt(2)))才对。
顺便画一下这个分布的密度图,是双峰的(可惜,粘不过来啊):
> x=numeric()
> for(i in 1:100){
+    r=runif(1)
+    x=ifelse(r<.4,rnorm(1,1,sqrt(.5)),rnorm(1,3,sqrt(2)))
+ }
> x[1:10]
 [1] 3.022763 1.957792 4.262181 4.385198 3.152192 2.354907 4.813142 1.008566
 [9] 1.359688 2.385755
> plot(density(x))
>
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2008-11-10 20:38:00
我收回我在2楼做的臆断,LZ的做法是正确的。原本是一个简单的simulation,最近比较常犯糊涂,还请LZ多多原谅。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群