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