Ожидание продукта в python симпый - PullRequest
1 голос
/ 04 февраля 2020

В python sympy У меня есть следующий код

from sympy.stats import P, E, variance, covariance, Normal

mu, sigma = symbols('mu sigma')
epsilon_t = Normal('epsilon_t', 0, sigma)
epsilon_t1 = Normal('epsilon_t+1', 0, sigma)

, который определяет две (предположительно независимые) нормальные случайные величины. Теперь я ожидаю, что

E(epsilon_t1*epsilon_t)

равно нулю, но когда я запускаю это через sympy, я получаю что-то намного более сложное. Это говорит мне, что это ноль для pi / 2> 2 | larg (sigma) | и что-то гораздо более сложное в противном случае. Меня не волнует вторая часть, я просто хочу, чтобы она была нулевой. Как я могу это сделать?

1 Ответ

2 голосов
/ 04 февраля 2020

Если вы посмотрите на help(arg), вы получите полезную подсказку: arg(x) равно 0, если значение x положительное. Поэтому, если вы определите свои параметры как положительные, а не как реальные, arg сможет оценить:

>>> mu, sigma = symbols('mu sigma',positive=True)
>>> epsilon_t = Normal('epsilon_t', 0, sigma)
>>> epsilon_t1 = Normal('epsilon_t+1', 0, sigma)
>>> E(epsilon_t*epsilon_t1)
0
...