【问题标题】:Generate all samples of given size with replacement in R在R中生成所有给定大小的样本并替换
【发布时间】:2020-07-29 12:20:20
【问题描述】:

我想从以下数据中生成所有大小为 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 库来做到这一点吗?

【问题讨论】:

    标签: r statistics probability distribution sample


    【解决方案1】:

    通过替换获得大小为 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)
    

    【讨论】:

    • 感谢亚当的回答。但我想从这些数据中选择所有样本: (10, 12, 14, 16) of size = 2。因此,样本可能看起来像这样:(10, 10), (10, 12), (10, 14), (10, 16), (12, 10), (12, 12), (12, 14), (12, 16), (14, 10), (14, 12), (14, 14) , (14, 16), (16, 10), (16, 12), (16, 14), (16, 16)。
    猜你喜欢
    • 1970-01-01
    • 2013-04-25
    • 2021-12-18
    • 2021-02-23
    • 1970-01-01
    • 1970-01-01
    • 2021-04-14
    • 2017-05-09
    • 1970-01-01
    相关资源
    最近更新 更多