Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa Próxima revisión Ambos lados, revisión siguiente | ||
clase:iabd:pia:2eval:tema08.intervalo_confianza [2024/05/09 14:23] admin [Ejercicios] |
clase:iabd:pia:2eval:tema08.intervalo_confianza [2024/05/18 17:40] admin [Cálculo del intervalo de confianza] |
||
---|---|---|---|
Línea 74: | Línea 74: | ||
<sxh python> | <sxh python> | ||
- | import | + | from statsmodels.stats.proportion |
# Número de éxitos | # Número de éxitos | ||
- | count = 111 | + | success |
# Número total de ensayos | # Número total de ensayos | ||
- | nobs = 115 | + | total = 115 |
# Nivel de confianza deseado | # Nivel de confianza deseado | ||
confianza=95 | confianza=95 | ||
Línea 85: | Línea 85: | ||
methods=[' | methods=[' | ||
for method in methods: | for method in methods: | ||
- | lower, upper = smp.proportion_confint(count, nobs, alpha=1-(confianza/ | + | lower, upper = proportion_confint(success, total, alpha=1-(confianza/ |
print(f" | print(f" | ||
Línea 101: | Línea 101: | ||
Y podemos observar que el cálculo del intervalo del test de COVID se hizo con '' | Y podemos observar que el cálculo del intervalo del test de COVID se hizo con '' | ||
- | <note tip> | + | ===== Elección del método ===== |
De forma general y sin querer entrar en detalles el método que deberemos usar en las métricas será el Jeffreys ('' | De forma general y sin querer entrar en detalles el método que deberemos usar en las métricas será el Jeffreys ('' | ||
- | </note> | + | |
+ | ¿Porque Jeffreys? Porque es el que usa estadística bayesiana para calcular el intervalo de confianza. Así que realmente no es un intervalo de confianza sino un intervalo de credibilidad. ¿cual es la diferencia? Vamos a explicarlo con el ejemplo que estamos usando: | ||
+ | * **Intervalo de confianza** | ||
+ | * **Intervalo de credibilidad** | ||
+ | |||
+ | En el siguiente código se puede ver como da el mismo resultado usando '' | ||
+ | |||
+ | **NOTA:La explicación del cálculo bayesiano va más allá del ámbito de este curso de especialización.** | ||
+ | |||
+ | <sxh python> | ||
+ | from scipy.stats import beta | ||
+ | from statsmodels.stats.proportion import proportion_confint | ||
+ | |||
+ | success=111 | ||
+ | total=115 | ||
+ | confidence=0.95 | ||
+ | |||
+ | lower, | ||
+ | print(f" | ||
+ | beta_a=0.5+success | ||
+ | beta_b=0.5+total-success | ||
+ | lower, | ||
+ | print(f" | ||
+ | |||
+ | </ | ||
+ | |||
+ | <sxh base> | ||
+ | Intervalo de confianza usando " | ||
+ | Intervalo de confianza usando Bayes con prior Beta(0.5, | ||
+ | </sxh> | ||
+ | |||
+ | |||
===== Comparación de métricas ===== | ===== Comparación de métricas ===== | ||
Línea 112: | Línea 144: | ||
* Dos modelos tienen la **misma** métrica si sus intervalos **se solapan** en algún punto | * Dos modelos tienen la **misma** métrica si sus intervalos **se solapan** en algún punto | ||
* Dos modelos tienen **distinta** métrica si sus intervalos **no se solapan** en ningún punto | * Dos modelos tienen **distinta** métrica si sus intervalos **no se solapan** en ningún punto | ||
+ | * En caso de **" | ||
Veamos un ejemplo. | Veamos un ejemplo. | ||
Línea 138: | Línea 171: | ||
Se puede apreciar que: | Se puede apreciar que: | ||
- | * Los modelos 1 y 2 son iguales | + | * Los modelos 1 y 2 son iguales |
- | * Los modelos 3 y 4 son iguales | + | * Los modelos 3 y 4 son iguales |
+ | |||
+ | Por lo que el orden de los modelos de mejor a peor es: **1, 2, 5, 3 y 4** | ||
- | Por lo que: | ||
- | * Los mejores modelos son el 1 y el 2 | ||
- | * Después va el modelo 5 | ||
- | * Y los 2 peores modelos son el 3 y el 4. | ||
La siguiente función en Python crea un gráfico para poder comparar intervalos de confianza: | La siguiente función en Python crea un gráfico para poder comparar intervalos de confianza: | ||
Línea 155: | Línea 186: | ||
axes.scatter(media, | axes.scatter(media, | ||
- | axes.set_yticks(posiciones) | + | axes.set_yticks(np.arange(len(ylabels))) |
axes.set_yticklabels(ylabels[:: | axes.set_yticklabels(ylabels[:: | ||
axes.set_xlabel(xlabel) | axes.set_xlabel(xlabel) | ||
Línea 183: | Línea 214: | ||
</ | </ | ||
+ | |||
+ | |||
+ | Otra forma de hacer el gráfico es poner lineas en los extremos de los intervalos, que aunque se ve mejor, queda un gráfico muy recargado. | ||
+ | |||
+ | <sxh python> | ||
+ | def plot_intervals_with_guides(axes, | ||
+ | for index, (inferior, superior) in enumerate(intervalos): | ||
+ | position=len(intervalos)-index-1 | ||
+ | media=((superior-inferior)/ | ||
+ | color=next(axes._get_lines.prop_cycler)[' | ||
+ | axes.plot([inferior, | ||
+ | axes.scatter(media, | ||
+ | axes.plot([inferior, | ||
+ | axes.plot([superior, | ||
+ | | ||
+ | axes.set_yticks(np.arange(len(ylabels))) | ||
+ | axes.set_yticklabels(ylabels[:: | ||
+ | axes.set_xlabel(xlabel) | ||
+ | axes.set_title(title) | ||
+ | |||
+ | axes.set_facecolor("# | ||
+ | axes.grid(visible=True, | ||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
===== Ejercicios ===== | ===== Ejercicios ===== | ||
==== Ejercicio 1 ==== | ==== Ejercicio 1 ==== | ||
- | Crear 4 modelos distintos para el problema del cancer y para cada uno de ellos: | + | Mirando el test de COVID de {{ : |
+ | |||
+ | ==== Ejercicio 2 ==== | ||
+ | Mirando el test de COVID de {{ : | ||
+ | |||
+ | ==== Ejercicio 3 ==== | ||
+ | Crear 5 modelos distintos para el problema del cancer y para cada uno de ellos: | ||
* Calcula las métricas de sensibilidad y especificidad. | * Calcula las métricas de sensibilidad y especificidad. | ||
* Calcula el intervalo de confianza de las métricas de sensibilidad y especificidad. ¿Que método se va a usar? | * Calcula el intervalo de confianza de las métricas de sensibilidad y especificidad. ¿Que método se va a usar? | ||
- | * Muestra en una gráfica el intervalo de confianza de la métrica de sensibilidad para todos los modelos | ||
- | * Muestra en una gráfica el intervalo de confianza de la métrica de especificidad para todos los modelos | ||
- | Indica según la sensibilidad el orden de los bueno que es cada modelo (de mejor a peor) | + | Tambien: |
- | Indica según la especificidad el orden de los bueno que es cada modelo (de mejor a peor) | + | * Muestra en una gráfica el intervalo de confianza de la métrica de sensibilidad de todos los modelos |
+ | * Muestra en una gráfica el intervalo de confianza de la métrica de especificidad de todos los modelos | ||
+ | |||
+ | Ahora: | ||
+ | * Indica según la sensibilidad el orden de los bueno que es cada modelo (de mejor a peor). | ||
+ | | ||
+ | * ¿Que modelo elegirías? | ||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
+ | ==== Ejercicio 4 ==== | ||
+ | Elige el mejor de los 5 modelos anteriores y muestra ahora una gráfica, en la que se mostrará: | ||
+ | |||
+ | * El valor de la sensibilidad y la especificidad según el valor del umbral. La gráfica tendrá un aspecto simular a la siguiente: | ||
+ | |||
+ | {{: | ||
+ | ¿Que umbral elegirías? | ||
+ | |||
+ | |||
+ | |||
+ | * Repite ahora la gráfica, pero incluyendo los intervalos de credibilidad de cada métrica. La gráfica tendrá un aspecto simular a la siguiente: | ||
+ | |||
+ | {{: | ||
+ | ¿Que umbral elegirías? | ||
+ | |||
+ | <note tip>Para ahcer este típo de gráficas usa el método: | ||
+ | |||
+ | '' | ||