Основная причина, по которой fit
является отдельным методом, видна из аргументов в fit
.Мы создаем конкретную модель только один раз, но мы можем захотеть, или нам, возможно, придется вызывать fit
несколько раз.
Одним из примеров являются проблемы в оптимизации, когда нам нужно опробовать различные оптимизаторы или начальные значения до достижения конвергенции.или понимая, что модель не подходит для данных и регулярного оптимума не существует.
Другой вариант, который доступен в качестве аргумента fit
, это разные cov_type
s, это разные методы для вычислениястандартные ошибки оценок параметров.
Другая причина заключается в том, что в нескольких моделях теперь есть несколько методов fit
, которые недоступны обычному методу fit
.Примерами являются fit_regularized
для штрафных оценок и fit_constrained
для оценок при линейных ограничениях на параметры.В этих моделях нам не требуется вызывать обычный метод fit
.
Более общий вопрос: почему statsmodels использует эту сложную иерархию классов и множество методов вместо того, чтобы помещать все в функции?
Основными причинами являются модульность, возможность повторного использования кода и ленивая оценка.