Начальные параметры в нелинейной регрессии в R - PullRequest
0 голосов
/ 01 апреля 2020

Я хочу узнать, как выполнять нелинейную регрессию в R. Мне удалось изучить основы функции nls, но как мы знаем, что в нелинейной регрессии важно использовать хорошие начальные параметры. Я попытался выяснить, как работают функции selfStart и getInitial, но не получилось. Документация очень скудная и не очень полезная. Я хотел изучить эти функции с помощью простых данных моделирования. Я смоделировал данные из модели logisti c:

n<-100 #Number of observations
d<-10000 #our parameters
b<--2 
e<-50 


set.seed(n)
X<-rnorm(n, -e/b, 2) #Thanks to it we'll have many observations near the point where logistic function grows the faster
Y<-d/(1+exp(b*X+e))+rnorm(n, 0, 200) #I simulate data

Теперь я хотел сделать регрессию с функцией f (x) = d / (1 + exp (b * x + e)), но я не не знаю, как использовать selfStart или getInitial. Не могли бы вы помочь мне? Но, пожалуйста, не говорите мне о SSlogis. Я знаю, что это функция, предназначенная для поиска начальных параметров в регрессии logisti c, но, похоже, она работает только в регрессии с одной объясняющей переменной, и я хотел бы узнать, как выполнить регрессию logisti c с более чем одной объясняющие переменные и даже как сделать общую нелинейную регрессию с помощью функции, которую я определил mysefl.

Буду очень признателен за вашу помощь.

1 Ответ

0 голосов
/ 02 апреля 2020

Я не знаю, почему исчисление хороших начальных параметров терпит неудачу в R. Цель моего ответа - предоставить метод для поиска достаточно хороших начальных параметров.

Обратите внимание, что существует не итерационный метод который не требует начальных параметров. Принцип объясняется в этой статье, с.37-46: https://fr.scribd.com/doc/14674814/Regressions-et-equations-integrales

Упрощенная версия показана ниже.

Если результатов недостаточно, их можно использовать в качестве начальных параметров в обычном программном обеспечении для нелинейной регрессии, например в R.

enter image description here

Числовой пример показан ниже. Обычно количество баллов намного выше. Здесь он намеренно низкий, чтобы упростить проверку при редактировании кода и его проверке.

enter image description here

...