#r #matrix #statistics #probability
#r #матрица #Статистика #вероятность
Вопрос:
Я хочу создать матрицу 100×100 A с записью a_ij, которая выбирается случайным образом из набора {0,1} с P(a_ij = 1) = 0,2 и P (a_ij = 0) = 0,8.
Это то, что я пробовал до сих пор:
n<-100
matrix<-matrix(0,100,100)
mynumbers<-c(1,0)
myprobs<-c(0.2,0.8)
for(i in 1:100){
for (j in 1:100){
matrix[i,j]<-sample(mynumbers, 1, replace=TRUE, prob=myprobs)
}
}
matrix
Я не уверен, что размер выборки равен 1, но этот способ работает только в том случае, если я выбираю size = 1… Это правильный способ сделать это? Заранее благодарю вас!
Комментарии:
1.
sample
векторизовано. для этого вам не нужен цикл или выполнитеmatrix[] <- rbinom(n, mynumbers, prob = myprobs)
Ответ №1:
Как отметил @akrun, есть гораздо более простые способы. Матрица 100 x 100 означает 10000 записей. prob = .2
говорит, что успех = 1 = P (a_ij = 1) = 0,2, size
в данном случае означает одно испытание за раз. matrix
Параметры должны быть довольно очевидными.
set.seed(2020)
trials <- rbinom(n = 10000, size = 1, prob = .2)
my.matrix <- matrix(trials, nrow = 100, ncol = 100)
или для более точного соответствия вашему коду
n <- 10000
mynumbers<-c(1,0)
myprobs<-c(0.2,0.8)
trials2 <- sample(x = mynumbers,
size = n,
replace = TRUE,
prob = myprobs)
my.matrix2 <- matrix(trials2, nrow = 100, ncol = 100)
Комментарии:
1. Спасибо! В чем именно разница между моим способом и вашим вторым методом?
2. Наиболее важным отличием является удаление ненужного цикла for .