Test di tendenza Mann-Kendall utilizzando Python

Mann-Kendall trend test using Python.

Introduzione

Il test di tendenza di Mann-Kendall, chiamato così in onore di H. A. Mann e D. R. Kendall, è un test non parametrico utilizzato per determinare se la tendenza nel tempo è significativa. La tendenza può essere crescente o decrescente nel tempo. Poiché si tratta di un test non parametrico, non dobbiamo preoccuparci della distribuzione dei dati. Tuttavia, i dati non devono presentare correlazione seriale/autocorrelazione (l’errore nel trasferimento delle serie temporali da un periodo a un altro).

Il test di Mann-Kendall è progettato per rilevare tendenze monotone, ovvero tendenze che aumentano o diminuiscono costantemente nel tempo, senza assumere una distribuzione specifica per i dati. È particolarmente utile quando si lavora con dati che potrebbero non soddisfare le ipotesi dei test parametrici, come la normalità.

Questo articolo è stato pubblicato come parte del Data Science Blogathon.

Requisiti di dimensione campione

Se si dispone di campioni molto piccoli, come 3 o 4, c’è una alta probabilità di non trovare alcuna tendenza. Più campioni abbiamo nel tempo, più affidabili saranno le statistiche del test. Tuttavia, il test può essere eseguito anche con campioni molto piccoli. I dati raccomandati sono almeno 10.

Obiettivo del test

In questo articolo, studiamo gli incidenti legati ai deragliamenti dei treni nel tempo. Il recente deragliamento del treno in Odisha ha nuovamente sollevato dubbi sulla sicurezza delle ferrovie. Gli incidenti ferroviari possono essere classificati in base al tipo di incidente (ad esempio collisioni frontali, collisioni posteriori, esplosioni, collisioni laterali, deragliamenti, incendi, ecc.). Nel tempo sono stati apportati molti miglioramenti alle ferrovie dal punto di vista tecnico e infrastrutturale. Nonostante tutti i moderni progressi, gli incidenti ferroviari sono comuni in tutto il mondo. Gli incidenti ferroviari sono incidenti sfortunati che si verificano nei sistemi ferroviari di tutto il mondo. Questi incidenti possono avere conseguenze devastanti, causando perdite di vite umane, lesioni e danni alle proprietà.

In questo studio, determineremo se nel corso del tempo siamo stati in grado di ridurre gli incidenti ferroviari (studiando qui la categoria degli incidenti dei deragliamenti) in India, considerando tutti i progressi compiuti negli anni. I dati che abbiamo raccolto sui deragliamenti in India sono una serie temporale. Abbiamo dati sui deragliamenti dal 2001 al 2016. I dati sono disposti in ordine cronologico.

I nostri dati

Dalla tabella sopra possiamo chiaramente vedere una tendenza decrescente nei dati. Dal 2001 il numero di incidenti legati ai deragliamenti si è ridotto notevolmente. Nel 2001 abbiamo avuto 350 incidenti correlati ai deragliamenti, che sono diminuiti a 65 nel 2016. Poiché i dati sono disposti in ordine, possiamo inserirli direttamente nell’ambiente Python e lavorarci. Realizziamo un grafico per visualizzare correttamente i dati in Python.

!pip install seaborn
import seaborn as sns
import matplotlib.pyplot as plt
fig = plt.subplots(figsize=(20, 5))
sns.lineplot(x='Anno', y='Deragliamenti', data=df)
sns.set_theme(style='white', font_scale=3)

Dal grafico sopra, possiamo chiaramente vedere una tendenza al calo. Ma possiamo dire che questa tendenza al calo è significativa? Anche se è evidente dal grafico che molto probabilmente è significativa. Verifichiamolo utilizzando il test di tendenza Mann-Kendall.

Passaggi

  • L’ipotesi nulla (H0) di questo test è che non ci sia una tendenza monotona nei dati.
  • L’ipotesi alternativa (H1) è che esista una tendenza. La tendenza può essere una tendenza crescente monotona o una tendenza decrescente monotona.
  • Statistica del test: Il test M produce una statistica del test indicata come “T”. Un valore positivo di T indica una tendenza crescente, mentre un valore negativo indica una tendenza decrescente. La magnitudine di T rappresenta la forza della tendenza.
  • Significatività (Alfa): Un livello di significatività (ad esempio 0,05 o 0,10) per determinare la soglia di significatività statistica. Questo rappresenta la probabilità massima di osservare una tendenza quando non c’è una tendenza effettiva nei dati.
  • Valore p: Il test M-K calcola un valore p che quantifica la probabilità di osservare una statistica del test tanto estrema quanto quella osservata, assumendo che l’ipotesi nulla sia vera. Il valore p rappresenta l’evidenza contro l’ipotesi nulla.
    • Se il valore p è inferiore al livello di significatività (p < α), suggerisce una forte evidenza per respingere l’ipotesi nulla. Ciò indica una tendenza statisticamente significativa nei dati.
    • Se il valore p è maggiore o uguale al livello di significatività (p ≥ α), suggerisce una prova insufficiente per respingere l’ipotesi nulla. Ciò significa che non c’è una tendenza statisticamente significativa nei dati.
    • Conclusioni: Sulla base del valore p e del livello di significatività, è possibile trarre una conclusione sulla presenza o assenza di una tendenza significativa nei dati.
    • Se p < α, è possibile concludere che c’è una tendenza statisticamente significativa nei dati. Assicurarsi di prendere in considerazione la direzione della tendenza in base al segno della statistica del test (T).
    • Se p ≥ α, è possibile concludere che non c’è una tendenza statisticamente significativa nei dati. Non ci sono prove sufficienti per suggerire la presenza di una tendenza.

Passaggi del Codice Python

  • Leggi i dataset
import pandas as pd
df=pd.read_csv("C:\\Users\\DELL\\OneDrive\\Desktop\\AnalyticsVidhya\\derailment.csv")
df.head()
  • Importa le librerie:
!pip install pymannkendall
import numpy as np
import pymannkendall 

  • Test di Mann-Kendall:
mk.original_test(df["Derailments"])

Conclusioni

La tendenza è al ribasso, il valore P è altamente significativo. Pertanto, respingiamo l’ipotesi nulla e concludiamo che gli incidenti di deragliamento dei treni si sono significativamente ridotti nel tempo. I progressi tecnologici e i cambiamenti infrastrutturali hanno portato a una significativa riduzione degli incidenti correlati ai deragliamenti.

  • Robusto e versatile: Il test di Mann-Kendall è robusto contro gli outlier e non assume una specifica distribuzione dei dati.
  • Ampia applicabilità: Il test di Mann-Kendall trova applicazioni in vari campi, tra cui la scienza del clima, l’idrologia, il monitoraggio ambientale, l’economia e altre discipline che trattano dati in serie temporali.
  • Calcolo semplice: Il calcolo della statistica di Mann-Kendall prevede il ranking dei dati, la determinazione dei segni delle differenze a coppie e la somma di questi segni. La statistica risultante viene quindi utilizzata per valutare la presenza di una tendenza.

Domande Frequenti

I media mostrati in questo articolo non sono di proprietà di Analytics Vidhya e vengono utilizzati a discrezione dell’autore.