【发布时间】:2015-04-09 23:06:25
【问题描述】:
我正在尝试将我的数据拟合到 beta 二项分布并估计 alpha 和 beta 形状参数。对于此分布,先验取自 beta 分布。 Python 没有适用于 beta-binomial 的 fit 函数,但它适用于 beta。 python beta 拟合和 R beta 二项式拟合很接近,但系统性地偏离了。
R:
library("VGAM")
x = c(222,909,918,814,970,346,746,419,610,737,201,865,573,188,450,229,629,708,250,508)
y = c(2,18,45,11,41,38,22,7,40,24,34,21,49,35,31,44,20,28,39,17)
fit=vglm(cbind(y, x) ~ 1, betabinomialff, trace = TRUE)
Coef(fit)
shape1 shape2
1.736093 26.870768
蟒蛇:
import scipy.stats
import numpy as np
x = np.array([222,909,918,814,970,346,746,419,610,737,201,865,573,188,450,229,629,708,250,508], dtype=float)
y = np.array([2,18,45,11,41,38,22,7,40,24,34,21,49,35,31,44,20,28,39,17])
scipy.stats.beta.fit((y)/(x+y), floc=0, fscale=1)
(1.5806623978910086, 24.031893492546242, 0, 1)
我已经这样做了很多次,似乎 python 系统地比 R 的结果要低一点。我想知道这是我的输入错误还是只是计算方式的不同?
【问题讨论】:
标签: python r scipy beta parameterization