簡體   English   中英

在R中以不同比例模擬離散分布

[英]Simulating a discrete distribution on a different scale in R

我是R新手,有這個問題。 如標題中所述,我已經分發了學生舉報的骰子數量分布。 在此任務中,將給他們分配6個面孔(從1-6開始)的骰子,並要求將其私下投擲。 數據如圖所示。

但是,我想知道是否可以使用此數據來模擬給他們分配10個面(從1-10)的骰子的情況? 如何在R中實現這一目標?

在此處輸入圖片說明

如果要使用現有的六面芯片數據,請第二次嘗試。 我使用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))

在此處輸入圖片說明

要模擬112個學生滾動一個10面骰子並將結果繪制成直方圖,請執行以下操作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM