为活着的人数生成随机值以及如何在R中转置数据

时间:2013-10-10 15:46:37

标签: r random sample bernoulli-probability

我有一个关于生成随机样本的问题。我是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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我做了以下事情 - 它对我有用。

  

set.seed(123)

     

alive&lt; - 100

     

mu < - 0.1

     

样本&lt; - 10

     

alive1&lt; - rbinom(sample,alive,exp(-mu))

     

alive1

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