2009-06-20 8 views
1

여러분 ...이 질문을 주셔서 감사합니다. 나는 대학에서 다음과 같은 일을 기억하지만 정확한 해결책을 잊어 버렸다. 올바른 방향으로 조종하려는 모든 수취인.확률의 시계열, 관측 된 데이터 확률 (deja vu)

데이터 시퀀스는 시간 순서대로 순차적입니다 (예 : obsOne [1] 및 obsThree [1]과 함께 발생 함)

obsOne [47, 136, -108, -15, 22, ...], obs2 [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 개의 빈과 3 개의 데이터 시리즈가있는 경우 모든 조합은 총 4x4x4 = 64 개의 가능한 결과를 산출합니다 (예 : row1 = obsOne bin1 + obsTwo bin1 + obsThree bin1, row2 = obsOne bin1 + obsTwo bin1 + obsTree bin2, ... row5 = obs3 bin2, ... row5 = obs1 bin1 + obsTwree binX, row6 = obsOne bin1 + obs2 bin2 + obsTree bin1, row7 = obsOne bin1 + obs2 빈 bin1 + obs3 빈 bin2, row9 = obs1 빈 1 + obsTwo bin2 + obsTree binX, ...)

4 단계. 이제 데이터 시리즈로 돌아가서 데이터 시리즈의 각 행이 테이블에 놓이는 위치를 찾고 얼마나 많은 시간을 계산합니까? 관찰은 그렇게한다. (예 : obsOne [2] obsTwo [2] obsThree [2] = 테이블의 행 30 obsOne [X] obsThree [X] = 테이블의 행 52

5 단계. 긍정적 인 성냥을 가진 테이블의 행, 데이터 시리즈의 총 관측 수로 나뉘며 그 행에 얼마나 많은 관측이 있었는지 계산하십시오. 그러면 관측 된 데이터에서 그 범위에 대한 확률이 나옵니다.

이 기본 질문에 사과드립니다. 수학 전문가가 아닙니다. 저는 수년 전에 이것을 해왔습니다. 어떤 방법을 사용했는지 잊어 버렸습니다. 이것은 오래 전 (고대의 "손으로") 방법보다 훨씬 빠릅니다. 당시 나는 파이썬을 사용하지 않았습니다. 일부 다른 독점적 인 패키지에서 C + +. 뭔가 파이썬 (지금은 파이썬 상점)이 문제를 해결할 수있는 경우, 항상 연장 할 수있는보고 싶습니다, 그래서 그것은 부드러운 콘 긴장.

+0

나는 당신의 조치를 전혀 모릅니다. "너비 Z가있는 일련의 X 범위 저장소를 만듭니다"? "데이터 시리즈에서 가능한 모든 조합으로 표 만들기"? 절차만으로는 나에게 분명하지 않습니다. 분석의 목표는 무엇입니까? –

+2

나는 평판이 전체 질문을 통해 읽는 사람에게 자동으로 주어져야한다고 생각한다. 농담을 나누면 그것을 단순화하고 처음에 목적을 정의하고 설명 할 수있다. –

답변

1

당신은 이와 비슷한 이야기를하고 있습니까?

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)