Next Point in a Curve?

2.7k Views Asked by At

If I have a series of data points that can be plotted as a curve, but I don't know the underlying function responsible for this, how can I calculate the next data point in the curve?

The data points are measurements taken at regular time intervals.

I am not a mathematician, but will be able to understand any clear and simple explanation.

Many thanks for any help.

2

There are 2 best solutions below

0
On

There will not be any one right answer. If you have n points, and add any other point (as long as it doesn't have the same $x$ value as an existing point), you can draw a polynomial of degree n through those. This is called overfitting.

What you should do is take a guess at what kind of curve it is (quadratic, sinusoidal, exponential, logistic), then tune the parameters of those simpler curves to minimize error. For example, if it looks quadratic, take a general quadratic ($Ax^2 + Bx + C = 0$) and select $A$, $B$, and $C$ so that the (root-mean-square?) error is smallest.

0
On

The simple answer is, you can't. If you are seeing a pattern, you can pretend the pattern continues by identifying it and extrapolating it. Curve fitting creates a polynomial extrapolation, for example. In physics you have a similar situation, where you don't know the process describing a sequence of actions, but you've watched how it behaves long enough to describe a process, and that produces functions which should make predictions about the behavior of the process in extreme circumstances. In mathematics by itself, you'd have to know about the process to get any information. In that case, maybe you're saying you don't understand how the result you're monitoring comes about from the process, but you detect a pattern in it. Then you can often use induction to prove the pattern will continue as it seems to you. If you have a very large data set, and you can't deduce a clear pattern, you can also detect how close the pattern is to randomness through statistical analysis. Linguistic data and music tend to be near-random pink noise, and conform to a Zipf-Mandelbrot distribution, whereas algorithmic processes appear significantly less random. Another approach might be the discrete Fourier transform. The resulting frequency content could be the more appropriate place to look for patterns. Then there are hidden Markov models, but I couldn't tell you how to use them. Is it fractal? Then maybe you can produce it recursively. Again, only a model to be tested if you don't know anything about the process. If the function will keep spitting out values forever, you're not stuck with you current data set, or if it's large enough that you can pretend you're receiving it as a stream and select a new piece of information many many times, you can build a machine learning algorithm, or a genetic algorithm, which evolves an oracle program. This has actually been used to build a program that was able to deduce many of the known laws of physics from a feed of raw data. Or, if it's a quantum process, you can use a quantum oracle, serving the role of the data set. You could try out cellular automaton rules. You could test to see if it forms a geometric series. You could map the data set to the motion of an object during an animation and see if its behavior is recognizable. You could play it as an audio file. You could take the inverse fourier transform and play that as an audio file. You can search google images often enough that you see something that looks similar to your data set by chance. This one has solved many of my own problems.