• Aucun résultat trouvé

3.3 Détection de points de ruptures online

3.3.2 Méthode de détection de ruptures online

Nous présentons maintenant l’algorithme pour la détection de ruptures online.

Nous nous plaçons dans le même cadre que dans la section 3.2.2 en consid-érant un modèle additif comme dans l’équation (2). On définit une fenêtre de longueur variable [D(t), t] avec 1 ≤ D(t) < t. L’idée est de faire glisser cette fenêtre de gauche à droite le long de la série temporelle.

A chaque glissement de la fenêtre, on cherche à savoir s’il y a une rupture entre le début de la fenêtre D(t) et la fin de la fenêtre t. La première fenêtre est notée [1, L] où on choisit L suffisamment grand pour qu’il soit "raisonnable" d’y trouver une rupture.

Cela signifie qu’on cherche s’il y a une différence significative entre les dis-tributions des séries restreintes aux intervalles [D(t), s] et [s+1, t] de tailles respectives N1 = s − D(t) + 1 et N2 = t − s, où s est une rupture potentielle. La démarche est illustrée dans la Figure 11. Pour cela on effectue donc un test de Chow.

Soient les hypothèses: �H0 : θ1 = θ2

H1 : θ1 �= θ2

Sous H1, le modèle s’écrit: � Yu = gθ1(Xu) + εu, D(t) ≤ u ≤ s Yu = gθ2(Xu) + εu, s + 1 ≤ u ≤ t Sous H0, le modèle s’écrit: Yu = gθ(Xu) + εu, D(t) ≤ u ≤ t La statistique de test est donnée par : F (s) = SC−(SC1+SC2)

q × t−D(t)+1−2qSC 1+SC2 où • q est la dimension de θ • SC =�t u=D(t)(Yu− gθˆ(Xu))2 • SC1 =�s u=D(t)�Yu− gθˆ1(Xu)�2 • SC2 =�t u=(s+1)�Yu− gθˆ2(Xu)�2

Cette statistique suit sous H0une loi de Fisher de paramètres q et t − D(t) + 1 − 2q. On maximise F (s) pour s = D(t), · · · , t et on pose ˆs = arg max

s=D(t),··· ,t

(F (s)). On calcule alors la p-value et on rejette l’hypothèse H0 si elle est inférieure à un certain seuil α. Dans ce cas, il y a nécessairement une rupture ˆτ sur l’intervalle [D(t), t]. Pour la trouver, on utilise l’algorithme défini dans l’équation (6) sur cet

3.3 Détection de points de ruptures online 38

intervalle. Ensuite la fenêtre glissante est réinitialisée : D(t) devient ˆτ + 1 et on remplace t par D(t) + L.

Si on accepte l’hypothèse H0, c’est-à-dire si la p-value est supérieure à α, alors on incrémente de 1 la taille de la fenêtre qui devient [D(t), t + 1]. On continue ainsi jusqu’à ce que la borne supérieure de la fenêtre soit supérieure ou égale à N.

Figure 11: Schéma récapitulatif de la méthodologie online. La méthode est décrite dans la Procédure 4:

3.3 Détection de points de ruptures online 39

Procédure 4: Procédure online • Initialisation : D(t) = 1, t = L • Tant que t ≤ N

– Calculer F (s) pour s = D(t), · · · , t et définir ˆs = arg max

s=D(t),··· ,t

(F (s))

– Réaliser un test de Chow sur la partition [D(t), ˆs] et [ˆs + 1, t] : Calculer la p-value

– Si p-value est significatif:

∗ Calculer la rupture ˆτ entre D(t) et t avec un algorithme de détection d’une rupture

∗ Réinitialiser

D(t) := ˆτ+ 1 et t := ˆτ+ 1 + L – Sinon: incrémenter la taille de la fenêtre:

D(t) := D(t) & t := t + 1

Si de nouvelles données (YN + 1, YN + 2, · · · ) sont acquises, on conserve les points de rupture déjà détectés et on fait une mise à jour de la série pour continuer l’exploration.

3.3.3 Applications sur données simulées

Dans cette partie nous utilisons les données simulées selon les scénarios A et B intro-duits dans la partie 3.2.5, et le modèle linéaire par morceaux de l’équation (12).

Pour le test de Chow, on cherche s’il y a une différence significative entre les paramètres θ1 et θ2 des séries restreintes aux intervalles [D(t), s] et [s + 1, t] de tailles respectives N1 = s − D(t) + 1 et N2 = t − s.

Soit le modèle Yu = θ(1) + θ(2)u + εu où θ = (θ(1), θ(2)) est le vecteur de paramètres du modèle linéaire.

Sous H0, le modèle s’écrit:

Yu = θ(1)+ θ(2)u + εu , D(t) ≤ u ≤ t Sous H1, le modèle s’écrit:

Yu = θ1(1)+ θ(2)1 u + εu, D(t) ≤ u ≤ s Yu = θ(1)2 + θ(2)2 u + εu, s + 1 ≤ u ≤ t, avec (θ1(1), θ(2)1 ) �= (θ(1)2 , θ2(2))

3.3 Détection de points de ruptures online 40

dans l’équation (15) : • SC1 = �s

u=D(t)C(Yu, Xu, θD(t),s, σ2) la valeur de la fonction d’erreur sur les données restreintes à l’intervalle [D(t), s].

• SC2 = �t

