регрессия GLS (или, следовательно, также OLS) с ограничениями на параметры может быть легко запущена с использованием метода statsmodels GLM.fit_constrained () , как с кодом ниже (или здесь ) .
Как создать объект GLMresults, полученный в результате такой регрессии statsmodels GLM.fit_constrained () , чтобы результат оценки можно было сохранить для повторного использования для прогнозирования в новом сеанс в любое время позже?
У объекта GLMresults, полученного из fit_constrained () и содержащего соответствующий результат оценки, есть метод .save () , который обычно легко переносит объект в файл.
Этот .save () работает для результата стандартной (неограниченной) регрессии GLM, sm.glm.fit (). Однако, это не работает с результатом для sm.glm.fit_unconstrained (). Вместо этого он выдает ошибку засоления, по-видимому, потому что patsy DesignMatrixBuilder не является Picklable, поэтому он ссылается на проблему , которая никогда не решается здесь . Это по крайней мере для моего Python 3.6.3 (работает на Windows).
Пример:
import statsmodels
import statsmodels.api as sm
import pandas as pd
# Define exapmle data & Constraints:
import numpy as np
df = pd.DataFrame(np.random.randint(0,100,size=(100, 5)), columns=list('ABCDF'))
y = df['A']
X = df[['B','C','D','F']]
constraints = ['B + C + D', 'C - F'] # Add two linear constraints on parameters: B+C+D = 0 & C-F = 0
statsmodels.genmod.families.links.identity()
OLS_from_GLM = sm.GLM(y, X)
# Unconstrained regression:
result_u = OLS_from_GLM.fit()
result_u.save('myfile_u.pickle') # This works
# Constrained regression - save() fails
result_c = OLS_from_GLM.fit_constrained(constraints)
result_c.save('myfile_c.pickle') # This fails with pickling error (tested in Python 3.6.3 on Windows): "NotImplementedError: Sorry, pickling not yet supported. See https://github.com/pydata/patsy/issues/26 if you want to help."
Есть ли способ легко получить результат из fit_unconstrained () кражи, т.е. / или хранимые?
Я ниже предлагаю первый обходной ответ; это тривиально и хорошо работает для меня до сих пор. Однако я не знаю, действительно ли это целесообразно или существуют большие риски, и / или существует какое-либо предпочтительное альтернативное решение.