Come eseguire il test mcnemar in python
Il test McNemar viene utilizzato per determinare se esiste una differenza statisticamente significativa nelle proporzioni tra i dati accoppiati.
Questo tutorial spiega come eseguire il test McNemar in Python.
Esempio: il test McNemar in Python
Supponiamo che i ricercatori vogliano sapere se un determinato video di marketing può cambiare le opinioni delle persone su una particolare legge. Intervistano 100 persone per scoprire se sostengono o meno la legge. Quindi mostrano il video di marketing a tutte le 100 persone e le esaminano nuovamente al termine del video.
La tabella seguente mostra il numero totale di persone che hanno sostenuto la legge prima e dopo aver visto il video:
Video prima della commercializzazione | ||
---|---|---|
Video dopo la commercializzazione | Supporto | Non sopporto |
Supporto | 30 | 40 |
Non sopporto | 12 | 18 |
Per determinare se ci fosse una differenza statisticamente significativa nella percentuale di persone che sostenevano la legge prima e dopo aver visto il video, possiamo eseguire il test McNemar.
Passaggio 1: creare i dati.
Per prima cosa creeremo una tabella per contenere i nostri dati:
data = [[30, 40], [12, 18]]
Passaggio 2: eseguire il test McNemar
Successivamente, possiamo utilizzare la funzione mcnemar() dalla libreria statsmodels di Python, che utilizza la seguente sintassi:
mcnemar(array, esatto=Vero, correzione=Vero)
Oro:
- tabella: una tabella di contingenza quadrata
- esatto: se esatto è vero, verrà utilizzata la distribuzione binomiale. Se corretto è falso, verrà utilizzata la distribuzione Chi-quadrato
- correzione: se vero, viene utilizzata una correzione di continuità. In genere, questa correzione viene applicata quando il numero di celle della tabella è inferiore a 5.
Il codice seguente mostra come utilizzare questa funzione nel nostro esempio specifico:
from statsmodels.stats.contingency_tables import mcnemar #McNemar's Test with no continuity correction print(mcnemar(data, exact=False)) pvalue 0.000181 statistic 14.019 #McNemar's Test with continuity correction print(mcnemar(data, exact=False, correction=False)) pvalue 0.000103 statistic 15,077
In entrambi i casi, indipendentemente dal fatto che venga applicata o meno la correzione di continuità, il valore p del test è inferiore a 0,05.
Ciò significa che in entrambi i casi rifiuteremmo l’ipotesi nulla e concluderemmo che la percentuale di persone che sostenevano la legge prima e dopo aver visto il video di marketing era statisticamente diversa.