O que você pode fazer é usar as idéias de sombreamento residual de vcd aqui em combinação com a visualização de matriz esparsa, como por exemplo, na página 49 deste capítulo do livro . Imagine o último gráfico com sombras residuais e você entendeu.
A tabela de matriz / contingência esparsa normalmente conteria o número de ocorrências de cada medicamento com cada efeito adverso. Com a idéia de sombreamento residual, no entanto, você pode configurar um modelo linear de log de linha de base (por exemplo, um modelo de independência ou o que mais desejar) e usar o esquema de cores para descobrir qual combinação de drogas / efeitos ocorre com mais frequência / menos do que o modelo previa. . Como você tem muitas observações, você pode usar um limiar de cores muito fino e obter um mapa parecido com o modo como os microarrays na análise de cluster são frequentemente visualizados, por exemplo, aqui(mas provavelmente com "gradientes" de cores mais fortes). Ou você pode construir os limites de forma que somente se as diferenças de observações nas previsões excederem o limite, elas ficarão coloridas e o restante permanecerá branco. Como exatamente você faria isso (por exemplo, qual modelo usar ou quais limites) depende de suas perguntas.
Editar
Então, aqui está como eu faria isso (já que eu teria RAM suficiente disponível ...)
- Crie uma matriz esparsa das dimensões desejadas (nomes de medicamentos x efeitos)
- Calcular os resíduos do modelo linear da independência
- Use um gradiente de cores em resolução fina, do mínimo ao máximo do residual (por exemplo, com um espaço de cores hsv)
- Inserir o valor da cor correspondente à magnitude dos resíduos na posição correspondente na matriz esparsa
- Plote a matriz com um gráfico de imagem.
Você acaba com algo assim (é claro que a imagem será muito maior e haverá um tamanho de pixel muito menor, mas você deve ter uma idéia. Com o uso inteligente da cor, você pode visualizar as associações / saídas da independência que você mais tem interessado em).
Um exemplo rápido e sujo com uma matriz 100x100. Este é apenas um exemplo de brinquedo com resíduos variando de -10 a 10, como você pode ver na legenda. Branco é zero, azul é menos frequente do que o esperado, vermelho é mais frequente do que o esperado. Você deve ter a ideia e levá-la de lá. Editar: eu consertei a configuração da trama e usei cores não violentas.
Isso foi feito usando a image
função e cm.colors()
na seguinte função:
ImagePlot <- function(x, ...){
min <- min(x)
max <- max(x)
layout(matrix(data=c(1,2), nrow=1, ncol=2), widths=c(1,7), heights=c(1,1))
ColorLevels <- cm.colors(255)
# Color Scale
par(mar = c(1,2.2,1,1))
image(1, seq(min,max,length=255),
matrix(data=seq(min,max,length=255), ncol=length(ColorLevels),nrow=1),
col=ColorLevels,
xlab="",ylab="",
xaxt="n")
# Data Map
par(mar = c(0.5,1,1,1))
image(1:dim(x)[1], 1:dim(x)[2], t(x), col=ColorLevels, xlab="",
ylab="", axes=FALSE, zlim=c(min,max))
layout(1)
}
#100x100 example
x <- c(seq(-10,10,length=255),rep(0,600))
mat <- matrix(sample(x,10000,replace=TRUE),nrow=100,ncol=100)
ImagePlot(mat)
usando idéias daqui http://www.phaget4.org/R/image_matrix.html . Se sua matriz é tão grande que a image
função fica lenta, use o useRaster=TRUE
argumento (você também pode usar objetos Matrix esparsos; observe que deve haver um image
método para usar o código acima, consulte o pacote sparseM.)
Se você fizer isso, algumas ordens inteligentes das linhas / colunas podem se tornar úteis, que você pode calcular com o pacote arules (consulte as páginas 17 e 18). Geralmente, eu recomendaria os utilitários do arules para esse tipo de dados e problemas (não apenas na visualização, mas também para encontrar padrões). Lá você também encontrará medidas de associação entre os níveis que você pode usar em vez do sombreamento residual.
Você também pode querer olhar para as tabelas de tabelas que deseja investigar apenas alguns efeitos adversos posteriormente.