Генерация всех образцов заданного размера с заменой в R - PullRequest
0 голосов
/ 16 апреля 2020

Я хочу сгенерировать все выборки размером n = 2 с заменой из следующих данных, а затем распечатать выборочное распределение выборочных средних. Я хочу знать, есть ли для этого какая-либо стандартная библиотека R?

Это то, что я пробовал.

library(graphics)
data <- c(10, 12, 14, 16); n <- length(data)
mp <- vector(mode="numeric", length = 100)
for(i in data) {
  for(j in data) {
    mu <- mean(c(i, j))
    mp[mu] <- mp[mu] + 1
    tot <- tot + 1
    }
}
X_bar <- vector()
P_Xbar <- vector()
for(i in 1:length(mp)) {
  if(mp[i]) {
    X_bar <- c(X_bar, i)
    P_Xbar <- c(P_Xbar, mp[i] / tot)  
  }
}
tab <- data.frame(x <- X_bar, y <- P_Xbar); tab
barplot(tab$y * tot, names.arg=tab$x)

Я думаю, что я делаю много ненужных вещей, можем ли мы сделать это с использованием любой стандартной библиотеки R?

1 Ответ

0 голосов
/ 16 апреля 2020

Чтобы получить образцы размера n с заменой

dataset = 1:100

sample(dataset, size = 2, rep=T)

Чтобы получить средства для N образцов

N = 1000

means = replicate(N, mean(sample(dataset, 2, rep=T)))

Чтобы построить средства

hist(means)

Хорошо, я см. из вашего комментария вы хотите все возможные n = 2 перестановки данных. Это может быть достигнуто с помощью:

library(gtools)
x = permutations(n=3, r=2, v=1:3, repeats.allowed=T)
# n = size of sampling vector 
# r = size of samples 
# v = vector to sample from 

Это дает вам матрицу с каждой возможной перестановкой, включая повторы:

      [,1] [,2]
 [1,]    1    1
 [2,]    1    2
 [3,]    1    3
 [4,]    2    1
 [5,]    2    2
 [6,]    2    3
 [7,]    3    1
 [8,]    3    2
 [9,]    3    3

Для вычисления средних значений этого вектора вы можете использовать:

rowMeans(x)
...