0
$\begingroup$

I want to statistically compare two curve fitting from two different dataset : pA3 et pE5. They both follow sigmoid curves (I do not use high enough concentration of pA3 to see the lower plateau). So I did sigmoid curve fitting using SSlogis function. You can have a look on my data :

data


sig <- do ~ SSlogis(log(concentration), Asym, xmid, scal)
pA3 <- nls(sig, bilan, subset = peptide == "A3")
pE5 <- nls(sig, bilan, subset = peptide == "E5")

If I run pA3 and pE5, it is working and I can have my parameter estimates

> pA3
Nonlinear regression model
  model: do ~ SSlogis(log(concentration), Asym, xmid, scal)
   data: bilan
  Asym   xmid   scal 
 1.680  2.808 -1.201 
 residual sum-of-squares: 4.634

Number of iterations to convergence: 0 
Achieved convergence tolerance: 8.13e-06

> pE5
Nonlinear regression model
  model: do ~ SSlogis(log(concentration), Asym, xmid, scal)
   data: bilan
  Asym   xmid   scal 
 1.458 -1.185 -1.059 
 residual sum-of-squares: 4.362

Number of iterations to convergence: 0 
Achieved convergence tolerance: 4.123e-06

Now I want to know if my two fitting are statistically different. I found this case which has a similar question to mine stackexchange_curve_fitting. So I ran the code and I have got this error message :

> A3+E5 <- nls(do ~ SSlogis(log(concentration), Asym[peptide], xmid[peptide], scal[peptide]),
+            transform(bilan, peptide = as.character(peptide)), 
+            subset = peptide %in% c("A3","E5"), 
+            start = as.data.frame(rbind(coef(pA3), coef(pE5))))
Error in numericDeriv(form[[3L]], names(ind), env) : 
Missing value or an infinity produced when evaluating model


#Start values
> as.data.frame(rbind(coef(pA3), coef(pE5)))
      Asym      xmid      scal
1 1.680023  2.808046 -1.201244
2 1.457737 -1.184576 -1.059212

Based on my research start_function, it seems that it is corresponding to an error with the start function, but I didn't manage to resolve it. Since my start values correspond to my parameter estimates gave by nls, I think they are good start values. Anyway I changed the start with other values but it still doesn't work.

$\endgroup$
1
  • $\begingroup$ No idea, sorry, as I am not even a routine R user, but an incidental detail is that your plotted curves presumably come out of something like a spline function that unsurprisingly doesn't know that your curves are logistic, so there are spurious turning points shown whereas each curve should be monotone decreasing. There must also be a way in R to get ${\mu}$M instead of the barbaric uM. (And the $\mu$ should be upright too.) $\endgroup$ – Nick Cox Dec 11 '20 at 10:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.