计算大数据的分位数

2024-03-03

我有大约 300 个文件,每个文件包含 1000 个时间序列实现(每个文件约 76 MB)。

我想计算全套 300000 个实现中每个时间步的分位数 (0.05、0.50、0.95)。

我无法将 1 个文件中的实现合并在一起,因为它会变得太大。

做到这一点最有效的方法是什么?

每个矩阵都是通过运行模型生成的,但是这里是包含随机数的样本:

x <- matrix(rexp(10000000, rate=.1), nrow=1000)

至少有三个选择:

  1. 你确定它必须是全套的吗? 10% 的样本应该是一个非常非常好的近似值。
  2. 300k 个元素对于向量来说并不是那么大,但是 300k x 100+ 列矩阵就很大了。仅将需要的列拉入内存,而不是整个矩阵(如有必要,可以在每一列上重复)。
  3. Do it sequentially, possibly in conjunction with a smaller sample to get you started in the right ballpark. For the 5th percentile, you just need to know how many items are above the current guess and how many are below. So something like:
    1. 取 1% 的样本,找出其中的第 5 个百分位数。在上面和下面跳跃一些容差,这样您就可以确定确切的第 5 个百分位数位于该范围内。
    2. 分块读取矩阵。对于每个块,计算高于范围和低于范围的观察值数量。然后保留该范围内的所有观察结果。
    3. 当您读完最后一个块时,您现在拥有三条信息(上面的计数、下面的计数、内部的观察向量)。获取分位数的一种方法是对整个向量进行排序并找到第 n 个观测值,您可以使用上述信息来实现这一点:对范围内的观测值进行排序,并找到第 (n-count_below) 个观测值。

Edit:(3) 的示例。

请注意,我不是冠军算法设计者,几乎可以肯定有人为此设计了更好的算法。而且,这种实现方式并不是特别有效。如果速度对您很重要,请考虑 Rcpp,甚至为此进行更优化的 R。制作一堆列表,然后从中提取值并不是那么聪明,但这种方式很容易原型化,所以我就采用了它。

library(plyr)

set.seed(1)

# -- Configuration -- #
desiredQuantile <- .25

# -- Generate sample data -- #

# Use some algorithm (sampling, iteration, or something else to come up with a range you're sure the true value lies within)
guessedrange <- c( .2, .3 )
# Group the observations to correspond to the OP's files
dat <- data.frame( group = rep( seq(100), each=100 ), value = runif(10000) )

# -- Apply the algorithm -- #

# Count the number above/below and return the values within the range, by group
res <- dlply( dat, .( group ), function( x, guessedrange ) {
  above <- x$value > guessedrange[2]
  below <- x$value < guessedrange[1]
  list(
    aboveCount  = sum( above ),
    belowCount = sum( below ),
    withinValues = x$value[ !above & !below ]
  )
}, guessedrange = guessedrange )
# Exract the count of values below and the values within the range
belowCount <- sum( sapply( res, function(x) x$belowCount ) )
belowCount
withinValues <- do.call( c, sapply( res, function(x) x$withinValues ) )
str(withinValues)
# Count up until we find the within value we want
desiredQuantileCount <- floor( desiredQuantile * nrow(dat) ) #! Should fix this so it averages when there's a tie
sort(withinValues)[ desiredQuantileCount - belowCount + 1 ]
# Compare to exact value
quantile( dat$value, desiredQuantile )

