To, co możesz zrobić, to wykorzystać pozostałe pomysły cieniowania z vcd tutaj w połączeniu z rzadką wizualizacją macierzy, jak na przykład na stronie 49 tego rozdziału książki . Wyobraź sobie tę ostatnią fabułę z resztkowymi cieniowaniami, a otrzymasz pomysł.
Rzadka matryca / tabela zakaźności normalnie zawierałaby liczbę wystąpień każdego leku przy każdym działaniu niepożądanym. Jednak dzięki pomysłowi cieniowania resztkowego możesz ustawić podstawowy logiczny model liniowy (np. Model niezależności lub cokolwiek innego, co chcesz) i użyć schematu kolorów, aby dowiedzieć się, która kombinacja leków / efektów występuje częściej / rzadziej niż przewidywałby model . Ponieważ masz wiele obserwacji, możesz użyć bardzo dokładnego progu kolorów i uzyskać mapę, która wygląda podobnie do tego, jak często wizualizowane są mikromacierze w analizie skupień, np. Tutaj(ale prawdopodobnie z mocniejszymi „gradientami”). Możesz też zbudować progi w taki sposób, że tylko wtedy, gdy różnice obserwacji względem prognoz przekroczą próg, wówczas kolor się przybierze, a reszta pozostanie biała. To, jak dokładnie to zrobisz (np. Jaki model zastosować lub jakie progi) zależy od twoich pytań.
Edytuj
Więc oto jak bym to zrobił (biorąc pod uwagę, że mam wystarczającą ilość dostępnej pamięci RAM ...)
- Utwórz rzadką macierz pożądanych wymiarów (nazwy leków x efekty)
- Obliczyć reszty z logicznego modelu niezależności
- Użyj gradientu kolorów w dokładnej rozdzielczości od minimalnej do maksymalnej wartości resztkowej (np. Z przestrzenią kolorów hsv)
- Wstaw odpowiednią wartość koloru wielkości resztkowej w odpowiednim miejscu w rzadkiej matrycy
- Narysuj matrycę za pomocą wykresu obrazu.
W efekcie powstaje coś takiego (oczywiście obraz będzie znacznie większy i rozmiar piksela będzie znacznie mniejszy, ale powinieneś pojąć ten pomysł. Dzięki sprytnemu użyciu koloru możesz wizualizować skojarzenia / odstępstwa od niezależności, na których jesteś najbardziej zainteresowany).
Szybki i brudny przykład z matrycą 100 x 100. To tylko przykład zabawki z resztkami od -10 do 10, jak można zobaczyć w legendzie. Biały jest zerowy, niebieski jest rzadszy niż oczekiwano, czerwony jest częstszy niż oczekiwano. Powinieneś być w stanie zdobyć pomysł i wziąć go stamtąd. Edycja: Poprawiłem ustawienia fabuły i użyłem kolorów bez przemocy.
Dokonano tego przy użyciu image
funkcji i cm.colors()
następującej funkcji:
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)
korzystając z pomysłów tutaj http://www.phaget4.org/R/image_matrix.html . Jeśli macierz jest tak duża, że image
funkcja zwalnia, użyj useRaster=TRUE
argumentu (możesz również użyć rzadkich obiektów Matrix; zwróć uwagę, że powinna istnieć image
metoda, jeśli chcesz użyć powyższego kodu, zobacz pakiet sparseM).
Jeśli to zrobisz, przydatne może być sprytne uporządkowanie wierszy / kolumn, które możesz obliczyć za pomocą pakietu arules (sprawdź strony 17 i 18 lub więcej). Generalnie polecam narzędzia arules dla tego typu danych i problemów (nie tylko wizualizacji, ale także znajdowania wzorców). Znajdziesz tam również miary powiązania między poziomami, których możesz użyć zamiast resztkowego cieniowania.
Możesz także przyjrzeć się planom tabel, które później zbadasz tylko kilka działań niepożądanych.