ошибка » длина ‘dimnames’ [2] не равна экстенту массива» при использовании функции nlsLM

#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 выше со всем кодом.