Yes, it is a lousy fit ;-)
In[45]:= nlm["AdjustedRSquared"]
Out[45]= 0.156392
When doing NonlinearModelFit
the default Method
option is Method->Automatic
and this tells Mathematica to choose a method that it thinks is the right one. Apparently it is failing miserably in this case. So the next step is to try a specific Method. The documentation tells us that there are the following choices:
"ConjugateGradient", "Gradient", "LevenbergMarquardt", "Newton",
"NMinimize", "QuasiNewton"
So best to explore them with a Manipulate
:
Manipulate[
data = {{0, 0}, {1800, 0.258738807}, {3600, 0.362822881}, {5400,
0.473489839}, {7200, 0.54841429}, {9000, 0.614915391}, {10800,
0.638559079}, {14400, 0.68690743}, {18000, 0.730710491}};
nlm = NonlinearModelFit[data, 1 - ((1/(1 + ( b x))^3)), {b}, x,
Method -> method];
Column[{
Show[Plot[nlm[x], {x, 0, 18000}, PlotRange -> All], ListPlot[data]],
nlm["AdjustedRSquared"]}
],
{method, {"ConjugateGradient", "Gradient", "LevenbergMarquardt",
"Newton", "NMinimize", "QuasiNewton"}}
]
Note that I changed your function to
1 - ((1/(1 + ( b x))^3))
as there are no reasons to include all the extra constants--they cal all be subsumed into your b
.