根据复制的二项式分布比例制作每行两个变量的矩阵
Make a matrix of two variables each row from replicating binomial distribution proportion
所以...我有一些问题...
我正在使用 R 模拟 n=10 和 p=0.6、大小为 1 的二项分布,然后计算我得到了多少个 1 和 0,这个模拟应该重复 200 次,从而取一个200行2列的矩阵,第一列1的个数,第二列0的个数
我定义了一个函数:
binom10.2 <- function(i){
x <- rbinom(10,1,0.6)
y <- as.vector(table(x))
return(y)
}
这给了我这样的结果:
> binom10.2(i)
[1] 5 5
> binom10.2(i)
[1] 7 3
> binom10.2(i)
[1] 5 5
> binom10.2(i)
[1] 4 6
我需要这个结果,在矩阵中复制 200 次,如下所示:
[,1] [,2]
[1,] 1 9
[2,] 7 3
[3,] 5 5
[4,] 4 6
[5,] 2 8
[6,] 5 5
[7,] 4 6
[8,] 4 6
[9,] 5 5
[10,] 3 7
[11,] 1 9
[12,] 3 7
[13,] 4 6
[14,] 5 5
[15,] 2 8
问题是,我写这段代码是为了得到它:
proportions10 <- t(sapply(1:200, binom10.2)
proportions10 <- t(replicate(200, binom10.2(i)))
我认为这两种方式是相同的,但是,当 运行同时使用这两种方式时,我有时会得到所需的矩阵,有时会得到一个列表,如下所示:
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,21] [,22] [,23] [,24] [,25] [,26] [,27] [,28] [,29] [,30]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,31] [,32] [,33] [,34] [,35] [,36] [,37] [,38] [,39] [,40]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,41] [,42] [,43] [,44] [,45] [,46] [,47] [,48] [,49] [,50]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,51] [,52] [,53] [,54] [,55] [,56] [,57] [,58] [,59] [,60]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,61] [,62] [,63] [,64] [,65] [,66] [,67] [,68] [,69] [,70]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,71] [,72] [,73] [,74] [,75] [,76] [,77] [,78] [,79] [,80]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,81] [,82] [,83] [,84] [,85] [,86] [,87] [,88] [,89] [,90]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,91] [,92] [,93] [,94] [,95] [,96] [,97] [,98] [,99] [,100]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,101] [,102] [,103] [,104] [,105] [,106] [,107] [,108] [,109] [,110]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,111] [,112] [,113] [,114] [,115] [,116] [,117] [,118] [,119] [,120]
对我来说,有时候,根据我 运行 代码的次数,我得到了第一个所需的矩阵,而在其他时候,我得到了第二个列表,这毫无意义。我希望第一个矩阵总是出现,无论我 运行 代码多少次...
有人能帮忙吗?
1
的总和显示每次复制的成功次数。从 10
中减去该数字得出失败的数字。
这是我的方法:
x = replicate(200, expr={sum(rbinom(10, 1, .6))})
m = matrix(0, nrow=200, ncol=2)
m[,2]=x
m[,1]=10-x
试试这个:
# define parameters
n <- 10 # number of trials
p <- 0.6 # probability of success
nexp <- 200 # number of experiments
# run the simulation
res <- replicate(200, rbinom(1, size=n, prob=p))
cbind(res, n-res)
获取输出:
res
[1,] 7 3
[2,] 8 2
[3,] 6 4
[4,] 7 3
[5,] 5 5
[6,] 6 4
这里不需要replicate
。 rbinom(n, size, prob)
直接给你 n
独立试验的成功次数。您需要 n = 200
个观察结果:每个观察结果都是 size = 10
的试验,而 prob
是 0.6
。
r <- rbinom(200, 10, 0.6)
由于您希望在矩阵中使用第二列 = 观察到的零数:从 10 中减去 r
以获得第二列:
bin10.2 <- matrix(c(r, 10 - r), nrow = 200)
所以...我有一些问题...
我正在使用 R 模拟 n=10 和 p=0.6、大小为 1 的二项分布,然后计算我得到了多少个 1 和 0,这个模拟应该重复 200 次,从而取一个200行2列的矩阵,第一列1的个数,第二列0的个数
我定义了一个函数:
binom10.2 <- function(i){
x <- rbinom(10,1,0.6)
y <- as.vector(table(x))
return(y)
}
这给了我这样的结果:
> binom10.2(i)
[1] 5 5
> binom10.2(i)
[1] 7 3
> binom10.2(i)
[1] 5 5
> binom10.2(i)
[1] 4 6
我需要这个结果,在矩阵中复制 200 次,如下所示:
[,1] [,2]
[1,] 1 9
[2,] 7 3
[3,] 5 5
[4,] 4 6
[5,] 2 8
[6,] 5 5
[7,] 4 6
[8,] 4 6
[9,] 5 5
[10,] 3 7
[11,] 1 9
[12,] 3 7
[13,] 4 6
[14,] 5 5
[15,] 2 8
问题是,我写这段代码是为了得到它:
proportions10 <- t(sapply(1:200, binom10.2)
proportions10 <- t(replicate(200, binom10.2(i)))
我认为这两种方式是相同的,但是,当 运行同时使用这两种方式时,我有时会得到所需的矩阵,有时会得到一个列表,如下所示:
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,21] [,22] [,23] [,24] [,25] [,26] [,27] [,28] [,29] [,30]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,31] [,32] [,33] [,34] [,35] [,36] [,37] [,38] [,39] [,40]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,41] [,42] [,43] [,44] [,45] [,46] [,47] [,48] [,49] [,50]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,51] [,52] [,53] [,54] [,55] [,56] [,57] [,58] [,59] [,60]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,61] [,62] [,63] [,64] [,65] [,66] [,67] [,68] [,69] [,70]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,71] [,72] [,73] [,74] [,75] [,76] [,77] [,78] [,79] [,80]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,81] [,82] [,83] [,84] [,85] [,86] [,87] [,88] [,89] [,90]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,91] [,92] [,93] [,94] [,95] [,96] [,97] [,98] [,99] [,100]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,101] [,102] [,103] [,104] [,105] [,106] [,107] [,108] [,109] [,110]
[1,] Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2 Integer,2
[,111] [,112] [,113] [,114] [,115] [,116] [,117] [,118] [,119] [,120]
对我来说,有时候,根据我 运行 代码的次数,我得到了第一个所需的矩阵,而在其他时候,我得到了第二个列表,这毫无意义。我希望第一个矩阵总是出现,无论我 运行 代码多少次...
有人能帮忙吗?
1
的总和显示每次复制的成功次数。从 10
中减去该数字得出失败的数字。
这是我的方法:
x = replicate(200, expr={sum(rbinom(10, 1, .6))})
m = matrix(0, nrow=200, ncol=2)
m[,2]=x
m[,1]=10-x
试试这个:
# define parameters
n <- 10 # number of trials
p <- 0.6 # probability of success
nexp <- 200 # number of experiments
# run the simulation
res <- replicate(200, rbinom(1, size=n, prob=p))
cbind(res, n-res)
获取输出:
res
[1,] 7 3
[2,] 8 2
[3,] 6 4
[4,] 7 3
[5,] 5 5
[6,] 6 4
这里不需要replicate
。 rbinom(n, size, prob)
直接给你 n
独立试验的成功次数。您需要 n = 200
个观察结果:每个观察结果都是 size = 10
的试验,而 prob
是 0.6
。
r <- rbinom(200, 10, 0.6)
由于您希望在矩阵中使用第二列 = 观察到的零数:从 10 中减去 r
以获得第二列:
bin10.2 <- matrix(c(r, 10 - r), nrow = 200)