2

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

2 回答 2

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
于 2013-10-10T15:58:36.407 回答
0

我已经完成了以下操作 - 它对我有用。

set.seed(123)

活着 <- 100

亩 <- 0.1

样品 <- 10

活着1 <- rbinom(样本,活着,exp(-mu))

活着1

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

于 2013-10-22T15:07:27.233 回答