То, что вы могли бы сделать, это использовать остаточные идеи затенения из vcd здесь в сочетании с разреженной матричной визуализацией, как, например, на странице 49 этой главы книги . Представьте себе последний сюжет с остаточной штриховкой, и вы получите идею.
Таблица разреженных матриц / случайностей обычно содержит количество случаев каждого лекарства с каждым побочным эффектом. Однако, имея идею остаточного затенения, вы можете установить базовую линейную модель журнала (например, модель независимости или что-то еще, что вам нравится) и использовать цветовую схему, чтобы выяснить, какая комбинация лекарство / эффект встречается чаще / реже, чем предсказывает модель , Поскольку у вас много наблюдений, вы можете использовать очень точную цветовую границу и получить карту, которая выглядит примерно так, как часто визуализируются микрочипы в кластерном анализе, например здесь(но, вероятно, с более сильными «градиентами» цвета). Или вы можете построить пороговые значения так, чтобы только в случае, если различия в наблюдениях и прогнозах превышали пороговые значения, они окрашивались, а остальное оставалось белым. Как именно вы это сделаете (например, какую модель использовать или какие пороги) зависит от ваших вопросов.
Редактировать
Итак, вот как бы я это сделал (если бы у меня было достаточно оперативной памяти ...)
- Создайте разреженную матрицу желаемых размеров (названия препаратов х эффектов)
- Рассчитать невязки из независимости логлинеарной модели
- Используйте градиент цвета в хорошем разрешении от минимального до максимального остатка (например, с цветовым пространством hsv)
- Вставьте соответствующее значение цвета величины остатков в соответствующей позиции в разреженной матрице
- Построить матрицу с графиком изображения.
Затем вы получите что-то вроде этого (конечно, ваша картинка будет гораздо больше и будет иметь гораздо меньший размер пикселя, но вы должны понять. С умным использованием цвета вы можете визуализировать ассоциации / отклонения от независимости, которые вы наиболее увлекающийся).
Быстрый и грязный пример с матрицей 100x100. Это просто игрушечный пример с остатками от -10 до 10, как вы можете видеть в легенде. Белый - ноль, синий - реже, чем ожидалось, красный - чаще, чем ожидалось. Вы должны быть в состоянии получить идею и взять ее оттуда. Редактировать: я исправил настройку сюжета и использовал ненасильственные цвета.
Это было сделано с помощью image
функции и cm.colors()
в следующей функции:
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)
используя идеи отсюда http://www.phaget4.org/R/image_matrix.html . Если ваша матрица настолько велика, что image
функция работает медленно, используйте useRaster=TRUE
аргумент (вы также можете использовать разреженные объекты Matrix; обратите внимание, что должен бытьimage
метод, если вы хотите использовать код сверху, см. Пакет sparseM.)
Если вы сделаете это, может оказаться полезным некоторое умное упорядочение строк / столбцов, которое вы можете рассчитать с помощью пакета arules. (см. Стр. 17 и 18 или около того). Я бы обычно рекомендовал утилиты arules для этого типа данных и проблем (не только для визуализации, но и для поиска шаблонов). Там вы также найдете меры связи между уровнями, которые вы могли бы использовать вместо остаточного затенения.
Вы можете также захотеть взглянуть на столы, если вы хотите исследовать только пару побочных эффектов позже.