Jupyter Notebook Examples available at : https://github.com/friesb/SINDy/tree/master/Comp_Exam
References available upon request
Consider a simulation of a epidemic on a network as seen in Figure 1. We allow individuals to be "Susceptible" (blue), "Infected" (orange) and "Removed" (green). The transmission of the disease occurs with some chance when an infected person is connected to an infected individual. We can track the number of S, I, and R individuals over time in Figure 2A. We can consider multiple simulations and average these results. The averaged trajectories are in Figure 2B.
We ask, is there an underlying process occurring that describes the spread of the disease on the network? One that is not random, but rather, deterministic. SINDy gives us an opportunity to answer this question. SINDy defines a mathematical model that can be analyzed theoretically and offer deeper insight into the underlying spread on the network.
Epidemiology is one example of the potential use for SINDy in global model discovery from local dynamics. Other areas of application include physical/engineering systems (such as fluid dynamics), biological systems (such as inter-organism dynamics), and social systems (such as epidemiology or opinion dynamics).
In order to apply SINDy to various data or simulations reliably, a systematic approach needs to be developed. This approach is described below and is outlined through various examples in a more technical write-up.
Make sure the length of time described by the data and the resolution of the data is sufficient for SINDy's application
Make sure the data is not too noisy.
If (1.) is not met, consider either more data or interpolate to approximate better resolution. If (2.) is not met, apply a noise-reduction method where applicable.
Start by allowing all possible terms in the mathematical model.
Slowly reduce the terms until as few terms remain that still describe the given data.
Use the mathematical model to simulate potential results; do these match the original data?
Manually adjust the resolution of the initial data; do you get the same results?
Manually add small amounts of noise; do you get the same results?
If you answer yes to these. Then you have a higher chance of discovering the right system.
Figure 1: Network Epidemic Simulation (100 individuals total)
Figure 2:
Top: (A) Single Simulation of Random SIR model on Network
Bottom: (B) Averaged Simulations of Random SIR model on Network
We start by considering the Lorenz '63 system with standard coefficients:
First note that this is a chaotic system, that is, the trajectories are sensitive to small changes in the initial condition. This can be seen in the video below. Even though the trajectories start close together, knowing which wing one is on does not necessary tell us which wing the other is on.
If we have take a single trajectory and take no knowledge of the underlying system, first discover the characteristic time scale. This is given by the first crossing of the x-axis in Figure 4 is considered the characteristic time scale (~.2)
We notice that our given trajectory has a sufficient amount of points and that no noise is present in the trajectory. Thus, we use the apply SINDy. The discovered system is:
We can consider what this trajectory looks like when we resimulate this new dynamical system. We notice that the trajectory follows the original for a period of time the chaos takes over. Trajectories with varying initial conditions are given as well to show the behavior is comparable.