【问题标题】:Sampling random rows of a dataframe in R with replacement用替换对 R 中数据帧的随机行进行采样
【发布时间】:2018-09-10 18:58:25
【问题描述】:

我希望能够使用自举生成一些测试统计信息的置信区间。我想要做的是使用从我的原始数据集中替换的抽样来绘制一个引导数据集。我假设这将是一个大小为 n 的数据集(其中 n 小于原始数据集的大小),它对来自完整数据集的观察/数据行进行替换(以便某些行可能被绘制两次)。

我现在的单次迭代代码如下:

samp <- dat[sample(nrow(dat), 100000), ]

此代码从我的数据集 (dat) 中采样 100k 行。

我的问题如下:

此代码是否对替换行进行采样?我的假设是否正确:使用替换采样的引导数据集等效于对大小为 n 的数据集(小于原始数据集)进行采样,该数据集从完整数据集中随机抽取数据行并替换(这是带替换的引导)?

【问题讨论】:

    标签: r sampling statistics-bootstrap


    【解决方案1】:

    这回答了你问题的第一部分 -

    代码没有替换采样,您需要添加replace=TRUE,因为sample 的默认值是不替换,即samp &lt;- dat[sample(nrow(dat), 100000, replace=TRUE), ]

    我们可以用一个测试用例来探索这个。首先生成一些数据:

    dat <- data.frame(Number=c(seq(1:10)))
    

    然后示例运行您提供的代码

    samp <- dat[sample(nrow(dat),10,]
    

    然后查看是否有任何数字出现超过一个,即它们是重复的:

    duplicated(samp)
    [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
    

    再次运行,包括 replace=TRUE 参数:

    samp <- dat[sample(nrow(dat),10,replace=TRUE),]
    duplicated(samp)
    [1] FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE
    

    TRUEs 表示存在重复,即替换已经发生。

    【讨论】:

      【解决方案2】:

      此代码是否对替换行进行采样? → 是的

      【讨论】:

      • sample 的默认值是replace=FALSE,即没有替换抽样
      猜你喜欢
      • 2021-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-27
      相关资源
      最近更新 更多