0

I'm trying to fit the differential equation using the least squares method (FME package). However, I keep getting this error that I don't know how to tackle.

The reproducible example:

times = seq(0, 4, by = 0.5)
dat = data.frame(time = seq(1,4), 
                 Tick = c(128, 52.5, 28, 121)) 
N = 10

tick.model <- function(time, y, params, ...) {    #here we begin a function with three arguments
  with(as.list(c(y, params)),{
    
    dTick <- (30 - s.t*Tick)*Tick*0.3*N - delta.t*Tick
    return(list(c(dTick)))
  })
}
y = c(Tick = 82.375)

cost1 <- function(p) {
  out <- ode(y, times, tick.model, p)
  modCost(out, dat, weight = "none")
}
params <- c(s.t=0.1, delta.t = 1)
fit = modFit(f = cost1, p = params, lower = rep(0,2), 
             upper = c(10, 5)) 
summary(fit)

The result comes out like this:

Parameters:
         Estimate Std. Error t value Pr(>|t|)
s.t     0.3641876         NA      NA       NA
delta.t 0.0001417         NA      NA       NA

Residual standard error: 60.92 on 2 degrees of freedom
Error in cov2cor(x$cov.unscaled) : 'V' is not a square numeric matrix
In addition: Warning message:
In summary.modFit(fit) : Cannot estimate covariance; system is singular

Also, the fitted model doesn't look nice (pic here).

I have no idea what I could have done wrong.

kjetil b halvorsen
  • 1,206
  • 2
  • 18
  • 28
SJL
  • 3
  • 3

0 Answers0