Добавление статистических моделей «предсказывает» результаты в кадр данных Pandas

Обычно требуется добавить результаты прогнозов в набор данных, используемый для создания прогнозов, но функция statsmodels predict возвращает (неиндексированные) результаты потенциально другой длины, чем набор данных, на котором основаны прогнозы.

Например, если тестовый набор данных test содержит пустые записи, то

mod_fit = sm.Logit.from_formula('Y ~ A B C', train).fit()
press = mod_fit.predict(test)

создаст массив короче, чем длина test, и к нему нельзя добавить с пользой

test['preds'] = preds

А поскольку результат predict не индексируется, нет возможности восстановить строки, к которым должны быть привязаны результаты.

Какова идиома для связывания predict результатов со строками, из которых они были сгенерированы? Возможно, есть способ заставить predict возвращать фрейм данных, который сохраняет индексы своего аргумента?


person orome    schedule 22.03.2014    source источник
comment
Почему predict вообще так работает? Почему бы не вернуть кадр данных с индексами, соответствующими тем строкам, из которых делаются прогнозы?   -  person orome    schedule 22.03.2014
comment
какую версию statsmodels вы используете?   -  person behzad.nouri    schedule 22.03.2014
comment
Я пробовал с 0.6.0.dev, и там, хотя вы не возвращаете кадр данных, пропущенные значения не удаляются из прогнозируемого вывода.   -  person behzad.nouri    schedule 22.03.2014
comment
@behzad.nouri: Итак, в 0.6.0.dev len(train) == len(preds), независимо от пропущенных значений в train? Что возвращается в press, если в train отсутствуют значения?   -  person orome    schedule 23.03.2014


Ответы (1)


Predict не должен отбрасывать строки. Можете ли вы опубликовать минимальный рабочий пример, где это происходит? Сохранение индекса pandas находится на моем радаре и должно быть исправлено в мастере в ближайшее время.

https://github.com/statsmodels/statsmodels/issues/1501

Изменить: не важно. Это известная проблема. https://github.com/statsmodels/statsmodels/issues/1352

person jseabold    schedule 22.03.2014
comment
Прохладный. Пока это известно, а не какая-то часть философии, которую я не уловил. Я с нетерпением жду обновления. Есть мысли по срокам? - person orome; 23.03.2014