```{css, echo=FALSE} body .main-container { max-width: 1024px !important; width: 1024px !important; } body { max-width: 1024px !important; }
```r library(inflection) knitr::opts_chunk$set(echo = TRUE) options(max.width = 1000) options(max.print = 100000)
Let’ s take the function: $$f (x) = 5 + 5\, tanh (x − 5)$$ after [3], which has p = 5, L = 10, x1 = 2.7024, x99 = 7.2976 and examine it at the interval [2, 8] in order to have data symmetry w.r.t. inflection point. The function is also symmetrical around inflection point, i.e. we have total symmetry.
From Corollary 1.1 of [1] we compute $x_l = 5.970315941, x_r = 4.029684059$, $x_{F1} = 3.850750196, x_{F2} = 6.149249804$, all inside [2, 8], thus all methods are theoretically applicable.
We first take n = 500 sub-intervals equal spaced without error just for checking our estimators. The results are presented at Table 1 of [1], while here we also present the BESE iterations done by 'bese()'.
library(inflection) data("table_01") x=table_01$x y=table_01$y plot(x,y,cex=0.3,pch=19) grid() bb=ese(x,y,0);bb pese=bb[,3];pese abline(v=pese) cc=bese(x,y,0) cc$iplast abline(v=cc$iplast,col='blue') knitr::kable(cc$iters, caption = 'BESE')
We observe that $\chi_l = 5.9720, \chi_r = 4.0280$, $\chi_{F1} = 3.8480, \chi_{F2} =6.1520$ are very close to the theoretically expected values, so we are on the results of Lemma 1.3 of [1]. The absolutely accuracy from the first apply of all methods confirms our theoretical analysis.
We next add the error term $\epsilon_i\sim\,U(−0.05, 0.05)$ via the process 14 of [1] and run our algorithms again.The results are presented at Table 2 of [1] and here we also present the BESE iterations done by 'bese()'.
library(inflection) data("table_02") x=table_01$x y=table_01$y plot(x,y,cex=0.3,pch=19) grid() bb=ese(x,y,0);bb pese=bb[,3];pese abline(v=pese) cc=bese(x,y,0) cc$iplast abline(v=cc$iplast,col='blue') knitr::kable(cc$iters, caption = 'BESE')
We continue with the same sigmoid function, but now we choose a proper [a, b] to show data asymmetry w.r.t. inflection point.
Let’ s take for example [4.2, 8]. If we do our theoretical computations we find $x_l = 5.974322740, x_r = 4.029684059$, $x_{F1} = 4.025677260$, $x_{F2} = 5.974322740$. We have that $x_r < a$, so $\chi_r$ has to estimate a = 4.2 and $\chi_S$ must be close to 4.703504993. Additionally, $x_{F1} < a$, so $\chi_{F1}$ must be also an estimation of a, thus $\chi_{D}$ must lie near the value 5.087161370. It' s time to see if our theoretical predictions will be confirmed by experiment. We use for comparability the same Standard Partition as before and have the output presented at Table 3 and 4 of [1].
data("table_03_04") x=table_03_04$x y=table_03_04$y tese=ese(x,y,0);tese pese=tese[,3] tede=ede(x,y,0);tede pede=tede[,3] cc=bese(x,y,0) cc$iplast dd=bede(x,y,0) dd$iplast
plot(x,y,cex=0.3,pch=19) grid() abline(v=pese) abline(v=cc$iplast,col='blue') abline(v=dd$iplast,col='red') knitr::kable(cc$iters, caption = 'BESE') knitr::kable(dd$iters, caption = 'BEDE')
Let’ s add again an same error term $\epsilon_i\sim\,U(−0.05, 0.05)$ and run our algorithms. The results at Table 5 of [1] clearly are close enough to the theoretical expectations. Since ESE method did not estimate the inflection point with acceptable accuracy, after running BESE and BEDE iterative methods we find Table 6 of [1] which is a clear improvement of both estimations.
data("table_05_06") x=table_05_06$x y=table_05_06$y tese=ese(x,y,0);tese pese=tese[,3] tede=ede(x,y,0);tede pede=tede[,3] cc=bese(x,y,0) cc$iplast dd=bede(x,y,0) dd$iplast plot(x,y,cex=0.3,pch=19) grid() abline(v=pese) abline(v=cc$iplast,col='blue') abline(v=dd$iplast,col='red') knitr::kable(cc$iters, caption = 'BESE') knitr::kable(dd$iters, caption = 'BEDE')
Let’ s examine the function: $$f (x) = 10 e^{-e^{5}e^{−x}}$$ after [4], in the interval [3.5, 8]. It is easy to prove that f is (0.224, 1.0)-asymptotically symmetric around inflection point, so we can handle it similar to a symmetric sigmoid only for a distance of ±1 from p = 5.
We use, for comparison reasons, the same SP with 500 sub-intervals without error and obtain the Table 8 of [1] which is absolutely compatible with theoretical predictions. The ESE & EDE iterations are showed at Table 9 of [1] where we observe convergence to the real p for both two methods.
data("table_08_09") x=table_08_09$x y=table_08_09$y tese=ese(x,y,0);tese pese=tese[,3] tede=ede(x,y,0);tede pede=tede[,3] cc=bese(x,y,0) cc$iplast dd=bede(x,y,0) dd$iplast
plot(x,y,cex=0.3,pch=19) grid() abline(v=pese) abline(v=cc$iplast,col='blue') abline(v=dd$iplast,col='red') knitr::kable(cc$iters, caption = 'BESE') knitr::kable(dd$iters, caption = 'BEDE')
We continue with our familiar SP by adding error uniformly distributed by U(−0.05, 0.05) and the results are given at Table 10 of [1] while ESE & EDE iterations are shown at Table 11 of [1].
data("table_10_11") x=table_08_09$x y=table_08_09$y tese=ese(x,y,0);tese pese=tese[,3] tede=ede(x,y,0);tede pede=tede[,3] cc=bese(x,y,0) cc$iplast dd=bede(x,y,0) dd$iplast
plot(x,y,cex=0.3,pch=19) grid() abline(v=pese) abline(v=cc$iplast,col='blue') abline(v=dd$iplast,col='red') knitr::kable(cc$iters, caption = 'BESE') knitr::kable(dd$iters, caption = 'BEDE')
From these Tables we conclude that convergence to the true value of inflection point p = 5 occurs from the iterative application of ESE and EDE methods in one or two steps only.
Let the polynomial function: $$f(x)=-\frac{1}{3}\,x^3+\frac{5}{2}\,x^2-4x+\frac{1}{2}$$ We study it at [-2, 7], it has inflection point at p = 2.5 and we have total symmetry. The SP with 500 sub-intervals without error gives Table 13 of [1] which is absolutely compatible with theoretical predictions. There is no need for any kind of iteration, because both methods agree with the true value.
data("table_13") x=table_13$x y=table_13$y plot(x,y,cex=0.3,pch=19) grid() bb=ese(x,y,0);bb pese=bb[,3];pese abline(v=pese)
The same SP with uniform error distributed by U(−2, 2) gives the results of Table 14 of [1] and two ESE iterations are presented at Table 15 of [1].
data("table_14_15") x=table_14_15$x y=table_14_15$y plot(x,y,cex=0.3,pch=19) grid() bb=ese(x,y,0);bb pese=bb[,3];pese abline(v=pese) cc=bese(x,y,0) cc$iplast abline(v=cc$iplast,col='blue') knitr::kable(cc$iters, caption = 'BESE')
For the same symmetric 3rd order polynomial as above we change the interval to [-2, 8], thus we have data right asymmetry now. The case of SP with 500 sub-intervals and no error gives Table 17 of [1], while ESE and EDE iterations are presented at Table 18 of [1]. First results are absolutely compatible with theoretical predictions for ESE method.
data("table_17_18") x=table_17_18$x y=table_17_18$y bb=ese(x,y,0);bb pese=bb[,3];pese plot(x,y,cex=0.3,pch=19) grid() cc=bese(x,y,0) cc$iplast dd=bede(x,y,0) dd$iplast abline(v=pese) abline(v=cc$iplast,col='blue') abline(v=dd$iplast,col='red') knitr::kable(cc$iters, caption = 'BESE') knitr::kable(dd$iters, caption = 'BEDE')
We add uniform error distributed by U(-2, 2) and we have the results of Table 19 of [1], while one ESE & one EDE iteration are given at Table 20 of [1].
data("table_19_20") x=table_19_20$x y=table_19_20$y bb=ese(x,y,0);bb pese=bb[,3];pese plot(x,y,cex=0.3,pch=19) grid() cc=bese(x,y,0) cc$iplast dd=bede(x,y,0) dd$iplast abline(v=pese) abline(v=cc$iplast,col='blue') abline(v=dd$iplast,col='red') knitr::kable(cc$iters, caption = 'BESE') knitr::kable(dd$iters, caption = 'BEDE')
There exist a problem here. Although we have a symmetric polyno- mial, the TESE is not equal to the true inflection point. A remedy for this problem for the class of 3rd order polynomials is given with Lemma 2.1 of [1]. Lets apply it here. We have that a = −2, b = 8 and from Table 19 of [1] is $\chi_{r} = −0.26, \chi_{l} = 4.74$, so we have that: $$\hat{p}=\frac{1}{3}\,\chi_{l} + \frac{1}{3}\,\chi_{r}+\frac{1}{6}\,a+\frac{1}{6}\,b=2.493333333$$ which is much closer to the true value of 2.5.
[1] Demetris T. Christopoulos (2014), Developing methods for identifying the inflection point of a convex/concave curve. arXiv:1206.5478v2 [math.NA]. URL: https://doi.org/10.48550/arXiv.1206.5478
[2] Demetris T. Christopoulos (2016), On the Efficient Identification of an Inflection Point, International Journal of Mathematics and Scientific Computing , Volume 6 (1), June 2016, Pages 13-20, ISSN: 2231-5330. URL: https://veltech.edu.in/wp-content/uploads/2016/04/Paper-04-2016.pdf
[3] J.C. Fisher and R.H. Pry (1971), A Simple Substitution Model of Technological Change, Technological Forecasting and Social Change, 3, pp. 5–88. URL: https://doi.org/10.1016/S0040-1625(71)80005-7
[4] B. Gompertz (1825), On the Nature of the Function Expressive of the Law of Human Mortality, and on a New Mode of Determining the Value of Life Contingencies, Philosophical Transactions of the Royal Society of London, 115, pp. 513–585.
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.