2016-11-23 90 views
2

我在河是新來模擬練習我想從與自由度的分佈創建一個大小爲25的1000個樣本10模擬的T -distributions - 隨機抽樣

我需要建立一個單一的來自rt發生器的數據矢量,然後從中重複採樣?因此,例如,我可以創建矢量:

singlevector <- rt(5000, 10),它可以從t分佈的大小5000和df = 10生成數據。所以,我會將其視爲我的人口,然後從中進行抽樣。我在這裏任意選擇5000人口。

或者,我是否應該每次創建1000個樣本調用這個隨機t生成器?

換句話說,創建一個有25行1000列的矩陣,每列包含對應於新調用rt(25, 10)的向量。

+0

那麼這意味着它適合將這個rt函數作爲一個樣本來處理?隨機數生成器創建的人口是什麼? – LotsOfQuestions

回答

3

由於您採樣獨立,分佈相同的值,所有這三種方法均爲,統計學上相當於

  • 電話隨機數生成器一次以獲得儘可能多(或更多)值比你需要的,然後品嚐該向量無需更換
  • 電話隨機數發生器1000次,每次採摘25個值
  • 調用隨機數發生器一次,採摘25000點的值,則細分載體導入個體樣品爲了(而不是隨機地)

後兩種不只是統計學但計算當量alent。在第一種方法中,樣本的順序變得混亂,但這對統計特性沒有影響。

方法#1:

set.seed(101) 
x1 <- rt(25000,10) 
r1 <- do.call(cbind,split(x1,sample(0:24999) %/% 25)) 

示出#2的等價和#3:

set.seed(101) 
r2 <- replicate(1000, rt(25, 10)) 
set.seed(101) 
r3 <- matrix(rt(25000,10),nrow=25) 
identical(r2,r3) ## TRUE 

在一般的解決方案#3是最快的(但所有這些方法都非常快對於這個數量級的問題,即對於我筆記本電腦上的25×1000個樣本,約5毫秒(#3)對10毫秒(#2));在閱讀代碼時,我會選擇哪種方法最容易理解。