2017-04-10 8 views
0

pymc를 사용하여 시계열에서 변경 지점을 찾으려고합니다. 내가 바라는 가치는 "변환"가능성이 매우 낮아서 평균 0.009이고 범위는 0.001-0.016입니다.작은 확률에 대한 pymc python 변화 지점 탐지. ZeroProbability Error

나는 2 개의 확률에 0과 최대 관측 사이의 사전 확률 분포를 제공한다. 이 코드를 실행하면

alpha = df.cnvrs.max() # Set upper uniform 
center_1_c = pm.Uniform("center_1_c", 0, alpha) 
center_2_c = pm.Uniform("center_2_c", 0, alpha) 
day_c = pm.DiscreteUniform("day_c", lower=1, upper=n_days) 

@pm.deterministic 
def lambda_(day_c=day_c, center_1_c=center_1_c, center_2_c=center_2_c): 
    out = np.zeros(n_days) 
    out[:day_c] = center_1_c 
    out[day_c:] = center_2_c 
    return out 

observation = pm.Uniform("obs", lambda_, value=df.cnvrs.values, observed=True) 

내가 얻을 :

ZeroProbability을 : 확률 OBS의 가치는 그것의 지원 외부 또는 그것의 부모의 현재 값을 금지한다.

나는 분명히 pymc에 익숙하지 않기 때문에 확실하지 않은 것이 있는지 확실하지 않습니다. 내 추측으로는 작은 확률을 모델링하기위한 적절한 분포가 없을 수도 있습니다.

답변

0

당신이이 버그를 어디에서 소개했는지 말할 수는 없으며, 프로그래밍을하지 않고도 프로그래밍은 주제에 벗어난 것입니다. 그러나 여기에 통계적으로 문제가 있습니다 : 당신은 어떻게 든 관측 된 변수들 또는 잠재적 인 잠재 변수 샘플을 생성 할 수없는 모델을 만들었습니다.

간단한 예로, 음수 값을 가진 데이터 집합이 있고 감마 분산이라고 가정했습니다. 감마에 따라 데이터의 확률이 0이기 때문에 오류가 발생합니다. 마찬가지로, 불가능한 값이 MCMC 체인 중에 샘플링되면 오류가 발생합니다.

+0

관찰 된 값의 한계로 균일 분포의 한계를 설정할 때 관측치가 분포 외부에있는 것은 확실하지 않습니다. – dstancan