Примерка для офсета в модной модели

Используя patsy, я понимаю, как включить или выключить перехват. Но мне не удалось получить горизонтальные смещения. Например, я хотел бы быть в состоянии соответствовать, по существу,

y = alpha + beta * abs(x_opt - x_obs)

с x_opt свободным в подгонке. Я пытался написать это так:

y ~ 1 + np.abs(y - x)

используя постоянный столбец для у. Но в скобках np.abs() patsy "выключается", а y - x просто интерпретируется как число. Если я перейду y на 1 или 20, я получу разные ответы.

Аналогичный вопрос касается, например, np.pow(1-x, 2) или синусоидальной волны. Возможность подгонки по смещению x была бы чрезвычайно полезной. Это возможно? Или это именно то, что подразумевается, что patsy не делает нелинейный?

1 ответ

Решение

patsy и большинство statsmodels работают только с моделями, линейными по параметрам. Точнее, модели, в которых матрица проектирования и расчетные параметры объединены линейно, x * beta.

Полиномы и сплайны являются нелинейными по основным переменным, но имеют линейное представление в терминах базисной функции и, следовательно, являются линейными по параметрам.

Единственными нелинейностями в моделях, которые в настоящее время реализованы в statsmodels, являются предопределенные нелинейности, такие как функции связи в GLM или дискретных моделях, параметры формы в моделях, таких как NegativeBinomial, или ковариации в смешанных моделях и GEE.

Лучшим пакетом Python для нелинейных наименьших квадратов в настоящее время является lmfit https://pypi.python.org/pypi/lmfit/

Другие вопросы по тегам