【问题标题】:Resampling in RR中的重采样
【发布时间】:2018-08-07 15:33:41
【问题描述】:

考虑以下数据:

library(Benchmarking)
d <- data.frame(x1=c(200,200,3000), x2=c(200,200,1000), y=c(100,100,3))

所以我有3 的观察结果。

现在我想从d 中随机选择2 观察三次(不重复 - 总共有三种组合)。对于这三个时间中的每一个,我想计算以下内容:

e <- dea(d[c('x1', 'x2')], d$y)
weighted.mean(eff(e), d$y)

也就是说,我会得到三个数字,我想计算它们的平均值。有人可以展示如何使用 R 中的循环函数来执行此操作吗?

示例:

总共有三种组合,所以在这种情况下我只能得到相同的结果。如果我手动计算,我会得到以下三个结果:

0.977  0.977  1

(结果当然可以是另一个顺序)。

这两个数字的平均值是:

0.984

这是一个简单的例子。就我而言,我有很多组合,我没有选择所有组合(例如,可能有 1,000,000 个组合,我只选择其中的 1,000 个)。

【问题讨论】:

    标签: r loops resampling


    【解决方案1】:

    我认为最好使用sample.intreplicate 而不是进行所有组合,请参阅我的示例:

    nsample <- 2 # Number of selected observations
    nboot <- 10  # Number of times you repeat the process
    
    replicate(nboot, with(d[sample.int(nrow(d), nsample), ], 
                          weighted.mean(eff(dea(data.frame(x1, x2), y)), y)))
    

    【讨论】:

    • 非常感谢,胡安。只是为了确定:这是没有重复,对吧?所以我不能两次选择相同的组合,对吧?
    • 我可以看到它是重复的。如何更改它,使每个选择都没有重复?
    • sample.int 中可以使用replace = TRUE,默认为replace = FALSE。例如:sample.int(nrow(d), nsample, replace = TRUE)
    • 谢谢,胡安。但是我还是觉得有问题。考虑文中的新例子。在这里应该只能得到结果 0.984,但是当我使用你的代码时,我可以得到另一个结果。这表明即使我使用代码replace = FALSE,它仍然在重复。
    • 我认为是正确的,在新示例中您可以获得 4 个解决方案。你只能得到 2 个数字(0.976699 和 1),然后你可以得到 3(0.977)和 0(1;平均值 = 0.976699)、2 和 1(平均值 = 0.984466)、1 和 2(平均值 = 0.992233)和 0 和3(平均值 = 1)。
    【解决方案2】:

    我还检查了你带来的关于这个问题的链接,所以如果我没看错,我的意思是,你想每次提取两行(观察)而不替换,你可以使用示例:

    SelObs <- sample(1:nrow(d),2)
    # for getting the selected observations just
    dSel <- d[SelObs,]
    

    然后进行计算

    如果您不希望在下一个随机选择中选择那些已经选择的观察,它是相似的,但您需要一个索引

    Obs <- 1:nrow(d)
    SelObs <- sample(Obs, 2)
    dSel <- d[SelObs, ]
    # and now, for removing those already selected 
    Obs <- Obs[-SelObs]
    # and keep going with next random selections and the above code
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-31
      • 1970-01-01
      • 2018-11-06
      • 2014-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多