在R中模拟不同尺度的离散分布

时间:2017-11-25 06:06:10

标签: r distribution discrete-mathematics

我是R的新手并且有这个问题。如标题中所述,我有学生报告的骰子数量分布。在这个任务中,他们被给予一个有6个面孔(从1-6)的骰子,并被要求私下扔它。数据如图所示绘制。

然而,我想知道我是否有可能使用这些数据来模拟他们被给予一个有10个面孔的骰子的情况(从1-10)?我怎样才能在R?

中实现这一目标

enter image description here

2 个答案:

答案 0 :(得分:1)

如果您想使用现有的六面芯片数据,请进行第二次尝试。我使用sn软件包将偏斜的正态分布拟合到现有数据,然后将其缩放以表示十边模具,并使用round使其离散。

首先,我将模拟您的数据

set.seed(9999)
n=112
a = rnorm( 42, 3, 1 )
b = rnorm( 70, 5, 0.5 )
dat = round(c( a, b))
dat[!(dat %in% 1:6)] = NA
dat=dat[complete.cases(dat)]

hist(dat,breaks = seq(0.5, 6.5,1), col = rgb(0,0,1,0.25))

enter image description here

如果需要,只需将dat设置为现有数据。

现在使用sn包来对分发进行参数化。 (如果您愿意,可以尝试适合其他发行版)

require(sn)
cp.est = sn.mple(y=dat,opt.method = "nlminb")$cp 
dp.est = cp2dp(cp.est,family="SN")

##example to sample from the distribution and compare to existing
sim = rsn(n, xi=dp.est[1], omega=dp.est[2], alpha=dp.est[3])
sim = round(sim)
sim[!(sim %in% 1:6)] = NA
hist(sim,breaks = seq(0.5, 6.5,1), col = rgb(1,0,0,0.25), add=T)

enter image description here

现在缩放分布以表示十面骰子。

sim = rsn(n, xi=dp.est[1], omega=dp.est[2], alpha=dp.est[3])/6*10
sim <- round(sim)
sim[!(sim %in% 1:10)] = NA
hist(sim,breaks = seq(0.5, 10.5,1), col = rgb(0,1,0,0.25))

enter image description here

答案 1 :(得分:0)

模拟112名学生滚动十面骰子并以直方图绘制结果:

n=112
res = sample(1:10, size = n, replace = T)
hist(res)