Работая в R
, мне нужно создать вектор длины n
со значениями, случайно взятыми из распределения Пуассона с лямбда = 1, но с нижней границей 2 и верхней границей 6 (т.е. все числа будут либо 2,3, 4,5 или 6).
Я не уверен, как это сделать. Я попытался создать цикл for
, который заменял бы любые значения за пределами этого диапазона значениями внутри диапазона:
seed(123)
n<-25 #example length
example<-rpois(n,1)
test<-example #redundant - only duplicating to compare with original *example* values
for (i in 1:length(n)){
if (test[i]<2||test[i]>6){
test[i]<-rpois(1,1)
}
}
Но это, похоже, не сработало (все еще получаю 0, 1 и т. д. в test
). Благодарим за любую идею!
which(example < 2 | example > 6)
дает все индексы для замены. - person Ronak Shah   schedule 16.12.2019X ~ Pois(lambda)
результирующая переменнаяX
не будет иметь распределение Пуассона. - person Maurits Evers   schedule 16.12.2019p = dpois(2:6, 1); sample(2:6, n, replace=TRUE, prob = p/sum(p))
- person user20650   schedule 16.12.2019