Python - Statsmodels - Различные типы ввода приводят к различным типам вывода? - PullRequest
0 голосов
/ 19 марта 2020

Я использовал Statsmodel для обучения некоторых моделей временных рядов и обнаружил, что тип данных некоторых выходных данных будет отличаться в зависимости от типа входных данных, в то время как я ожидал, что тип выходных данных будет независимым от типа входных данных.

Мой вопрос: нормально ли это в statsmodels (и в других пакетах, например, sklearn)? Если нет, каков нормальный / стандартный / конвенционный способ справиться с такой ситуацией?

У меня есть пример ниже. Если я использую pandas.Series в качестве ввода, то вывод bse из statsmodels будет pandas.Series. Если вход list, то вывод будет np.array.

from statsmodels.tsa.arima_model import ARIMA

x1 = pd.Series([1.5302615469999998,1.130221162,1.059648341,1.246757738,0.98096523,1.173285138,
1.630229825,1.6447988169999999,1.753422,1.7624994719999998,1.60655743,1.7999185709999999,
1.7284643419999999,1.74167109,1.606315199,1.510957898,1.38138611,1.4421003190000001,1.172060761,
0.978149498,0.878831354,0.802660206])

x2 = [s for s in x1]

model1 = ARIMA(x1, order=(1,1,0))
model2 = ARIMA(x2, order=(1,1,0))

model_fit1 = model1.fit(disp=False)
model_fit2 = model2.fit(disp=False)

model_fit1.bse #outputs pandas series
model_fit2.bse #outputs numpy array

1 Ответ

1 голос
/ 20 марта 2020

Это верно для всех или большинства моделей и многих функций в statsmodels. Он является частью поддержки pandas.

Pandas Series или DataFrames предоставляют индекс и другую информацию, такую ​​как имена столбцов для матрицы проектирования, а модели и многие функции пытаются сохранить его и вернуть Series или DataFrame с соответствующим индексом.

Любые другие типы будут преобразованы в numpy массивы (np.asarray), если это возможно, и любая дополнительная информация, имеющаяся в этих структурах данных, будет игнорироваться.

Таким образом, правило заключается в том, что если пользователь использует pandas, то код предполагает, что пользователь хочет вернуть обратно pandas структуры данных. Это может быть распространено на другие структуры данных, кроме pandas, но в настоящее время нет планов поддержки структур данных из других пакетов.

...