概率时间序列,观测数据概率(似曾相识)

2024-09-30 16:29:03 发布

您现在位置:Python中文网/ 问答频道 /正文

好吧,各位…谢谢你看这个问题。我记得我在大学时做了以下的事情,但是我忘记了确切的答案。任何人都要朝正确的方向前进。在

我有一个N的数据的时间序列(我们将使用三个)。数据序列是按时间顺序排列的(例如obsOne[1]与obsTwo[1]和obsThree[1]一起出现)

obsOne[47,136,-108,-15,22,…],OBS2[448,321,122,-207,269,…],OBS33[381,283,429,-393,242,…]

第二步。从数据系列中,我为每个数据系列创建了一系列宽度为Z的X范围容器。(例如观察到的观察结果:bin1=[<;-108,-108]bin2=[-108,-26]bin3=[-26,55]。。。宾克斯=[136,>;136]

第三步。现在创建一个包含数据系列上所有可能组合的表。因此,如果我有4个箱子和3个数据系列,所有的组合将总计4x4x4=64个可能的结果。(例如row1=obsOne bin1+OBS2 bin1+OBS3ONE bin1,row2=obsOne bin1+OBS2 bin1+OBS3O bin2。。。第5行=obsOne bin1+OBS2 bin1+OBS3 binX,row6=obsOne bin1+OBS2 bin2+OBS3 bin1,row7=obsOne bin1+OBSTWON bin1+OBS3O bin2,row9=obsOne bin1+OBS2 bin2+OBS3 binX,…)

第4步。现在我回到数据系列,找出数据系列中的每一行在表中的位置,并计算观察值这样做的次数。(例如obsOne[2]obsTwo[2]obstrine[2]=表中的第30行,obsOne[X]obsTwo[X]obstree[X]=表中的第52行。在

第5步。然后,我只取表中有正匹配的行,计算有多少个观察值落在该行上,除以数据系列中的观察值总数,这就给了我观察到的数据范围的概率。在

我为这个基本问题道歉,不是数学专家。很多年前我就这样做过。我忘了我用的是哪种方法,它比这种长的(古老的“手工”)方法快得多。当时我没有使用python,它是c++中的其他一些专有软件包。我想看看是否有什么东西可以用python(现在是python商店)来解决这个问题,所以它是软约束。在


Tags: 数据方法答案时间序列事情大学binx
1条回答
网友
1楼 · 发布于 2024-09-30 16:29:03

你在说这样的事吗?在

from __future__ import division
from collections import defaultdict

obsOne= [47, 136, -108, -15, 22, ]
obsTwo= [448, 321, 122, -207, 269, ]
obsThree= [381, 283, 429, -393, 242, ]

class BinParams( object ):
    def __init__( self, timeSeries, X ):
        self.mx= max(timeSeries )
        self.mn= min(timeSeries )
        self.Z=(self.mx-self.mn)/X
    def index( self, sample ):
        return (sample-self.mn)//self.Z

binsOne=  BinParams( obsOne, 4 )
binsTwo=  BinParams( obsTwo, 4 )
binsThree= BinParams( obsThree, 4 )

counts= defaultdict(int)
for s1, s2, s3 in zip( obsOne, obsTwo, obsThree ):
    posn= binsOne.index(s1), binsTwo.index(s2), binsThree.index(s3)
    counts[posn] += 1

for k in counts:
    print k, counts[k], counts[k]/len(counts)

相关问题 更多 >