Saltar al contenido

Prueba de independencia de Python, pandas y chi-cuadrado

Solución:

Algunas correcciones:

  • Tu expected la matriz no es correcta. Debes dividir por observed.sum().sum(), que es 1284, no 1000.
  • Para una tabla de contingencia de 2×2 como esta, los grados de libertad son 1, no 8.
  • Tu cálculo de chi_squared_stat no incluye corrección de continuidad. (Pero no es necesariamente incorrecto no usarlo, eso es una decisión de juicio para el estadístico).

Todos los cálculos que realiza (matriz esperada, estadísticas, grados de libertad, valor p) son calculados por chi2_contingency:

In [65]: observed
Out[65]: 
                        Previously Successful  Previously Unsuccessful
Yes - changed strategy                  129.3                   260.17
No                                      182.7                   711.83

In [66]: from scipy.stats import chi2_contingency

In [67]: chi2, p, dof, expected = chi2_contingency(observed)

In [68]: chi2
Out[68]: 23.383138325890453

In [69]: p
Out[69]: 1.3273696199438626e-06

In [70]: dof
Out[70]: 1

In [71]: expected
Out[71]: 
array([[  94.63757009,  294.83242991],
       [ 217.36242991,  677.16757009]])

Por defecto, chi2_contingency usa una corrección de continuidad cuando la tabla de contingencia es 2×2. Si prefiere no usar la corrección, puede deshabilitarla con el argumento correction=False:

In [73]: chi2, p, dof, expected = chi2_contingency(observed, correction=False)

In [74]: chi2
Out[74]: 24.072616672232893

In [75]: p
Out[75]: 9.2770200776879643e-07
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *