2014-02-19 2 views
0

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

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, как и ожидалось.

ответ

Смежные вопросы