вектор случайных величин pymc3 не ведет себя так же, как массив np того же размера (ValueError: установка элемента массива с помощью последовательности.) - PullRequest
0 голосов
/ 05 марта 2019

Я работаю с pymc3 для выполнения байесовского вывода, и я установил следующую простую иерархическую модель (примечание - технически это еще не иерархическая модель, поскольку в настоящее время существует только один вектор параметров, но это минимальный пример того, чтосбой, и он изменится):

import import pandas as pd 
import numpy as np 
from scipy.stats import norm, lognorm, nbinom

from pymc3 import Uniform, Beta, Binomial, sample, Model, NUTS, NegativeBinomial, Normal, HalfStudentT, traceplot

with Model() as model:
    s = 0.2 

    log_mean = Normal('log_means', mu=0, sd=s, shape=(scaled_counts.shape[0],1))
    log_sd = 0.5 

    probs = norm.cdf(bounds[:,1], loc=log_mean, scale=log_sd) - norm.cdf(bounds[:,0], loc=log_mean, scale=log_sd)
    expected_counts = bin_probs * scaled_inputs[:, np.newaxis]

    counts = NegativeBinomial('counts', mu=expected_counts, alpha=np.array(scaled_counts.sum(axis=0)).reshape(1, 6), observed=scaled_counts, shape=(scaled_counts.shape[0],6))

with model:
    trace=sample(2000, step=NUTS())

В любом случае, проблема в строке probs =.Вызов norm(bounds[:,1], loc=test_array, scale=0.5) (из scipy.stats) с bounds[:,1].shape = (6,) и test_array.shape = (19217,1) работает нормально.Применяются правила вещания, и я получаю вывод массива (19217,6).Однако, когда я заменяю log_mean на test_array, я получаю сообщение об ошибке ValueError: setting an array element with a sequence..Это странно, поскольку я могу проверить (используя print(log_mean.tag.test_value.shape)), что log_mean.shape = (19217,1).

Интересно, что я делаю неправильно.Кажется, это не результат присущей многомерности, поскольку я могу заменить аргумент формы на 1 и все равно получить неправильный результат.Это как-то связано с попыткой передать pymc3 RV в функцию scipy?Значит ли это, что мне придется реализовать cdf для обычного RV с pm.math?Спасибо!

Отредактировано 05.03.19 с импортом.

...