0
我正在嘗試使用pymc來查找時間序列中的更改點。我所看到的價值隨時間而變化的概率很小,平均爲0.009,範圍爲0.001-0.016。pymc python變化點檢測的小概率。零概率錯誤
我給出了兩個概率均勻分佈,作爲零之間和最大觀察之間的先驗。
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非常陌生,所以不確定是否缺少明顯的東西。我的猜測是我可能沒有合適的分佈來建模小概率。
我明白了,但當我將均勻分佈的極限設置爲觀察值的極限時,我不確定觀察結果如何超出分佈? – dstancan