Повторная выборка вектора выборки несколько раз в R - PullRequest
1 голос
/ 27 марта 2020

Допустим, у меня есть вектор y длины 100. Я хочу выбрать 95 значений из y без замены и взять среднее значение этой выборки. Затем из нового вектора я хочу взять 90 значений и взять среднее значение этого вектора. Я хочу сделать это 20 раз. В конце мой результат должен быть вектором длины 20, каждый из которых является средним значением выборки.

Я думаю, что для l oop будет работать для этого, но я не могу понять это.

Ответы [ 3 ]

2 голосов
/ 27 марта 2020

Вот одна версия с простым использованием Reduce:

x  <- rnorm(100)
ss <- seq(95, 5, -5)

draws <- Reduce(sample, ss, x, accumulate=TRUE)
means <- sapply(draws, mean)

Или в одной строке:

means <- sapply(Reduce(sample, seq(95, 5, -5), rnorm(100), accumulate=TRUE), mean)
2 голосов
/ 27 марта 2020
ss = seq(from = 95, to = 20, by = -5)
r = length(ss)
i = 1
x = rnorm(100)
for(sampSize in ss){
  x = sample(x, size = sampSize)
  r[i] = mean(x)
  i = i + 1
}
0 голосов
/ 28 марта 2020

Вы можете использовать mapply.

set.seed(42)
x <- rnorm(100); s <- c(19:1*5,1)

(res <- mapply(function(x, ...) mean(sample(x, ...)), list(x), s))
# [1]  0.07869899  0.04229915  0.03902743  0.01012935  0.05068990 -0.06091937
# [7]  0.01686019  0.15820150  0.03205169 -0.08031480 -0.25243403 -0.14227557
# [13] -0.08546622  0.09478834 -0.13369267  0.09708245  0.20528372  0.17391816
# [19] -0.54889423 -0.36105730

Обратите внимание, что:

length(res) == length(s)
# [1] TRUE
...