生成给定大小的所有样本,并在 R 中进行替换
Generate all samples of given size with replacement in R
我想从以下数据生成大小为 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 库来做到这一点吗?
通过替换获得大小为 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)
我想从以下数据生成大小为 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 库来做到这一点吗?
通过替换获得大小为 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)