3

I would like to find an analytical expression for a family of function that would look like the curves in the plot. Essentially ranging from the identity function up to sqrt kind of curve. What matters is that it must be concave and display some kind of saturation and also being able to parametrize the curvature.

I already had a look at functions like $f(x) = aX^b$ but for high values, you can not get the identity, also functions like $f(x) = a(a-b)e^{(-cX)}$, but there is no parameter to impact the curvature.

enter image description here

EDIT:

Related question initially asked on stackoverflow:

https://stackoverflow.com/questions/65580685/fitting-power-exponential-curve-that-goes-through-a-specific-point

Roger V.
  • 3,903

1 Answers1

0

Take a look at scaled versions of the cumulative distribution function of the beta distribution. Specifically, scale your $x$ by $\frac{1}{100}$, feed this into a beta CDF (which takes values between $0$ and $1$ and outputs values between $0$ and $1$), and multiply the result by $3$. This function will take a value of $0$ for $x=0$ and of $3$ for $x=100$.

The beta has two positive parameters. For concavity, you want to constrain the first parameter to be $\leq 1$ and the second to be $\geq 1$. Setting both equal to $1$ will give you the diagonal line (the black line below). Parameterizing both parameters as $\frac{1}{t}$ and $t$ for $t\geq 1$ will give you a symmetric curve, and if the parameters diverge from this relationship, you get asymmetric ones.

beta

R code:

xx <- seq(0,100,by=.1)
plot(xx,3*pbeta(xx/100,1,1),type="l",xlab="",ylab="",las=1)
lines(xx,3*pbeta(xx/100,0.5,1),col=2)
lines(xx,3*pbeta(xx/100,1,2),col=3)
lines(xx,3*pbeta(xx/100,0.5,2),col=4)
lines(xx,3*pbeta(xx/100,0.25,4),col=5)
legend("bottomright",lwd=1,col=1:5,
    legend=c("(1,1)","(0.5,1)","(1,2)","(0.5,2)","(0.25,4)"))
Stephan Kolassa
  • 123,354