Muazzam bir seyreklik durum tablosu nasıl görselleştirilir?


24

İki değişkenim var: Uyuşturucu Adı (DN) ve çoktan çoğa ilişkide olan karşılık gelen Advers Olaylar (AE). 33.556 ilaç ismi ve 9.516 advers olay var. Örneklem büyüklüğü yaklaşık 5.8 milyon gözlemdir.

DN ile AE arasındaki ilişkiyi / ilişkiyi incelemek ve anlamak istiyorum. Resimlere bakmak daha iyi olduğundan, bu seti R'de görselleştirmenin bir yolunu düşünüyorum. Nasıl gideceğimi bilmiyorum ...


3
(+1) Bu yorumlarda sunulan ek bilgiler ışığında (silindiğinden beri, bilgiler artık sorunun kendisinde göründüğü için), bu ilginç ve zorlu bir sorun haline geldi. Daha önceki seçmenleri bu konuyu tanımak için oylarını değiştirmeye teşvik ediyorum (ve diğerleri de bana katılıyorsanız soruyu geçersiz kılmak için!).
whuber

1
Veriler halka açık mı?
kardinal

5
@ cardinal, evet .. FDA'dan elde edilen verilere AERS adı verildi. Bağlantıya bakınız: fda.gov/Drugs/GuidanceComplianceRegulatoryInformation/…
user9292

Bu büyük bir literatür ile bilinen bir sorundur: Örneğin (tıptaki istatistiklerden, indirilebilir): "Birden fazla karşılaştırma ortamında gözden geçirilen Bayesçi farmakovijilans sinyal saptama yöntemleri" ve bunlara referanslar.
kjetil b halvorsen

İlginç bir makale gibi geliyor (serbestçe temin edilebildiğinden emin değilsiniz, ancak bir R paketi var ). Şimdi, hangi grafiksel çözümü önerirsiniz?
chl

Yanıtlar:


11

Yapabileceğiniz şey, burada vcd'nin artık gölgelendirme fikirlerini, örneğin bu kitap bölümünün 49. sayfasında olduğu gibi, seyrek matris görselleştirmesiyle birlikte kullanmak . İkinci arsa artık gölgelendirme ile düşünün ve fikir olsun.

Seyrek matris / bitişik tablo normalde her bir ilacın her bir ters etkide meydana gelme sayısını içerir. Bununla birlikte, artık gölgelendirme fikri ile, temel log log lineer bir model oluşturabilir (örneğin, bir bağımsızlık modeli veya ne istersen) ve hangi ilaç / etki kombinasyonunun modelin öngördüğünden daha sık / daha az meydana geldiğini bulmak için renk şemasını kullanabilirsiniz. . Birçok gözlem sahip olduğundan, çok ince bir renk eşikleme kullanmak ve küme analizinde mikroarray'ler görselleştirilmiş örneğin genellikle nasıl benzeyen bir harita alabilir burada(ama muhtemelen daha güçlü renk "gradyanlar" ile). Veya eşikleri, yalnızca gözlemlerdeki gözlemler arasındaki farkların renklendirilenden daha fazla eşiği geçmesi ve gerisi beyaz kalacaktır. Bunu tam olarak nasıl yapacaksınız (örneğin, hangi modeli kullanacağınız veya hangi eşikleri) sorularınıza bağlıdır.

Düzenleme İşte burada nasıl yaparım (yeterli RAM varsa ...)

  1. İstenilen boyutlarda seyrek bir matris oluşturun (ilaç adları x etkileri)
  2. Artıkları bağımsızlık loglinear modelinden hesaplayın
  3. Minimum çözünürlükten maksimum kalıntıya kadar ince çözünürlükte bir renk gradyanı kullanın (örn. Bir hsv renk boşluğu ile)
  4. Kalıntı büyüklüğünün renk değerini, seyrek matristeki uygun konuma yerleştirin.
  5. Matrisi bir görüntü grafiği ile çizin.

Daha sonra böyle bir şeyle bitiyorsunuz (tabii ki resminiz çok daha büyük olacak ve piksel boyutu çok daha düşük olacak ancak fikir edinmelisiniz. Renklerin zekice kullanılmasıyla, bağımsızlıktan dernekleri / ayrılmaları görselleştirebilirsiniz. meraklı).

100x100'lük bir matrisle hızlı ve kirli bir örnek. Bu sadece efsanede görebileceğiniz gibi -10 ila 10 arasında kalan artıkları içeren bir oyuncak örneğidir. Beyaz sıfır, mavi beklenenden daha az sıklıkta, kırmızı beklenenden daha sık görülür. Fikri yakalayabilmeli ve oradan alabilmelisin. Düzenleme: Arsa kurulumu ve şiddet içermeyen renkler kullandım.

görüntü tanımını buraya girin

Bu, imageişlev kullanılarak ve cm.colors()aşağıdaki işlevde yapıldı:

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)

Buradan fikirlerin kullanımı http://www.phaget4.org/R/image_matrix.html . Eğer matrisiniz imagefonksiyonun yavaşlayacağı kadar büyükse , useRaster=TRUEargümanı kullanın (seyrek Matrix nesnelerini de kullanmak isteyebilirsiniz;image kodu yukarıdan kullanmak istiyorsanız yöntem olması sparseM paketine bakın.)

Bunu yaparsanız, satır / sütunların bazı akıllı sıralamaları kullanışlı olabilir, bu da arules paketiyle hesaplayabilirsiniz (sayfa 17 ve 18 ya da öylesine kontrol edin). Genellikle bu tür bir veri ve problem için arules hizmetlerini öneririm (sadece görselleştirme değil, aynı zamanda modelleri bulma). Ayrıca, artık gölgelendirme yerine kullanabileceğiniz seviyeler arasındaki ilişki ölçütlerini bulacaksınız.

Ayrıca, daha sonra sadece birkaç yan etkiyi araştırmak istediğiniz tablolara bakmak isteyebilirsiniz.


1
Görünüşe göre bu, bugünlerde "yorgan arsası" olarak adlandırılıyor plosone.org/article/info:doi/10.1371/journal.pone.0085047
Momo

Bu gibi ısı haritalarını kümelenmiş satır ve sütunlarla, örneğin hiyerarşik kümeleme ile görmeye alışkınım. Her ne kadar 33556 x 9516 Bu şekilde görselleştirmek için çok yol gibi görünüyor.
R Greg Stacey
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.