У меня есть следующий набор данных.
y X
0 70.0 10.0
1 59.0 10.0
2 40.0 10.0
3 56.0 10.0
4 46.0 10.0
5 65.0 10.0
6 60.0 10.0
7 45.0 10.0
8 55.0 555267.0
9 69.0 558056.0
10 64.0 176734.0
Когда я запускаю следующий код:
import pandas as pd
import numpy as np
from causalimpact import CausalImpact
y1 = [70.0, 59.0, 40.0, 56.0, 46.0, 65.0, 60.0, 45.0, 55.0, 69.0, 64.0]
X1 = [10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 5552675.0, 5580561.0, 1767342.0]
y = np.array(y1)
X = np.array(X1)
y[8:] += 5
data = pd.DataFrame({'y': y, 'X': X}, columns=['y', 'X'])
pre_period = [0, 7]
post_period = [8, 10]
ci = CausalImpact(data, pre_period, post_period)
print(ci.summary())
print(ci.summary(output='report'))
ci.plot()
Я получаю сообщение об ошибке: exog содержит инфу или нанс
Любое решение этого было бы здорово.
Проблема вызвана тем, что в вашем массиве X1
слишком много одинаковых значений. Если вы измените любой из ваших 10.0
на, скажем, 11.0
, проблема исчезнет.
Спасибо @David M. Теперь это работает. Еще один быстрый вопрос, как я могу изменить доверительный интервал в функции CausalImpact. Значение по умолчанию — 95%. Я хочу 90%
ci = CausalImpact(data=data, pre_period=pre_period, post_period=post_period, alpha=0.1)
На самом деле, если быть более точным, проблема в том, что у вас есть идентичные значения только в подмножестве
pre_period
вашего массиваX1
(X1[0:8] = [10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0]
).