u=s+1C(Yu, Xu, θs+1,t, σ2) la valeur de la fonction d’erreur sur les données restreintes à l’intervalle [s + 1, t].

• SC = �t

u=D(t)C(Yu, Xu, θD(t),t, σ2) la valeur de la fonction d’erreur sur les données restreintes à l’intervalle [D(t), t].

On applique la méthode décrite dans la section 3.3.2. Nous avons testé plusieurs scénarios:

• N : 300 et 1000

• Bruits : 3%, 10% et 20% de la moyenne µ • Niveau α : 0,01, 0,05 et 10−3

Dans les Tables 5 et 6, on présente les résultats sur les données simulées. A1 : N = 300, Bruit = 3%µ, K = 3 α= 0, 05 α= 0, 01 α= 10−3

% des simulations détectant

le nombre exact de ruptures 97,7% 98,3% 96,7%

% sur-estimation 0,5% 0% 0%

% sous-estimation 1,8% 1,7% 3,3% Performance (|τi− ˆτi| ≤ 5 ) 97,5% [7,8] 99,4% [2,4] 97,5% [1,9]

Temps de calcul 0,68%[0,1] 0,71% [0,3] 0,75% [0,4] A2 : N = 300, Bruit = 10%µ, K = 3 α= 0, 05 α= 0, 01 α= 10−3

% des simulations détectant

le nombre exact de ruptures 96,5% 95,9% 95,7%

% sur-estimation 0% 0% 0%

% sous-estimation 3,4% 4,1% 4,3% Performance (|τi− ˆτi| ≤ 5 ) 99,3% [4,8] 99,8% [3,9] 99,1% [5,6]

Temps de calcul 0,70%[0,2] 0,74% [0,53] 0,81% [0,6] A3 : N = 300, Bruit = 20%µ, K = 3 α= 0, 05 α= 0, 01 α= 10−3

% des simulations détectant

le nombre exact de ruptures 93,3% 92,6% 90%

% sur-estimation 0% 0% 0%

% sous-estimation 6,7% 7,4% 10,0% Performance (|τi− ˆτi| ≤ 5 ) 97,9% [8,2] 98,2% [6,5] 95,9% [10,4]

Temps de calcul 0,86%[0,2] 0,97% [0,3] 1,12% [0,8] Table 5: Performances sur des données simulées (1000 simulations pour chaque scé-nario A1, A2et A3). L’écart-type est indiqué entre crochets.

3.3 Détection de points de ruptures online 41

B1 : N = 1000, Bruit = 3%µ, K = 6 α= 0, 05 α= 0, 01 α= 10−3

% des simulations détectant

le nombre exact de ruptures 100% 99% 99%

% sur-estimation 0% 0% 0%

% sous-estimation 0% 1% 1%

Performance (|τi− ˆτi| ≤ 10 ) 98,9% [4,0] 99,1% [4,1] 98,9% [4,0] Temps de calcul 6,94%[0,3] 7,01% [0,5] 7,05% [0,4] B2 : N = 1000, Bruit = 10%µ, K = 6 α= 0, 05 α= 0, 01 α= 10−3

% des simulations détectant

le nombre exact de ruptures 97,6% 97,3% 96%

% sur-estimation 0% 0% 0%

% sous-estimation 2,4% 2,7% 4% Performance (|τi− ˆτi| ≤ 10 ) 96,3% [6,1] 97,1% [5,8] 96,5% [4,3]

Temps de calcul 7,49%[0,4] 7,58% [0,6] 7,92% [0,6] B3 : N = 1000, Bruit = 20%µ, K = 6 α= 0, 05 α= 0, 01 α= 10−3

% des simulations détectant

le nombre exact de ruptures 95,5% 96% 94,9%

% sur-estimation 0% 0% 0%

% sous-estimation 4,5% 4% 5,1% Performance (|τi− ˆτi| ≤ 10 ) 97,6% [7,1] 97,9% [5,9] 97,6% [7,2]

Temps de calcul 7,63%[0,3] 8,07% [0,6] 8,25% [0,6] Table 6: Performances sur des données simulées (1000 simulations pour chaque scé-nario B1, B2 et B3). L’écart-type est indiqué entre crochets.

Les calculs sont réalisés sur Ubuntu 14.04.3 server, 23 processors Intel(R) Xeon(R) CPU X5675 3.07GHz, avec 6 cœurs chacun. On observe que les résultats sont très bons et les temps de calcul sont raisonnables. Pour N = 300 et pour tous les niveaux α de test, les erreurs correspondent essentiellement à une sous-estimation du nombre de ruptures, qui augmente lorsque le niveau du test diminue. Lorsque N = 1000, les résultats sont excellents, légèrement dégradés lorsqu’on choisit 10−3

comme niveau de test.

La méthode online a des résultats plus uniformes par rapport à la méth-ode offline concernant la performance. Elle est également plus sensible aux ruptures quasiment invisibles qui ne sont pas repérées par PELT-BIC par exemple. Les perfor-mances de l’algorithme online sont donc meilleures que celles de l’algorithme offline PELT-BIC, mais au prix d’une complexité en O(N2) au lieu de O(N ).

On remarque enfin que le pourcentage de détections du nombre exact de ruptures diminue lorsque le bruit augmente (jusqu’à 20% de la moyenne), ce qui n’est pas surprenant, puisque le bruit peut "cacher" des ruptures de petite intensité.