微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R:编写一个快速函数来为加权数据集构建 CDF

如何解决R:编写一个快速函数来为加权数据集构建 CDF

我有一个加权数据集,我正在尝试在 R 中编写一个基本的累积分布函数,它的工作原理是将加权数据分成大小相等的 bin。我找不到有效执行此操作的 R 命令,因此我编写了此函数

cdf <- function(x,wt){
  array <- rep(x,wt)
  l = round(length(array)/100) # grouping into percentiles
  c = unname(tapply(array,(seq_along(array)-1) %/% l,sum))
  pdf = unname(tapply(array,max))
  # for uneven group sizes - adding more entries last bin
  if(length(c)>100) { 
    c[100] = sum(c[c(100,101)])
    pdf[100] = max(pdf[c(100,101)])
  }
  cdf = cumsum(as.numeric(c[1:100]))
  pdf = pdf[1:100]
  return(list(cdf = cdf,pdf = pdf))
}

这行得通,但确实很慢。有什么建议可以加快速度吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。