2013-10-10 42 views
2

我有一個關於生成隨機樣本的問題。我對R非常陌生,並試圖做我自己的模擬,但我不知道它是否正確。真的希望有人能幫助我。生成隨機值的人數和如何轉置數據R

例如,目前有100人活着。基本上,每個人要麼在現在和下一個週期之間以0.5的概率死亡,要麼以0.5的概率生存到下一個階段 - 即成功概率爲0.5的伯努利試驗。

我想生成20個樣本來獲取明年的活着人數。所以我做了以下。

#number of people alive at time k 
alive <- 100 

#generate 20 samples to find number of people alive next period 
alive1 <- rbinom(20,alive,0.5)  

#generating result from r 
alive1 
[1] 75 70 69 70 73 65 69 73 72 77 73 68 69 72 71 70 70 62 73 73 

是不是?

以及如何轉置我的數據在R?目前我的數據在行中;看起來是這樣的: -

[1] 75 70 69 70 73 65 69 73 72 77 73 68 69 72 71 70 70 62 73 73 

如何將其更改爲一列,例如:

[1] 75  
[2] 70  
[3] 69  
.... 

[20] 73 

回答

3

你的代碼是正確的,但你得到的輸出是不正確的,因爲平均值是太遠不及50來自二項分佈。所以我不認爲你的alive1實際上是由你寫的代碼生成的。下面是一個比較典型的例子:

set.seed(123) 
alive<-100 
alive1<-rbinom(20,alive,0.5) 
alive1 
## [1] 49 50 46 61 44 54 48 54 59 46 54 54 49 55 52 50 48 47 56 46 

如果你想把它當作一個列向量(即一列的矩陣),你可以調用as.matrix

alive1<-as.matrix(alive1) 
alive1 
##  [,1] 
## [1,] 49 
## [2,] 50 
## [3,] 46 
## [4,] 61 
## [5,] 44 
## [6,] 54 
## [7,] 48 
## [8,] 54 
## [9,] 59 
## [10,] 46 
## [11,] 54 
## [12,] 54 
## [13,] 49 
## [14,] 55 
## [15,] 52 
## [16,] 50 
## [17,] 48 
## [18,] 47 
## [19,] 56 
## [20,] 46 
+0

u能解釋爲什麼在命令 「set.seed(123)」 在這裏需要的? – NSAA

+1

這不是必需的。這只是設置隨機種子,做一個可重複的例子,以便如果你或其他人運行代碼,你應該得到完全相同的輸出。 – mrip

0

我已經做了以下的 - 它的工作原理爲了我。

set.seed(123)

活着< - 100

畝< - 0.1

樣品< - 10

alive1 < - rbinom(樣品,活的,EXP (-mu))

alive1

[1] 92 88 91 87 86 95 90 87 90 91