Para dados longitudinais com resultado numérico, posso usar gráficos de espaguete para visualizar os dados. Por exemplo, algo assim (extraído do site Estatísticas da UCLA):
tolerance<-read.table("http://www.ats.ucla.edu/stat/r/faq/tolpp.csv",sep=",", header=T)
head(tolerance, n=10)
interaction.plot(tolerance$time, tolerance$id, tolerance$tolerance,
xlab="time", ylab="Tolerance", legend=F)
Mas e se meu resultado for binário 0 ou 1? Por exemplo, nos dados "ohio" em R, a variável binária "resp" indica a presença de uma doença respiratória:
library(geepack)
ohio2 <- ohio[2049:2148,]
head(ohio2, n=12)
resp id age smoke
2049 1 512 -2 1
2050 0 512 -1 1
2051 0 512 0 1
2052 0 512 1 1
2053 1 513 -2 1
2054 0 513 -1 1
2055 0 513 0 1
2056 1 513 1 1
2057 1 514 -2 1
2058 0 514 -1 1
2059 0 514 0 1
2060 1 514 1 1
interaction.plot(ohio2$age+9, ohio2$id, ohio2$resp,
xlab="age", ylab="Wheeze status", legend=F)
O gráfico de espaguete fornece uma boa figura, mas não é muito informativo e não me diz muito. Qual seria uma maneira adequada de visualizar esse tipo de dados? Talvez algo que inclua um valor de probabilidade no eixo y?
ohio
dados (2.15) (pelo menos não como parte da base). Está em uma versão mais recente ou através de alguma outra biblioteca? Esta seria uma aplicação interessante para um mapa de calor com indivíduos no eixo Y e resultados no eixo X, depois plotar 1 respostas em preto e 0 respostas em branco. A classificação da matriz fornecerá uma visão geral de quão diferentes são os padrões predominantes.geepack
pacote.Respostas:
Existem algumas maneiras de contornar isso.
Tremendo as variáveis levemente para unir as linhas
Primeiro, como a idade e o resultado são bem discretos, podemos nos dar ao luxo de alterá-los levemente para mostrar algumas tendências. O truque é usar a transparência na cor da linha, para que seja mais fácil discernir a magnitude da sobreposição.
Ficando chique
Também é possível usar esse tipo de curva para mostrar o fluxo dos objetos. É como uma modificação do gráfico acima, mas usar a largura da linha para representar a frequência, em vez de sobrepor.
Mostre o destino de cada caso
Isso pode parecer contra-intuitivo, mas se você apresentar os casos de maneira sistemática, funcionará tão bem quanto contar a história agregada. Aqui, o resultado de cada caso é mostrado ao longo de uma linha de referência na cor cinza. Eu não adicionei uma legenda lá, mas usando o
legend
comando pode ser adicionado facilmente. Azul é "resp = 0" e Vermelho é "resp = 1". O tempo (idade) está espalhado no eixo x. Seus dados são convenientemente ordenados por padrão de resultado, então não precisei fazer nada. Se eles não forem pré-selecionados, você teria que usar o comando comodcast
no pacotereshape2
para massagear os dados um pouco.Tabulação
A visualização não é a única saída. Como só haveria, no máximo, 16 padrões diferentes, você também pode tabulá-los. Use
+
e-
para criar padrões como+ + + +
e+ - - -
, em seguida, para cada um desses padrões, anexe as contagens e porcentagens. Isso pode mostrar as informações de maneira igualmente eficaz.fonte