问题标签 [time-series]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - 有哪些紧凑的算法可以生成有趣的时间序列数据?
这个问题说明了一切。
无论是出于代码测试目的,还是您正在对真实世界的流程进行建模,或者您想给所爱的人留下深刻印象,人们使用哪些算法来生成有趣的时间序列数据?有没有什么好的资源有一个综合列表?对值(正负无穷除外)或维度没有限制,但我正在寻找人们在实践中发现有用或令人兴奋的例子。
简洁且可读的代码示例的奖励积分。
database - 存储栅格数据的好方法是什么?
我有各种时间序列数据存储在或多或少的地理参考网格上,例如每 0.2 度的纬度和经度一个值。目前数据存储在文本文件中,因此在第 251 天,您可能会看到:
我想提高抽象级别,提高性能,减少脆弱性(例如,当前代码不能在两个现有代码之间插入一天!)。我们搞砸了 BLOB-y RDBMS 黑客,甚至将文本文件格式的每一行复制为表中的一行(每个时间戳/纬度对一行,每个经度增量一列 - 耶!)。
我们可以去一个“真实的”地理数据库,但是用 lat 和 long 标记每个单独的值的开销似乎令人望而却步。数据的大小和分辨率十年来没有变化,而且不太可能发生变化。
我一直在想把所有东西都放在 NetCDF 文件中,但认为我们需要完全超越文件思维方式——我讨厌我的所有软件都必须从日期中找出文件名,处理多个文件多年,等等。 . 将所有十年(和计数)数据放入单个文件的替代方法似乎也不可行。
有什么好主意或产品吗?
c# - 时间序列的“加入”
我正在设计一个简单的内部框架来处理时间序列数据。鉴于 LINQ 是我目前的玩具锤,我想用它击打所有东西。
我想在 TimeSeries 类中实现方法(Select()、Where() 等),这样我就可以使用 LINQ 语法来处理时间序列数据
有些事情是直截了当的,例如(从 A 中的 x 选择 x+10),给出一个新的时间序列。
组合两个或多个时间序列的最佳语法设计是什么?(from a in A from b in B select a+b) 不是很好,因为它表示一个嵌套循环。也许有人加入?这应该对应于隐式时间变量的连接。(我想到的对应 lisp 'zip' 功能)
编辑: 一些澄清是必要的。
时间序列是一种依赖于时间的函数,例如股票报价。时间序列的组合可能是两个股票价格之间的差异,作为时间的函数。
是可能的,但是可以使用一些 LINQ 语法巧妙地表达吗?我期待自己实现 LINQ 方法class MyTimeSeries
。
r - 以 08:00-08:15 等时间间隔运行
我想导入一个时间序列,其中第一个字段表示一个时期:
R 是否有任何功能可以巧妙地做到这一点?
谢谢!
更新:
正如 Godeke 所建议的那样,我发现的最有希望的解决方案是 cron 包并使用 substring() 来提取间隔的开始。
我仍在处理相关问题,所以当我到达那里时,我会更新解决方案。
r - 具有多个时间序列的 csv 文件
我已经导入了一个包含大量数据列和部分的 csv 文件。
文件的布局是这样的:
(不同数据集的标题完全相同。
现在,我可以绘制第一个数据集:
我很好奇是否有更好的方法:
无需转换即可将所有数字读取为数字。
以某种有意义的方式处理文件中的不同数据集。
任何提示将不胜感激。谢谢你。
状态更新:
我还没有在 R 中真正找到一个好的解决方案,但是我已经开始在 Lua 中编写一个脚本来将每个单独的时间序列分成一个单独的文件。我暂时将其保持打开状态,因为我很好奇 R 将如何处理所有这些文件。我每天会收到 8 个文件。
gnuplot - 使用 Gnuplot 进行时间序列的线性回归
我是 Gnuplot 的忠实粉丝,我在学习期间一直将它用于各种项目。
最近我想用 Gnuplot 来绘制一些时间序列图,比如减肥、锻炼结果、气体消耗等。
因此,我像缩放 x 轴一样
现在我想使用拟合函数给我一个线性拟合。我的问题是,如果 x 轴与时间相关,我无法让它工作。
sql - 用于大容量的 rrd 工具替代品
我很想知道是否有任何替代 rrdtool 来记录时间序列数据。我正在寻找可以扩展以监视大量设备的东西。
从我读到的关于这个主题的内容来看,当您使用大量数据访问 rrdtool 时,它会受到 I/O 限制。由于我设想这可以扩展到要监视的大量设备,因此我很好奇是否有任何替代方案不会阻塞 I/O。首选基于 SQL,但不一定。
谢谢
c# - 时间序列和相关策略
我有各种时间序列,我想关联并呈现为 csv 文件或内存数据表 (.NET)。这些时间序列是时间-值对的数组(实际上这些对象不仅仅包含时间和值)。时间序列可能跨越不同的重叠时期,有些甚至可能有漏洞(给定时间戳的缺失值)。
对于那些感兴趣的人,我正在使用 OPC HDA .NET 库从 OPC HDA 服务器中提取历史时间序列。
生成的数据表应具有每个时间序列的一列,所有时间序列均基于时间戳列按时间顺序排列。请参见下面的示例:
实现这一目标的最有效方法是什么?“有效”是指使用最少的代码。但是考虑到时间序列可能会变得非常大,内存使用也可能是一个问题。
python - 概率时间序列,观察到的数据概率(似曾相识)
好的,伙计们...感谢您查看这个问题。我记得在大学里做了以下事情,但是我忘记了确切的解决方案。任何接受者都要朝着正确的方向前进。
我有一个 N 的时间序列数据(我们将使用三个)。数据序列按时间顺序是连续的(例如 obsOne[1] 与 obsTwo[1] 和 obsThree[1] 一起发生)
obsOne[47, 136, -108, -15, 22, ...], obsTwo[448, 321, 122, -207, 269, ...], obsThree[381, 283, 429, -393, 242, ...]
第 2 步。从数据系列中,我为每个数据系列创建了一系列宽度为 Z 的 X 范围箱。(例如观察 obsOne:bin1 = [<-108, -108] bin2 = [-108, -26] bin3 = [-26, 55] ... binX = [136, > 136]
步骤 3。现在创建一个包含数据系列所有可能组合的表。因此,如果我有 4 个 bin 和 3 个数据系列,所有组合将总计 4x4x4 = 64 个可能的结果。(例如 row1 = obsOne bin1 + obsTwo bin1 + obsThree bin1, row2 = obsOne bin1 + obsTwo bin1 + obsThree bin2, ... row5 = obsOne bin1 + obsTwo bin1 + obsThree binX, row6 = obsOne bin1 + obsTwo bin2 + obsThree bin1, row7 = obsOne bin1 + obsTwo bin1 + obsThree bin2, row9 = obsOne bin1 + obsTwo bin2 + obsThree binX, ...)
第 4 步。我现在回到数据系列,找出数据系列中的每一行在表格中的位置,并计算观察次数。(例如 obsOne[2] obsTwo[2] obsThree[2] = 表上的第 30 行,obsOne[X] obsTwo[X] obsThree[X] = 表上的第 52 行。
第 5 步。然后我只取表中具有正匹配的行,计算有多少观察落在该行上,除以数据系列中的观察总数,这给了我在观察数据上该范围的概率。
我为这个基本问题道歉,而不是数学专家。很多年前我已经这样做了。我忘记了我用的是哪种方法,它比这种漫长的(古老的“手工”)方法要快得多。当时我没有使用 python,它是 c++ 中的其他一些专有包。我想看看是否有什么东西可以用python(现在是python商店)解决这个问题,总是可以扩展,所以它是软约束。
language-agnostic - 从时间序列数据事件中重建状态
对于一个特定的项目,我们会获取许多事件的数据并同时收集有关这些事件的变量。收集数据后,我们对所述数据执行用户可自定义的分析,以确定用户感兴趣的内容。
数据以类似于以下的形式收集:
要随时了解整个状态,最直接的方法是遍历整个数据集。例如,如果我从时间 0 开始,并“分析”到时间戳 5,我知道在该点 x = 2,y = 1,并且事件 A 已经发生了两次。这是一个非常简单的例子。用户可能(并且经常)对事件之间的时间感兴趣,比如从 A 到 B,他们可能会指定第一次出现 A,然后是 B,或者最后一次出现 A,然后是 B(分别为 9-3 = 6 或 9-4 = 5)。就像我说的,当你走过整个场景时,这很容易分析。
现在,我们需要调整模型以分析任意时间窗口。如果我们看一下 0-N,那就很简单了。但是,例如,如果我查看 1-5,我没有 y 的概念,除非我从 0 开始并且知道 y 最初是 1 并且在窗口 1-5 中没有改变。
我们的方法本质上是创建一个变量字典,并对事件运行回调。如果一个分析是“当事件 A 发生并且时间大于 3 时 x 是什么”,那么我们将在第一个事件 A 上运行该回调,它会立即返回,因为时间不大于 3。它将在 4 处再次运行,并且它会报告在 t=4 时 x 为 1。
为了适应“时间窗口”,我想我将(在后台)为分析添加额外的条件。如果他们的分析只是“事件A发生时x是什么”,并且当前窗口是1-5,那么我将其更改为“事件A发生并且时间> = 1并且时间<= 5时x是什么”。然后如果下一个窗口是 6-10,我可以根据需要重新调整条件。
我的主要问题是:这适合什么模式? 我们显然不是第一个处理此类问题的人,但我一直无法找到其他人是如何处理它的。我可能只是不知道在 Google 上究竟要搜索什么。 除了保存整个全局状态的字典以在给定时间查找单个状态之外,还有其他方法吗? 另请注意,数据可能有几条甚至数万条记录,因此对数据集的迭代越少越好。