Неожиданное поведение метода ожидания в модуле статистики sympy

Я пытаюсь оценить ожидание функции нормальной случайной величины, используя Sympy 0.7.4.1.

a, mu = symbols('x mu', real=True)
sigma = symbols('sigma', positive=True)
X = Normal("X", mu, sigma)
expr1 = (sigma**2 - (X-mu)**2)
print E(expr1)

Это дает 0, как и ожидалось, поскольку я вычитаю дисперсию из себя. Теперь я умножаю expr на константу 1/a

expr2 = (sigma**2 - (X-mu)**2)/a
print E(expr2)

Опять же, это дает 0, как и ожидалось.

Однако, если я умножу expr на коэффициент 1/(a-1),

expr3 = (sigma**2 - (X-mu)**2)/(a-1)
print E(expr3)

Sympy возвращает невычисленный интеграл вместо 0.

Integral(sqrt(2)*(sigma**2 - (X - mu)**2)*exp(-(X -
         mu)**2/(2*sigma**2))/(2*sqrt(pi)*sigma*(x - 1)), (X, -oo, oo))

Поскольку a — произвольная константа, почему ожидание expr2 и expr3 отличается?

Проверка в Mathematica эквивалентна

Expectation[(\[Sigma]^2 - (\[Mu] - X)^2)/(a - 1), 
             X \[Distributed] NormalDistribution[\[Mu], \[Sigma]]]

дает 0, как и ожидалось.


person Cliburn    schedule 19.02.2014    source источник


Ответы (1)


Я бы посчитал это ошибкой. Можете ли вы сообщить об этом по адресу https://github.com/sympy/sympy/issues/new?

person asmeurer    schedule 23.02.2014