2013-10-10 21 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