У меня есть следующая модель:
![$y(t) = C + A_{0}\exp^{(-\sigma t)}\cos(\omega_dt+\phi)$](https://i.stack.imgur.com/xnHiv.gif)
который я кодировал в R как:
function(t,C,Ao,s,wd,ph) C + Ao * exp(-s*t) * cos(wd*t + ph)
Я хочу использовать это уравнение для формирования прогнозной модели.
Однако я не могу понять, как успешно выполнить или построить это уравнение.
- Я пытался
nls
, но получал различные ошибки (в том числе те, которые предупреждали меня о singular gradient
.
Я посмотрел здесь , но я не вижу, куда идти здесь, учитывая, что моя модель не работает.
Как мне смоделировать и построить график этой функции в R?
Что я пробовал:
LTI.func <- function(t,C,Ao,s,wd,ph) C + Ao * exp(-s*t) * cos(wd * t + ph)
mod <- nls(Y ~ LTI.func(t = I(scale(t)), C, Ao, s, wd, ph),
data = dat,
start = list(C = 1, Ao = 1, s = 1, w = 1, ph = 1))
Я понятия не имел, что starts
выбрать, поэтому я попробовал несколько случайных, что привело к ошибкам. Даже когда я выбирал старты, руководствуясь тенденцией y (t) ~ t, которую я мог видеть, я всегда получал какую-то ошибку:
Error in nlsModel(formula, mf, start, wts) :
singular gradient matrix at initial parameter estimates
Error in nls(Y ~ LTI.func(I(scale(t)), C, Ao, s, wd, ph), data = dat :
singular gradient
Обновление:
Вот пример набора данных:
dat <- data.frame(t = c(72, 25, 10, 88, 67, 63, 34, 41, 75, 13, 59, 8, 30, 52, 21),
Y = c(108.7, 157.5, 17.7, 175, 246.8, 233.5, 208.6, 246.5, 126.5,
45.5, 214.1, 4.9, 184, 239.2, 113.3))