Я использую statsmodels (открытые для других опций Python) для запуска некоторой линейной регрессии.Моя проблема в том, что мне нужно, чтобы регрессия не имела перехвата и не ограничивала коэффициенты в диапазоне (0,1), а также суммировала до 1.
Я пробовал что-то подобное (по крайней мере, для суммы 1):
from statsmodels.formula.api import glm
import pandas as pd
df = pd.DataFrame({'revised_guess':[0.6], "self":[0.55], "alter_1":[0.45], "alter_2":[0.2],"alter_3":[0.8]})
mod = glm("revised_guess ~ self + alter_1 + alter_2 + alter_3 - 1", data=df)
res = mod.fit_constrained(["self + alter_1 + alter_2 + alter_3 = 1"],
start_params=[0.25,0.25,0.25,0.25])
res.summary()
, но все еще борется за соблюдение ограничения «неотрицательных» коэффициентов.