Функция линеаризации, чтобы найти лучшие начальные значения - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть несколько человек, для каждого из которых я хочу оценить два параметра модели.У меня нет проблем с поиском методом проб и ошибок подходящих начальных значений для одного человека.Тем не менее, у меня есть более 1000 человек, и выполнение этого вручную для каждого заняло бы у меня навсегда.В Интернете я видел, что люди линеаризуют свою функцию и используют функцию lm, чтобы получить лучшие начальные значения.

Моя проблема в том, что я не уверен, смогу ли я сделать это с помощью своей функции, и я знаю, как, возможно, у вас, ребята, есть идея или альтернатива.

Ниже я далЯ хочу использовать функцию

nlfrecet <- function(psi,x){
a<- psi[1]
alpha <-0.9
beta<- psi[2]

temp <- a*(alpha/beta)*((beta/((x)))^(alpha+1))*exp(-(beta/(x))^alpha)

return(temp)
}

Это данные для одного человека

y<-c(0.0, -2.0, -3.0, 16.0,  3.0,  2.0,  1.0,  0.0,  0.0, 14.0,  1.0,  4.0,     -1.2,
 0.0,  8.0,  1.0,  1.0, -0.2, -1.0, 15.0,  3.0,  4.0,  1.0, -0.7, -1.2, 19.0,
 8.0,  4.0)

 x<-  c(0, 0,  14,  64, 281, 485, 672, 924,  21,  64,  14, 213, 488,  14,  50, 325,
557, 763, 844,  52,  14, 189,393, 611, 808,  45, 259, 480)

nlm(y~nlfrecet(psi,x), start=list(psi=c(a=2000, b=100)))
...