Testul chi-pătrat al lui Pearson de la zero cu Python

După ce am discutat testul exact al lui Fisher și implementarea acestuia cu Python în ultimul meu articol, vreau acum să mă dedic altui test de ipoteză numit după un alt statistic celebru: testul chi-pătrat al lui Pearson.

Încă o dată, vreau mai întâi să introduc câteva aspecte teoretice ale testului înainte de a efectua testul în Python de la zero. La final, vrem să comparăm rezultatul testului cu rezultatul obținut cu funcția încorporată a Python.

Testul chi-pătrat al lui Pearson este un test de ipoteză care este utilizat pentru a determina dacă există o asociere semnificativă între două variabile categorice într-un tabel de contingență. Ipoteza nulă afirmă că cele două variabile sunt statistic independente. Ipoteza nulă este testată prin calcularea probabilității de a obține valori ca fiind discrepanțe sau mai discrepanțe față de valorile pe care ne așteptam să le obținem în tabelul de contingență – sub ipoteza independenței. Prin urmare, trebuie să determinăm valoarea așteptată pentru fiecare celulă din tabelul nostru de contingență.

Dacă două variabile aleatorii, A și B, sunt stochastice independente, atunci probabilitatea lor comună este egală cu produsul probabilităților lor marginale:

Într-un tabel de contingență putem calcula în mod echivalent numărul estimat prin înmulțirea totalului coloanei cu numărul rândului și împărțirea la totalul mare pentru fiecare celulă respectiv. Pentru a obține o măsurare a „discrepanței” luăm diferențele pătrate între valorile observate și valorile așteptate și împărțim la valoarea așteptată pentru fiecare celulă respectiv. Suma acestor diferențe normalizate, pătrate, este statistica noastră de test χ2. Acest lucru poate fi exprimat prin următoarea formulă:

cu Oᵢ valoarea observată și Eᵢ valoarea așteptată pentru o anumită celulă din tabelul nostru de contingență.

În continuare, dorim să stabilim un nivel alfa și să determinăm semnificația statistică a statisticii noastre chi-pătrat. Pearson a dovedit că, sub ipoteza nulă a independenței, statistica rezultată a testului urmează aproximativ o distribuție χ2 cu k grade de libertate. Distribuția χ2 cu k grade de libertate este distribuția sumei pătratelor k standard normal independent variabile.

Valoarea p p corespunde probabilității de a observa o statistică de testare ca extremă sau mai extremă într-o distribuție χ2 cu gradul său de libertate respectiv k :

Rețineți că testul chi-pătrat al lui Pearson este întotdeauna un test de ipoteză unilaterală, deoarece măsurăm „discrepanța” față de valorile noastre așteptate. Prin urmare, ne interesează în primul rând cât de mult deviază statistica noastră de test de la zero, deoarece χ2 = 0 ar indica o „potrivire perfectă”, adică independență stocastică. Dacă am lua în considerare coada stângă a distribuției, am măsura cumva cât de bine se potrivește modelul nostru cu valorile observate – ceea ce nu este intenția noastră.

Într-un tabel de contingență obținem gradele de libertate (dof) cu următoarea ecuație:

Astfel, avem un grad de libertate într-un tabel de contingență 2×2.

Am ajuns în sfârșit la punctul în care ne putem compara valoarea p p cu nivelul de semnificație ales α și susținem sau respingem ipoteza nulă a independenței în consecință.

