Не уверен, что я делаю что-то глупое или у pymc3 есть ошибка, но пытаясь подогнать T-распределение к нормальному, я получаю количество степеней свободы (от 0,18 до 0,25, я ожидаю чего-то высокого, 4-5 по крайней мере). Конечно, я получаю ту же ошибку, если пробую T-распределение с разумным количеством степеней свободы, например, с 3 или 5.
import pymc3 as pm
Nsample = 200000
tst = np.random.normal(loc = 1e4, scale = 5e4, size = 250)
with pm.Model() as m:
mean = pm.Normal('mean',mu=0,sd = 1e5)
sigma = pm.Flat('sigma') # I tried uniform, gamma, exponential
df = pm.Flat("df") # the same
v = pm.T("pl",nu=df,mu = mean, lam = 1.0/sigma, observed = tst)
start = {'df':5,'mean': 1e4, 'sigma':5e4} #start = pm.find_MAP()
step = pm.Metropolis()
trace = pm.sample(Nsample, step,start=start, progressbar=True)
pm.traceplot(trace[100000:],vars = ['df', 'sigma', 'mean']);
Не могли бы вы предложить какое-то исправление (изменение априоров, метод выборки)?