Как запустить модель NLS Gompertz во многих наборах данных? - PullRequest
0 голосов
/ 24 апреля 2020

Я использовал следующую модель подгонки для подгонки моих данных в R:

conc <- c(2.5,2.8,3.6,1.8,4.7,3.6,5.5,5.5,5.7,5.7,4.9,5.6,6.5,8.3,5.8,5.8)
time <- c(0,24,48,72,96,120,144,168,192,216,240,264,288,312,336,360)
data.15 <- data.frame(time, conc) # this data at 15°C
data <- data.15

#building the model --> Gompertz
fit.gompertz <- function(conc, time){
data <- data.frame(y=conc, t=time)
# Must have at least 3 datapoints at different times
if (length(unique(data$t)) < 2) stop("too few data points to fit curve")
# Pick starting values ###
i <- which.max(diff(data$y))
starting.values <- c(a=max(data$y), 
                   mu=max(diff(data$y))/(data[i+1,"t"]-data[i, "t"]), 
                   y0 = min(data$y),
                   lambda=i)
print("Starting Values for Optimization: ")
print(starting.values)
##########################
formula.gompertz <- "y ~ y0 + a*exp(-exp(mu*exp(1)/a*(lambda-t)+1))"
nls(formula.gompertz, data, starting.values, 
  algorithm = "port",
  nls.control(maxiter = 400, tol = 1e-05, printEval = FALSE, warnOnly = TRUE))
} 
(fit.growth <- fit.gompertz(data$conc, data$time))

Я запускаю эти данные на одном температурном уровне. В этом примере при 15 ° C. Теперь, как запустить эту модель при разных уровнях температуры одновременно?

data <- data.5
data <- data.10
data <- data.15
data <- data.20
data <- data.25

Я хотел бы использовать ту же модель при 5 ° C, 10 ° C, 15 ° C , 20 ° C, 25 ° C сразу и запишите все результаты (подогнанные параметры, R-квадрат, MSE, RMSE и другие значения статов).

Итак, результат будет такой:

temp a     mu    y0    lambda   R2    MSE    RMSE   Other modified values
5    ...   ...   ...   ...      ...   ...    ...    ...
10   ...   ...   ...   ...      ...   ...    ...    ...
15   ...   ...   ...   ...      ...   ...    ...    ...
20   ...   ...   ...   ...      ...   ...    ...    ...
25   ...   ...   ...   ...      ...   ...    ...    ...

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...