Când se efectuează testul chi-pătrat al lui Pearson, trebuie îndeplinite câteva ipoteze. În afară de a fi colectate prin selecție aleatorie, datele observate nu trebuie să conțină probe asociate sau orice altă formă de date corelate. O cerință deosebit de unică a testului chi-pătrat al lui Pearson este ca valorile așteptate ale fiecărei celule să fie ≥5 în cel puțin 80% din celulele din tabelul nostru de contingență .² Dacă ultima ipoteză nu este îndeplinită, se recomandă aplicarea lui Yates corecţie. Corecția lui Yates pentru continuitate explică faptul că folosim o distribuție continuă de probabilitate pentru a interpreta o statistică de testare discretă. Acest lucru este util mai ales atunci când aveți de-a face cu eșantioane mici. O practică obișnuită este aplicarea corecției lui Yates pe tabelele de urgență 2×2, dacă cel puțin o frecvență așteptată este & lt; 10 (în timp ce unii autori stabilesc valoarea limită la 5) .³ Cu toate acestea, există un dezacord considerabil în rândul statisticienilor atunci când se utilizează corecția lui Yates cu unele surse care recomandă utilizarea corecției lui Yates cu fiecare tabel de contingență 2×2, indiferent de dimensiunea eșantionului, întrucât alte surse recomandă evitarea completă a corectării lui Yates. ”Când aveți dubii dacă dimensiunea eșantionului este suficient de mare pentru ca testul chi-pătrat să fie valid, este, de asemenea, fezabil să rămâneți la testul exact al lui Fisher. ⁶

În exemplul următor vom calcula valorile p cu și fără corectarea lui Yates.

Testul chi-pătrat al lui Pearson de la zero (fără corectarea lui Yates)

Acum să trecem direct la el cu următorul exemplu: Să presupunem că am realizat un studiu pentru a testa dacă există o relație semnificativă între expunerea la un anumit factor de risc și starea bolii. Primim următorul tabel de urgență:

Vrem să folosim testul chi-pătrat al lui Pearson pentru a examina dacă aceste două variabile, „Expunere” și „Starea bolii”, sunt legate statistic (= ipoteză alternativă) sau independent statistic (= ipoteză nulă). În acest exemplu, ne-am setat nivelul α la 0,05.

Începem prin importul unor biblioteci Python:

… și conectați datele noastre:

Apoi, adăugăm totalurile marginale:

Apoi vrem să determinăm valorile așteptate:

Niciunul dintre numărările așteptate nu este & lt; 5, un număr fiind & lt; 10. Să calculăm mai întâi statisticile noastre de testare fără corectarea lui Yates. Aplicăm formula menționată anterior pentru χ2 și obținem:

După aceea vrem să obținem gradele noastre de libertate:

Acum putem calcula valoarea p corespunzătoare utilizând funcția de distribuție cumulată, având în vedere gradele de libertate:

În cele din urmă, dorim să ne verificăm rezultatul comparându-l cu funcția încorporată a Python scipy.stats.chi2_contingency. Deocamdată, nu dorim să aplicăm corecția lui Yates, prin urmare alegem „corecție = Fals”: ​​

Ne face plăcere să obținem rezultate identice. După cum putem vedea, valoarea noastră p este mai mică decât α -nivelul nostru de 0,05. Prin urmare, am respinge ipoteza nulă.

Testul chi-pătrat al lui Pearson de la zero (cu corecția lui Yates)

Să efectuăm același test Chi-pătrat, doar de data asta cu corectarea lui Yates.

Deci, toți pașii menționați anterior sunt practic aceiași, dar folosim următoarea formulă (ajustată) pentru a calcula statisticile noastre de testare:

În Python:

Acum obținem o statistică chi-pătrat diferită de 3.06 și o valoare p corespunzătoare de 0.08.

Dacă vrem să comparăm rezultatul obținut cu funcția Scipy, trebuie să setăm „corectare = Adevărat” pentru a aplica corecția lui Yates:

Din nou, suntem bucuroși să vedem că ambele rezultate se potrivesc.

În concluzie, obținem o valoare p de 0,08 cu corecția lui Yates – comparativ cu p = 0,04 fără corecția lui Yates – și acum nu vom putea respinge ipoteză nulă la nivelul de semnificație de 5%. După cum putem vedea, modul în care ne alegem testul ipotezei poate avea un impact considerabil asupra faptului dacă acceptăm sau respingem ipoteza nulă.

Notebook-ul complet Jupyter poate fi găsit pe GitHub.

Referințe: