Fichier:Detrended fluctuation analysis, illustrated with Brownian motion.png

Fichier d’origine(1 582 × 1 570 pixels, taille du fichier : 454 kio, type MIME : image/png)

Ce fichier et sa description proviennent de Wikimedia Commons.

Description

Description
English: Input:

`xs`: a time series `n`: segment length

`N = len(xs)` `d = floor(N/n)` `ys = np.zeros(d*n)` `mean_x = mean(xs)` `Xs = cumsum(xs - mean_x)` 1. Initialize a plt plot with three subplots, using `fig, axes = subplot_mosaic("A;B", figsize=(20, 20))` 2. On `axes["A"]` plot `Xs`. 3. Divide `Xs` into consecutive segments of length `n`. For each of the `d` segments,

 fit a linear trend by least squares, 
 plot it on `axes["A"]`, as a thin red line.
 add a black dashed vertical line at the end of the segment.
 Store the detrended values to the corresponding segment in `ys`

4. Plot `ys` on `axes["B"]`


```python import matplotlib.pyplot as plt import numpy as np from sklearn.linear_model import LinearRegression

def perform_DFA(xs, n, axa, axb):

   N = len(xs)
   d = np.floor(N/n).astype(int)
   ys = np.zeros(d*n)
   
   # Compute the cumulative sum Xs
   mean_x = np.mean(xs)
   Xs = np.cumsum(xs - mean_x)
   # Plot Xs on axes["A"]
   axa.plot(Xs, label='Cumulative sum')
   
   # Linear regression model for fitting trends
   model = LinearRegression()
   # Loop over the segments
   for i in range(d):
       # Extract the current segment
       segment = Xs[i*n:(i+1)*n]
       
       # Fit a linear trend by least squares
       x = np.arange(n).reshape(-1, 1)
       y = segment.reshape(-1, 1)
       model.fit(x, y)
       trend = model.predict(x)
       # Plot the trend
       axa.plot(range(i*n, (i+1)*n), trend, 'r-', linewidth=0.5)
       # Add a black dashed vertical line at the end of the segment
       if i < d - 1:
           axa.axvline(x=(i+1)*n, color='k', linestyle='--')
       # Store the detrended values
       ys[i*n:(i+1)*n] = segment - trend.flatten()
   # Plot detrended time series
   axb.plot(ys)
   # axa.set_title("Cumulative sum with trend lines")
   # axb.set_title("Detrended cumulative series")
   
   return np.var(ys)

np.random.seed(42)

  1. Generate white noise sequence

N = 2**10 xs = np.random.normal(0, 1, N) plt.rcParams.update({'font.size': 0})

  1. Initialize a plot with three subplots

fig, axes = plt.subplots(nrows=10, ncols=1, figsize=(20, 20))

for i in range(5, 10):

   n = 2**i
   v = perform_DFA(xs, n, axes[2*(i-5)], axes[2*(i-5)+1])

plt.show()

```
Date
Source Travail personnel
Auteur Cosmia Nebula

Conditions d’utilisation

Moi, en tant que détenteur des droits d’auteur sur cette œuvre, je la publie sous la licence suivante :
w:fr:Creative Commons
paternité partage à l’identique
Vous êtes libre :
  • de partager – de copier, distribuer et transmettre cette œuvre
  • d’adapter – de modifier cette œuvre
Sous les conditions suivantes :
  • paternité – Vous devez donner les informations appropriées concernant l'auteur, fournir un lien vers la licence et indiquer si des modifications ont été faites. Vous pouvez faire cela par tout moyen raisonnable, mais en aucune façon suggérant que l’auteur vous soutient ou approuve l’utilisation que vous en faites.
  • partage à l’identique – Si vous modifiez, transformez, ou vous basez sur cette œuvre, vous devez distribuer votre contribution sous la même licence ou une licence compatible avec celle de l’original.

Légendes

Ajoutez en une ligne la description de ce que représente ce fichier

Éléments décrits dans ce fichier

dépeint

image/png

Historique du fichier

Cliquer sur une date et heure pour voir le fichier tel qu'il était à ce moment-là.

Date et heureVignetteDimensionsUtilisateurCommentaire
actuel13 juillet 2023 à 06:13Vignette pour la version du 13 juillet 2023 à 06:131 582 × 1 570 (454 kio)Cosmia NebulaUploaded while editing "Detrended fluctuation analysis" on en.wikipedia.org

La page suivante utilise ce fichier :

Usage global du fichier

Les autres wikis suivants utilisent ce fichier :

Métadonnées