Tengo algunos datos que necesito visualizar y no estoy seguro de cuál es la mejor manera de hacerlo. Tengo un conjunto de elementos básicos con las frecuencias respectivas y los resultados . Ahora necesito trazar qué tan bien mi método "encuentra" (es decir, un resultado 1) los elementos de baja frecuencia. Inicialmente solo tenía un eje x de frecuencia y un eje ay de 0-1 con gráficos de puntos, pero se veía horrible (especialmente cuando se comparan datos de dos métodos). Es decir, cada elemento tiene un resultado (0/1) y está ordenado por su frecuencia.F = { f 1 , ⋯ , f n } O ∈ { 0 , 1 } n q ∈ Q
Aquí hay un ejemplo con los resultados de un solo método:
Mi siguiente idea fue dividir los datos en intervalos y calcular una sensibilidad local sobre los intervalos, pero el problema con esa idea es que la distribución de frecuencia no es necesariamente uniforme. Entonces, ¿cómo debo elegir mejor los intervalos?
¿Alguien sabe de una manera mejor / más útil de visualizar este tipo de datos para representar la efectividad de encontrar elementos raros (es decir, de muy baja frecuencia)?
EDITAR: Para ser más concreto, estoy mostrando la capacidad de algún método para reconstruir secuencias biológicas de una determinada población. Para la validación utilizando datos simulados, necesito mostrar la capacidad de reconstruir variantes independientemente de su abundancia (frecuencia). Entonces, en este caso, visualizo los elementos perdidos y encontrados, ordenados por su frecuencia. Esta parcela no incluirá variantes reconstruidas que no están en .
fuente
Respuestas:
Lo que he hecho en el pasado es básicamente lo que has hecho con la adición de un loess . Dependiendo de la densidad de los puntos, usaría puntos translúcidos (alfa), como se muestra a continuación, y / o símbolos de tubería ("|") para minimizar la superposición.
(No creo que las barras de error deberían ensancharse en los bordes aquí, pero no hay una manera fácil de hacerlo con la función stat_smooth interna de ggplot. Si usas este método para reales en R, podríamos hacerlo estimando el loess y su barra de error antes de trazar).
( Editar: Y más para comentarios de Andy W. sobre probar el jitter vertical si la densidad de los datos lo hace útil y de Mimshot sobre los intervalos de confianza adecuados).
fuente
geom_point(size=2, alpha=0.4)
congeom_jitter(size=2, alpha=0.4, position = position_jitter(height = .02))
.ggplot2
de suministrar los CI correctos? Tengo una trama con CI fuera de los[0,1]
cuales claramente provienen del cálculo incorrectoTambién considere qué escalas son las más apropiadas para su caso de uso. Digamos que está haciendo una inspección visual con el propósito de modelar en regresión logística y desea visualizar un predictor continuo para determinar si necesita agregar una spline o un término polinómico a su modelo. En este caso, es posible que desee una escala en log-odds en lugar de probabilidad / proporción.
La función en la siguiente tabla utiliza algunas heurísticas limitadas para dividir el predictor continuo en bins, calcular la proporción media, convertir a log-odds y luego trazar
geom_smooth
sobre estos puntos agregados.Ejemplo de cómo se ve este gráfico si una covariable tiene una relación cuadrática (+ ruido) con las probabilidades de registro de un objetivo binario:
Creado el 06/02/2019 por el paquete reprex (v0.2.1)
A modo de comparación, así es como se vería esa relación cuadrática si solo trazara los 1's / 0's y agregara un
geom_smooth
:Creado el 25/02/2019 por el paquete reprex (v0.2.1)
La relación con logit es menos clara y su uso
geom_smooth
tiene algunos problemas.fuente
Estoy de acuerdo en que publicar solo unas pocas líneas de datos de muestra sería muy útil. Si entiendo la pregunta, creo que sería más sencillo trazar la frecuencia según la proporción encontrada.
Primero generaré algunos datos de muestra en R; corrígeme si no te he entendido bien.
Y ahora simplemente grafica la frecuencia (
F
) porproportion
:fuente