最后,该值与实际版本略有偏差。我怀疑我被一个或一些同样愚蠢的解释所改变,但也许我错过了一些基本的东西。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算大数据的分位数 的相关文章

  • 通过 rpy 将 SPSS 文件(.sav)导入 pandas 时如何保留标签?

    我正在寻找使用 SPSS 文件 sav pandas 在没有 SPSS 程序的情况下 典型文件转换为 csv 后的样子如下 在调查前两行的含义时 我不知道 SPSS 似乎第一行包含Labels 而第二行包含VarNames 当我将文件带入
  • 递归累积函数

    我需要在 R 中编写一个累积求和函数 但我一直碰壁 该函数具有以下结构 a x1 a x2 a 2 x1 a x3 a 2 x2 a 3 x1 a x4 a 2 x3 a 3 x2 a 4 x1 等等 cumsum 似乎不适用于此类功能 有
  • 使用cowplot包的多重图的中心X轴标签

    我有一个多图图形 由 2x2 配置中的 4 个图组成 我使用 cowplot 包和plot grid函数使用下面的代码排列了绘图 plot grid p1 p2 p3 p4 align vh vjust 1 scale 1 其中 p1 p4
  • r testthat 和 covr 在非包库中使用

    我希望能够使用testthat and covr在一个项目中not一个 r 包 事实上不使用任何第三方服务 只是普通的旧 r 源文件的集合 我正在努力找出这是否可行 如果可以 则已设置有关如何设置的说明 我发现假设你正在编写一个 r 包 我
  • 如何替换R中的“意外转义字符”

    当我尝试从 Facebook URL 的字符对象解析 JSON 时 我收到 fromJSON data 中的错误 位置 130 处出现意外的转义字符 o 看一下这个 library RCurl library rjson data lt g
  • R 和 Python 中 LU 分解结果不一致

    我有以下矩阵A in R 1 2 3 4 1 1 1527778 0 4444444 0 375 0 3333333 2 0 5555556 1 4888889 0 600 0 3333333 3 0 6250000 0 4000000 1
  • 为 Linux 安装 R 包时出错

    我试图在 R 3 3 上安装一个名为 rgeos 的包 但是当我输入 install packages rgeos 但它返回给我以下错误 其他包也会发生同样的情况 但不是所有包 gt installing source package rg
  • 双向条形图,两侧带有正标签ggplot2

    我尝试在 ggplot 中创建一个双向条形图 其中轴上方和下方的轴标签和数据标签均为正值 例如 如果您的数据是 myData lt data frame category c yes yes no no month c Jan Feb Ja
  • 在闪亮的应用程序中使用传单地图作为过滤器

    是否可以使用传单地图来过滤闪亮应用程序中的数据 就像在 Tableau 或 Power BI 中一样 方法是单击地图上的某个状态 然后根据条件过滤另一个图表或表格选择 None
  • 替换向量中非 %in% 向量的值

    简短的问题 我可以像这样替换某些变量值 values lt c a b a b c a b df lt data frame values 将 df values 的所有值替换为 x 其中值是neither a 或 b 输出应该是 c a
  • 用于带有嵌套子图的图的 r 包? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个用于图形 网络的 r 包 它可以处理嵌套子图 Graphviz 做到了这一点 但只提供可
  • 如何在R中绘制仪表图表?

    如何在 R 中绘制以下图 Red 30 Yellow 40 Green 30 Needle at 52 所以这里有一个完整的ggplot解决方案 注意 从原始帖子中编辑 在仪表中断处添加数字指示器和标签 这似乎是OP在评论中所要求的 如果不
  • R data.table fread 使用不带标题的命名 colClasses(例如没有 col.names?)

    更新 2016 年 6 月 col names 已添加到 data table 1 9 6 所以问题已经结束 每个人都非常高兴 我想我现在可以将所有 read csv 调用转换为 fread 调用 而不必担心破坏 原问题 使用数据表1 9
  • R ifelse 错误地用整数替换文本

    我正在使用 Udacity 课程中的一些数据 链接 Reddit 调查回复 https s3 amazonaws com udacity hosted downloads ud651 reddit csv 我试图通过使用单个单词替代替换任何
  • 使用 RMySQL 会干扰 RPostgreSQL

    我有一个 R 脚本 我想从 MySQL 数据库中提取一些数据 然后从 PostgreSQL 数据库中提取一些数据 但是 从 RMySQL 加载 MySQL 驱动程序会阻止我从以下位置加载 PostgreSQL 驱动程序 PostgreSQL
  • 绘制具有数据子集的图层时,因子水平的顺序会发生变化

    我试图控制图例中项目的顺序ggplot2我查找了其他一些类似的问题 并发现了如何更改我正在绘制的因子变量的水平顺序 我正在绘制 12 月 1 月 7 月和 6 月 4 个月的数据 如果我只对所有月份执行一个绘图命令 它会按预期工作 图例中排
  • Rstudio 命令历史记录

    这些天我经常使用 Rstudio 但最近注意到我的命令不再存储在历史记录中 我不知道这是从什么时候开始的 但可能是在安装最新版本时发生的 关于问题可能是什么的任何想法吗 Thanks 这是我们在 v0 93 73 中引入并在 v0 93 7
  • S4 类 [(子集)带有附加参数的继承

    这是一个扩展在 R 中的访问器函数中使用 callNextMethod https stackoverflow com q 24875284 2752888 2017 03 25 更新 为了说明如何仅在加载方法时失败 但在构建的包中时不会失
  • 计算 R 中数据帧的每一行中特定值的连续出现次数

    我有一个data frame许多位置 这么多行 的变量的每月值 我想计算值为零的连续月份 即连续单元格 的数量 如果只是从左到右阅读 这很容易 但增加的复杂性是年底与年初是连续的 例如 在下面的缩短示例数据集中 用季节而不是月份 位置 1
  • 按列分组的数据帧上 R 中的行之间的差异

    我希望通过 app name 获得不同版本的计数差异 我的数据集如下所示 app name version id count difference 这是数据集 data structure list app name structure c

随机推荐

  • React-native run-android 在 :app:processDebugResources 上失败

    我最近使用以下方式向我的应用程序添加了推送通知反应本机 https github com oney react native gcm android 20module因为在看似随机的时间我收到了诸如添加的照片中的消息 任务执行失败 app
  • Android GUI爬虫

    有人知道抓取 Android 应用程序 GUI 的好工具吗 我发现this http code google com p android crawler source checkout但不知道如何运行它 就我个人而言 我认为使用以下命令制作
  • Java BouncyCastle ECC 密钥和自签名证书

    我在互联网上搜索了几个小时 寻找用于创建椭圆曲线 EC 密钥和自签名证书的 Java 示例 到目前为止 我只找到了片段和示例 其中许多都不起作用 UPDATE 我在这里取得了一些进展 这是我的代码 供任何可能觉得有用的人使用 现在只需要弄清
  • URLComponents queryItems 在突变时丢失编码百分比

    使用时URLComponents s queryItems我发现如果您有一个查询项 其值包含一些百分比编码字符 在我的情况下 被编码为 2F 那么如果你构造一个URLComponents对象从一个String包含此类查询项的 URL 然后更
  • 如何使用 Realm 编写更好的数据访问层

    我一直在一些小项目中使用 Realm 我非常喜欢它 我希望继续在更大的项目中使用它 并且我正在寻找更好的数据访问层结构 我遇到过这个类似的question https stackoverflow com q 33592572 1077789
  • 如何检查仅包含空对象的数组 [{}]

    我有一个变量 如下所示 let response 这是一个带有空对象的数组 我应该进行什么样的检查来确定这个响应是否与此完全相等 IE response returns false 如果响应是 我想要一个返回 false 的检查 我怎么做
  • 使用 python 请求的多部分数据 POST:未找到多部分边界

    我有一个表单数据以及要在同一个帖子中发送的文件 例如 持续时间 2000 文件 test wav 我在这里看到了使用 python 请求进行多部分 表单数据发布的许多线程 它们很有用 尤其是this one https stackoverf
  • React-native 无法连接到 Android 设备上的开发服务器

    设备已连接 Package Server 正在运行 存在端口问题8081 这就是为什么我开始使用这个react native run android and react native start port 8089 But still un
  • 在 try/finally 外部或内部初始化一次性资源

    我见过两种获取和处置资源的方式 任何一个 Resource resource getResource try do something with resource finally resource close or Resource res
  • 项目级 Leiningen 插件

    在 Leiningen 版本 1 x x 中我能够定义一个lein foo通过将以下内容放入该项目的任务中 该任务仅在单个项目中有效project clj defproject tester 0 1 0 SNAPSHOT descripti
  • PHP 防止创建未在类中定义的属性

  • 自定义ActionBar TabBar (ActionBarSherlock)

    我已经被这个问题困扰好几天了 任何人都可以帮助我自定义操作栏下方显示的选项卡 导航模式为NAVIGATION MODE TABS 我基本上想更改选项卡的背景颜色和当前所选选项卡的下划线颜色 到目前为止 这就是我所做的 但它不起作用 我在用A
  • Jest TLSWRAP 使用简单的 node-postgres pool.query() 修复了 setTimeout 延迟的打开句柄错误,但为什么呢?

    当我运行以下测试时 afterAll async gt await runDbBuild await pool end describe queries newteetypes select all gt test Test 1 objec
  • PHP Exec 未运行,但命令工作正常!

    我有以下脚本来获取 PHP 中上传的 PDF 并调用 ImageMagick Ghostscript 将其转换为指定大小的图像 tmp exec convert strPDF resize 500X500 strOut results 然而
  • @font-face 停止滚动捕捉点工作?

    我知道它仍然是非常新的和实验性的 但一直在使用 css roll snap 并且有一段时间无法让它工作 我最终意识到 当我在 CSS 中使用 font face 时 滚动捕捉不起作用 如果我将字体系列更改为 Arial 而不是我定义的字体
  • asp.net mvc int 属性绑定异常

    我的类中有一个 int 属性 想要验证用户是否输入了字符串 我如何使用数据注释来做到这一点 当我传递非整数值时 我收到如下异常 The value asdasd is not valid for property 例如使用此验证属性 Ran
  • 如何在 R 中将多个 JSON 文件合并为一个文件

    我有三个 JSON 文件 json1包含 1 5 5 7 8 10 json2包含 5 6 4 5 5 8 json3包含 4 7 3 4 4 8 我想将它们合并到一个文件中jsonmerge 1 5 5 7 8 10 5 6 4 5 5
  • 将日期 yyyy-mm-dd 转换为 mmm-yy SQL Server 2016

    我想将日期 yyyy mm dd 存储为日期格式 转换为 mmm yy 格式 网站上之前的问题没有完全匹配 我尝试过子字符串和转换函数 正在考虑创建一个标量函数 但这花了我一段时间 希望有人有一个简单的解决方案 您可以使用字符串操作构造格式
  • Spark:如何通过 python-api 使用 HBase 过滤器,例如 QualiferFilter

    我想通过使用像 python api 中的 QualiferFilter 这样的过滤器从 HBase 获取行 我知道如何从 HBase 获取行 就像在代码下一样 host localhost keyConv org apache spark
  • 计算大数据的分位数

    我有大约 300 个文件 每个文件包含 1000 个时间序列实现 每个文件约 76 MB 我想计算全套 300000 个实现中每个时间步的分位数 0 05 0 50 0 95 我无法将 1 个文件中的实现合并在一起 因为它会变得太大 做到这