#r #nls
#r #nls
Вопрос:
Я пытаюсь использовать функцию nlsLM из пакета minpack.lm в R.
Я хочу оценить параметры kd и mu в этом модельном уравнении.
ч. мод
и это мои стартовые ценности bounds0 lt;- list(kd = c(1/3000, 1/2000), mu = c(1, 10))
Я строю фрейм данных, используя эти
Time.cal lt;- c(0, 1000, 2000, 2500, 2750, 3000, 3250, 3500, 3750, 4000, 5000) P.cal.norm lt;- c(1.0, 0.99, 0.98, 0.95, 0.795, 0.59, 0.35, 0.295, 0.175, 0.14, 0.095) dataset = data.frame(Time.cal,P.cal.norm)
и вот как я структурировал свою модель nlsLM
h.mod0.fit2 lt;- nlsLM(h.mod, data = dataset, start = bounds0, algorithm = 'LM')
ошибка, которую я получаю, такова
Error in dimnames(x) lt;- dn : length of 'dimnames' [2] not equal to array extent In addition: There were 50 or more warnings (use warnings() to see the first 50)
когда я набираю предупреждения (), я получаю 50 строк этого
Warning messages: 1: In kd * Time.cal : longer object length is not a multiple of shorter object length
Что я могу сделать, чтобы устранить эту ошибку? Спасибо.
Здесь приведен весь код:
library(rcompanion) library(nlstools) library(minpack.lm) P0 lt;- 1.0 B lt;- 1 Time.cal lt;- c(0, 1000, 2000, 2500, 2750, 3000, 3250, 3500, 3750, 4000, 5000) P.cal.norm lt;- c(1.0, 0.99, 0.98, 0.95, 0.795, 0.59, 0.35, 0.295, 0.175, 0.14, 0.095) phys.mods lt;- function(Time, Temp) { k.h lt;- A.h*(RH.eff)^n*exp(-Ea.h/((Temp 273.15)*8.62e-5)) P.Time lt;- P0*(1 - exp(-(B/(k.h*Time))^mu)) t.f lt;- B/(k.h*(abs(log(0.2)))^(1/mu)) res lt;- list("k.h" = k.h, "P.Time" = P.Time, "t.f" = t.f) return(res) } h.mod lt;- P.cal.norm ~ P0*(1 - exp(-(B/(kd*Time.cal))^mu)) bounds0 lt;- data.frame(kd = c(1/3000, 1/2000), mu = c(1, 10)) h.mod0.fit lt;- nlsLM(h.mod, data = data.frame(Time.cal, P.cal.norm), start = bounds0, algorithm = "LM")
Комментарии:
1. Я указал P0 и B выше со всем кодом.