Python PyMC3-泊松适用于开关点,指数不适用
以下模型(取自黑客的贝叶斯方法)适用于泊松分布Python PyMC3-泊松适用于开关点,指数不适用,python,pymc,pymc3,Python,Pymc,Pymc3,以下模型(取自黑客的贝叶斯方法)适用于泊松分布 count_data = np.loadtxt("data/txtdata.csv") n_count_data = len(count_data) with pm.Model() as model: alpha = 1.0/count_data.mean() # Recall count_data is the # variable that holds our txt coun
count_data = np.loadtxt("data/txtdata.csv")
n_count_data = len(count_data)
with pm.Model() as model:
alpha = 1.0/count_data.mean() # Recall count_data is the
# variable that holds our txt counts
lambda_1 = pm.Exponential("lambda_1", alpha)
lambda_2 = pm.Exponential("lambda_2", alpha)
tau = pm.DiscreteUniform("tau", lower=0, upper=n_count_data - 1)
idx = np.arange(n_count_data) # Index
lambda_ = pm.math.switch(tau >= idx, lambda_1,lambda_2)
observation = pm.Poisson("obs", lambda_, observed=count_data)
step = [pm.Metropolis(), pm.NUTS()]
trace = pm.sample(10000, tune=5000,step=step)
pm.traceplot(trace, ['lambda_1', 'lambda_2', 'tau'])
plt.show()
泊松分布:
但是,在该模型中使用指数随机变量时:
observation = pm.Exponential("obs", lambda_, observed=count_data)
我得到:
具有指数分布:
我希望使用指数分布的原因是使用非整数
我不确定问题是出在lambda_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 它还可以用于队列网络等,以模拟单个客户的到达时间。注意,客户的预期到达时间与费率参数(通常为λ)相反 可以将数据作为每个固定采样时间间隔的计数提供给泊松过程,例如,您每天获得多少客户 指数分布用于模拟某些过渡时间。这不是一个计数过程。这是一个连续的过程,其离散模拟为几何分布 泊松分布用于对离散数据和离散计数进行建模,离散计数在连续计数之间具有指数时间分布 它们看起来非常相似,但本质不同 很可能输入指数分布的计数数据混淆了整个过程
换句话说,指数分布不是合适的模型,因为它不能理解给定的数据。泊松分布模型很重要 它还可以用于队列网络等,以模拟单个客户的到达时间。注意,客户的预期到达时间与费率参数(通常为λ)相反 可以将数据作为每个固定采样时间间隔的计数提供给泊松过程,例如,您每天获得多少客户 指数分布用于模拟某些过渡时间。这不是一个计数过程。这是一个连续的过程,其离散模拟为几何分布 泊松分布用于对离散数据和离散计数进行建模,离散计数在连续计数之间具有指数时间分布 它们看起来非常相似,但本质不同 很可能输入指数分布的计数数据混淆了整个过程 换句话说,指数分布不是合适的模型,因为它不能理解给定的数据