在 R 中模拟不同尺度的离散分布
Simulating a discrete distribution on a different scale in R
我是 R 的新手,有这个问题。正如标题中提到的,我有一个学生报告的骰子数分布。在这个任务中,他们得到一个有 6 个面(从 1 到 6)的骰子,并被要求私下掷骰子。数据如图所示绘制。
但是,我想知道是否可以使用这些数据来模拟给他们一个有 10 个面(从 1-10)的骰子的情况?我如何在 R 中实现这一点?
模拟 112 名学生掷十面骰子并将结果绘制成直方图:
n=112
res = sample(1:10, size = n, replace = T)
hist(res)
好的,如果您想使用现有的六面骰子数据,请进行第二次尝试。我使用 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))
如果需要,只需将 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)
现在缩放分布以表示十面骰子。
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))
我是 R 的新手,有这个问题。正如标题中提到的,我有一个学生报告的骰子数分布。在这个任务中,他们得到一个有 6 个面(从 1 到 6)的骰子,并被要求私下掷骰子。数据如图所示绘制。
但是,我想知道是否可以使用这些数据来模拟给他们一个有 10 个面(从 1-10)的骰子的情况?我如何在 R 中实现这一点?
模拟 112 名学生掷十面骰子并将结果绘制成直方图:
n=112
res = sample(1:10, size = n, replace = T)
hist(res)
好的,如果您想使用现有的六面骰子数据,请进行第二次尝试。我使用 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))
如果需要,只需将 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)
现在缩放分布以表示十面骰子。
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))