Tenho alguns dados que preciso visualizar e não tenho certeza da melhor maneira de fazê-lo. Eu tenho um conjunto de itens base com as respectivas frequências e os resultados . Agora eu preciso traçar o quão bem meu método "encontra" (isto é, um resultado 1) os itens de baixa frequência. Inicialmente, eu só tinha um eixo x de frequência e um eixo y de 0-1 com gráficos de pontos, mas parecia horrível (especialmente ao comparar dados de dois métodos). Ou seja, cada item is tem um resultado (0/1) e é ordenado por sua frequência.F = { f 1 , ⋯ , f n } O ∈ { 0 , 1 } n q ∈ Q
Aqui está um exemplo com os resultados de um único método:
Minha próxima idéia foi dividir os dados em intervalos e calcular uma sensibilidade local sobre os intervalos, mas o problema com essa idéia é que a distribuição de frequência não é necessariamente uniforme. Então, como devo escolher melhor os intervalos?
Alguém conhece uma maneira melhor / mais útil de visualizar esse tipo de dados para retratar a eficácia de encontrar itens raros (ou seja, de frequência muito baixa)?
EDIT: Para ser mais concreto, estou demonstrando a capacidade de algum método para reconstruir sequências biológicas de uma determinada população. Para validação usando dados simulados, preciso mostrar a capacidade de reconstruir variantes, independentemente de sua abundância (frequência). Portanto, neste caso, estou visualizando os itens perdidos e encontrados, ordenados por sua frequência. Este lote não irá incluir variantes reconstruídos que não estão em .
fonte
Respostas:
O que eu fiz no passado é basicamente o que você fez com a adição de um loess . Dependendo da densidade dos pontos, eu usaria pontos translúcidos (alfa), como mostrado abaixo, e / ou símbolos de tubo ("|") para minimizar a sobreposição.
(Eu não acho que as barras de erro devam aumentar nas bordas aqui, mas não há uma maneira fácil de fazer isso com a função stat_smooth interna do ggplot. Se você usou esse método para reais em R, poderíamos fazê-lo calculando o loess e sua barra de erro antes da plotagem.)
( Editar: e mais alguns pelos comentários de Andy W. sobre a tentativa de instabilidade vertical se a densidade dos dados o tornar útil e de Mimshot sobre intervalos de confiança adequados.)
fonte
geom_point(size=2, alpha=0.4)
porgeom_jitter(size=2, alpha=0.4, position = position_jitter(height = .02))
.ggplot2
de fornecer os ICs corretos? Eu tenho um lote com CIs fora do[0,1]
que claramente são provenientes do cálculo erradoConsidere também quais escalas são mais apropriadas para o seu caso de uso. Digamos que você esteja fazendo uma inspeção visual para fins de modelagem em regressão logística e deseje visualizar um preditor contínuo para determinar se você precisa adicionar um spline ou termo polinomial ao seu modelo. Nesse caso, você pode querer uma escala em probabilidades de log em vez de probabilidade / proporção.
A função na essência abaixo usa algumas heurísticas limitadas para dividir o preditor contínuo em compartimentos, calcular a proporção média, converter em log-odds e depois traçar
geom_smooth
esses pontos agregados.Exemplo de como esse gráfico se parece se uma covariável tiver uma relação quadrática (+ ruído) com as chances de log de um alvo binário:
Criado em 06/02/2019 pelo pacote reprex (v0.2.1)
Para comparação, eis a aparência dessa relação quadrática se você apenas plotasse os 1s / 0s e adicionasse um
geom_smooth
:Criado em 2019-02-25 pelo pacote reprex (v0.2.1)
O relacionamento com o logit é menos claro e o uso
geom_smooth
tem alguns problemas.fonte
Concordo que a publicação de apenas algumas linhas de dados de amostra ajudaria bastante. Se eu entendi a pergunta, acho que seria mais simples traçar a frequência pela proporção encontrada.
Primeiro vou gerar alguns dados de amostra em R; corrija-me se não o entendi corretamente.
E agora, basta plotar a frequência (
F
) porproportion
:fonte