【问题标题】:plyr + simpleboot: NA in probability vectorplyr + simpleboot:概率向量中的 NA
【发布时间】:2016-11-27 22:53:03
【问题描述】:

我正在使用simplebootpackage (https://cran.r-project.org/web/packages/simpleboot/index.html) 来获取置信区间。

这是我的功能:

lb_weighted_median_dplyr <- function(x,v) {
  set.seed(1234)
  b <- one.boot(x, weights = v, FUN = function(x,w) matrixStats::weightedMedian(x, w = v, na.rm = TRUE), R = 100, student = FALSE)
  round(perc(b, 0.025), 0)
}

该函数的作用是在我运行时计算置信区间的下限

ddply(wage_by_gender_2015, .(sex,region), summarise, FUN = lb_weighted_median_dplyr(wage, exp_region))

其中wage 是一个数字列,exp_region 是另一个包含权重的数字列。

我没有某些地区的数据,因此函数在某些地区失败并返回

Error in eval(substitute(expr), envir, enclos) : NA in probability vector

如何绕过该错误并获得 NA 作为无数据区域的下限?

同样返回NA in probability vectordplyr 等效方法是

grouped <- group_by(wage_by_gender_2015, sex, region)
dplyr::summarise(grouped, FUN = lb_weighted_median_dplyr(wage, exp_region))

此处的相关数据样本:http://users.dcc.uchile.cl/~mvargas/casen/wage_by_gender_2015.RData

【问题讨论】:

  • 请使用dput()提供您的数据
  • 你说 dplyr,但是使用 plyr 函数...
  • 什么意思?写一个 ASCII 文本
  • ddply 来自 plyr
  • 抱歉,现在修复

标签: r dplyr plyr statistics-bootstrap


【解决方案1】:
wage_by_gender_2015 <- data.frame(sex    = rep(c("male", "female"),100),
                                  region = rep(c("north", "south", "east",
                                                 "west"), 50),
                                  exp_region = abs(rnorm(100)),
                                  wage       = abs(rnorm(100))
)

wage_by_gender_2015$exp_region[10] <- NA
ddply(wage_by_gender_2015, .(sex,region), summarise, FUN = lb_weighted_median_dplyr(wage, exp_region))
 Error in sample.int(length(x), replace = TRUE, ...) :    NA in probability vector
# impute
wage_by_gender_2015$exp_region <- RRF::na.roughfix(wage_by_gender_2015$exp_region)

ddply(wage_by_gender_2015, .(sex,region), summarise, FUN = lb_weighted_median_dplyr(wage, exp_region))
    sex region FUN
1 female  south   0
2 female   west   0
3   male   east   1
4   male  north   0

如评论中所述,我会使用您的示例数据,但缺少 sex

【讨论】:

  • 谢谢...是的,我现在更新样本的愚蠢错误
  • 我现在更新了我的示例,我正在使用完整的数据集测试您的解决方案,非常感谢 :)
  • @pachamaltese 不客气,如果您有任何问题,请告诉我
  • @pachamaltese 如果您将代码发布到您估算的位置并且仍然出现该错误,那么我可以调试它。顺便说一句,还有更高级的插补类型,例如 Amelia II,但通常不值得花时间和精力去做。
  • 非常感谢@Hack-R ...我确实重新启动了计算机并且它工作了:S
猜你喜欢
  • 1970-01-01
  • 2018-11-08
  • 2014-05-02
  • 1970-01-01
  • 2021-05-17
  • 2019-06-07
  • 1970-01-01
  • 1970-01-01
  • 2017-09-26
相关资源
最近更新 更多