I have read a post ( Sigmoidal Curve Fit in R ). It was labeled duplicated, but I can\'t see anything related with the posts. And the answer given for the posts was not enou
I see two issues.
the default algorithm of nls is very sensitive to the starting parameter. In your example data I found it useful to use algorithm='port'. Alternatively switching to a "robust" implementation might also help.
It helps understanding the role of the parameter in your model.
The simple interpretation for your model is: The sigmoid goes in y from 0 to a. It reaches the "half way" point at x=c. b has the role of a slope, and if negative the model would go from a to 0 instead.
Specifically to the test data posted by you I would estimate the start values as following:
So ultimately using the formula
fitmodel <- nls(y ~a/(1 + exp(-b * (x-c)) ) + d, start=list(a=5000,b=1,c=3, d=1000))
gives a fit (also works without the d). Trying around I found setting algorithm='port' made the command even less sensitive to the start values.