# Model fitting for concave curve: test if asymptote or convergence exist

I am asking a double check if conceptually I set up proper model and proceeding in good direction to drive conclusions.

I have a distribution that looks like this:

I want to test if for increasing x values, the slope of the curve flattens.

I want to test if, for x -> Infinity, either exists an asymptote, or test if the curve could be described or approximated by a linear function, and find the slope of the linear function (see the part of the curve after first 4000, 6000 points).

I would like a double check on what I am doing:

I thought to fit the distribution like this - is it correct?

fModel = Fit[%, {1, x, Exp[x]}, x]


For 10000 points:

7.89305 + 0.000332542 x // for 10000 points, slope is ~ 1/3007


The model fits as a linear function but I puzzled because Exp[x] seems to be completely ignored, despite the initial slope of the curve. How does it actually work this fitting?

When I test the same model with other samplings, 100, 1000 points, it seems to produce results with "similar" fitting, where slope seems to goes proportionally to the number of points :

7.89305 + 0.000332542 x // for 10000 points, slope is ~ 1/3007

5.34334 + 0.00331581 x // for 1000 points , slope is ~ 1/301

2.90882 - 7.12146*10^-44 E^x + 0.0317902 x // for 100 points, E^x is negligible, slope ~ 1/30


Is it sufficient to argue that slope of the curve progressively flattens as number of data tends to infinity?

Is it accurate to say that slope "converges" to a constant value "at a rate of 1/(3 * N) " ?

## 1 Answer

You ask:

Is it sufficient to argue that the slope of the curve progressively flattens as number of data tends to infinity?


If you set a threshold value epsilon for convergence, usually in Mathematical Analysis books, epsilon is set to a very tiny number and if epsilon>estimated value then you can say that it converges given this specific epsilon. Setting the level of epsilon is entirely up to you.

Answer to your second question:

For the rate, given an epsilon value, you should conduct a regression analysis. Given f(x)

f(x) = C Exp[b x]


take natural Log:

Log[f(x)] = Log[C] + b x + e


where e is residual with E[e]=0 assumed, where E is Expected Value operator. Taking derivative of the Log model with respect to x yields:

b=dLog[f(x)]/dx


which is the rate of change. This implies that Estimated(b) is the answer to your second question.

• thank you but I did not understand what is your suggestion. My first question is if my model is correct given that plot, and then if analysis is correct to drive correct conclusions. Oct 15, 2018 at 12:42
• @user305883: The answer to the first question is Yes it is sufficient. My suggestion is choose a small tolerance level, called epsilon, and if your target variable is less than epsilon, then conduct the rest of the analysis. Oct 15, 2018 at 12:58
• @user305883: Please note that your questions are not related to the use of Mathematica`, and they relate to mathematical knowledge. Therefore, your question may not get sufficient attention at this forum. Oct 15, 2018 at 15:06
• I agree not strictly related to Mathematica, yet I posted it here because I am using Mathematica as tool for statistical analysis (or prototyping). Oct 16, 2018 at 7:37