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