Ir al contenido
σestadistica.ar

Script

Intervalos de confianza

Los cinco que hacen falta en un informe, sobre el total y dentro de cada grupo. Y la columna que avisa cuando mirar dos intervalos por separado lleva a la conclusión contraria.

Descargar

Proyecto en R y Python · ZIP · 84 KB

En R alcanza con lo que ya trae; en Python hace falta SciPy, y solo para los cuantiles.

El error que este proyecto quiere que no cometas

Publicás el intervalo de cada grupo, ves que se pisan y concluís que no hay diferencia. Es lo que hace casi todo el mundo, y no se sigue. Mirá las horas de estudio del ejemplo que viene adentro:

Horas de estudio por semananMediaIC 95 %
Control7511,64[10,60; 12,69]
Tratamiento7513,45[12,48; 14,43]
La diferencia—−1,81[−3,23; −0,39]

Los dos primeros intervalos se pisan —12,69 contra 12,48— y el tercero no contiene al cero. Las dos cosas son ciertas al mismo tiempo, y la que hay que informar es la tercera.

La aritmética es la de siempre: el error estándar de la diferencia es √(EE₁² + EE₂²), no EE₁ + EE₂. Acá los errores estándar de los dos grupos son 0,5245 y 0,4906. Sumados dan 1,0151; la raíz de la suma de los cuadrados da 0,7181, un 29 % menos. Ese 29 % es exactamente el rango de diferencias donde los dos intervalos se pisan y el de la diferencia igual excluye al cero.

Por eso ic-diferencias.csv trae tres columnas al lado del intervalo: se_pisan_los_individuales, excluye_cero y conclusion_distinta, que dice «Sí» cuando las dos primeras se contradicen. En el ejemplo pasa en tres de las once comparaciones, y el informe lo pone arriba de todo antes de que alguien lea la lista.

Wilson, Wald y Clopper-Pearson, los tres juntos

Para cada categoría salen los tres métodos, no para que elijas el que más te guste sino para que veas cuánto se separan cuando la categoría es rara. En el ejemplo la beca la tienen 7 de 150:

variable,etiqueta,categoria,ambito,n,exitos,proporcion,metodo,inferior,superior,ancho
beca,Tiene beca,Sí,Total,150,7,0.046667,wilson,0.022787,0.093186,0.070400
beca,Tiene beca,Sí,Total,150,7,0.046667,wald,0.012912,0.080421,0.067508
beca,Tiene beca,Sí,Total,150,7,0.046667,clopper-pearson,0.018966,0.093786,0.074820

Wald arranca en 1,3 % y Clopper-Pearson en 1,9 %: casi el doble. Con 7 casos la aproximación normal no da, y Wald —la fórmula clásica p ± z·√(p(1−p)/n)— es justamente la que la usa. El informe redactado sale con Wilson, que es el que corresponde salvo que haya una razón para otro, y los tres quedan en el CSV para que se puedan comparar.

Qué deja

ArchivoQué trae
ic-medias.csvLa media de cada variable numérica, con su error estándar y sus grados de libertad
ic-varianzas.csvLa varianza y el desvío, por chi-cuadrado
ic-proporciones.csvCada categoría, por Wilson, Wald y Clopper-Pearson
ic-diferencias.csvCada par de grupos, con las columnas que dicen si mirarlos por separado engaña
avisos.csvCada supuesto que no se cumple, con el intervalo que lo disparó
intervalos.mdEl informe redactado, listo para pegar

Cada fila lleva un ámbito: Total para la muestra entera y el nombre del grupo para los de adentro de cada grupo. La confianza y el tamaño de la población van en datos/parametros.csv, no en el código: son los dos parámetros que más se tocan. Si completás la población, los intervalos de una muestra se achican y el aviso dice cuánto.

Los avisos son los de la calculadora

avisos.csv no trae texto escrito para este descargable: trae lo que dice la calculadora de intervalos del sitio, palabra por palabra. El verificador le pasa los mismos casos a las funciones de la calculadora y exige que los avisos coincidan, así que si alguna vez dijeran cosas distintas sería un error de una de las dos y no una diferencia de criterio.

En el ejemplo aparecen trece avisos distintos: el de la categoría con menos de cinco casos, el de los grados de libertad decimales de Welch, el del intervalo de la varianza —el menos robusto de todos— y el de que Wilson no está centrado en la proporción observada, que es correcto y es justamente lo que lo hace mejor que Wald.

Diez dígitos significativos, y ni uno más

Los archivos de R y los de Python tienen que salir idénticos byte a byte, y acá eso se puso difícil por primera vez en la serie. La varianza de un ingreso en pesos anda por 10¹¹: con seis decimales eso pide dieciocho dígitos significativos, más de los que un double tiene. Y qchisq no devuelve el mismo último bit en R que en SciPy —son dos implementaciones distintas de la misma función—, así que el archivo salía distinto en cada idioma por un dígito que no significaba nada.

La solución es redondear a diez dígitos significativos antes de escribir. Son muchos más de los que cualquier dato de una encuesta justifica, y los dos idiomas coinciden en todos.

Cómo está verificado

Corriéndolo: el verificador descomprime lo publicado, lo corre con Python y con R, exige que los siete archivos sean idénticos y recalcula cada límite de cada intervalo con una implementación aparte de las cinco fórmulas. Después le pasa los mismos casos a la calculadora del sitio desde Node y compara números y avisos. Prueba además cuatro bases distintas: sin variable de grupo, con tres grupos y 90 % de confianza, con una población de 200 —que enciende la corrección por población finita— y con una categoría que no aparece en uno de los grupos, donde Wald da un intervalo de ancho cero y Clopper-Pearson no. Son 2.865 comprobaciones, y los catorce sabotajes se detectan.