полиномиальная регрессия в юлии - глм - PullRequest
3 голосов
/ 07 октября 2019

Возможно ли сделать полиномиальную регрессию в GLM-пакете внутри Юлии? Учитывая сходство с синтаксисом R, я надеялся, что

 fit(LinearModel, @formula(y ~ poly(x,5)), dataset)

будет работать (для подбора полинома степени 5). Это не.

Ответы [ 3 ]

3 голосов
/ 07 октября 2019

Хотя вы явно запрашиваете решение GLM.jl, позвольте мне, тем не менее, указать простое решение, используя Polynomials.jl :

using Polynomials
polyfit(x, 5)

См. polyfit для получения дополнительной информации.

2 голосов
/ 08 октября 2019

StatsModels.jl не предоставляет функцию poly(), но их документация действительно предоставляет полный пример , который показывает, как вы можете добавить свою собственную функцию poly(), которая будет работать внутри макроса @formula.

0 голосов
/ 07 октября 2019

Это не проблема с GLM напрямую, но с базовым макросом @formula из StatsModels.jl - насколько я знаю, в настоящее время нет синтаксиса для генерации полиномов вплоть до заданного порядка.

Однако вы можете применять функции Julia по столбцам внутри макроса формулы, поэтому, возможно, проще всего набрать его в ограниченном порядке, например

using GLM, DataFrames

y = [0.1*x^2 - 0.5*x for x ∈ 1:100]
x = collect(1:100)
df = (y = y, x = x)

fit(LinearModel, @formula(y ~ x + x^2), df)

Обратите внимание, что для этого не требуетсяx в виде столбца в кадре данных - @formula может генерировать необходимые регрессоры на лету в матрице модели.

Вы также можете генерировать формулы программно, как описано в документации здесь - проблема в том, что это еще не работает для передачи функций Джулии, как показано выше в макросе @formula. Я считаю, что работа над этим продолжается, так что следите за обновлениями.

...