好的,伙计们...感谢您查看这个问题。我记得在大学里做了以下事情,但是我忘记了确切的解决方案。任何接受者都要朝着正确的方向前进。
我有一个 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商店)解决这个问题,总是可以扩展,所以它是软约束。