거대한 희박한 비상 대표를 시각화하는 방법?


24

약물 이름 (DN)과 이에 해당하는 이상 반응 (AE)이라는 두 가지 변수가 있는데, 이는 다 대다 관계에 있습니다. 33,556 개의 약물 이름과 9,516 개의 부작용이 있습니다. 표본 크기는 약 580 만 개의 관측치입니다.

DN과 AE의 연관성 / 관계를 연구하고 이해하고 싶습니다. 그림을 보는 것이 더 낫기 때문에 R 에서이 세트를 시각화하는 방법에 대해 생각하고 있습니다. 어떻게해야할지 모르겠습니다 ...


3
(+1)이 의견에 제시된 추가 정보 (정보가 이제 질문 자체에 나타나기 때문에 삭제 된 이후)에 비추어 볼 때, 이것은 흥미롭고 도전적인 문제가되었습니다. 나는 이전의 다운 투터들이 이것을 인정하여 그들의 투표를 바꾼다. (그리고 당신이 나에게 동의한다면 다른 사람들은 그 질문을 찬성한다!)
whuber

1
데이터가 공개되어 있습니까?
추기경

5
@cardinal, yes .. FDA에서 얻은 데이터를 AERS라고합니다. fda.gov/Drugs/GuidanceComplianceRegulatoryInformation/…
user9292

이것은 큰 문헌에서 알려진 문제입니다. 예를 들어 (의학 통계에서 다운로드 가능) : "복수 비교 설정에서 재검토 된 바이에른 약물 감시 신호 탐지 방법"을 참조하십시오.
kjetil b halvorsen

흥미로운 종이처럼 들립니다 (자유롭게 구할 수는 없지만 R 패키지가 있습니다 ). 이제 어떤 그래픽 솔루션 을 제안 하시겠습니까?
chl

답변:


11

여기서는 vcd의 잔차 음영 아이디어를 희소 행렬 시각화와 함께 사용하여 예를 들어이 책의 49 페이지에 있습니다. 잔여 음영으로 후자의 줄거리를 상상해보십시오.

희소 행렬 / 연속성 표에는 일반적으로 각 부작용과 함께 각 약물의 발생 횟수가 포함됩니다. 그러나 잔류 쉐이딩 아이디어를 사용하면 기본 로그 선형 모델 (예 : 독립 모델 또는 원하는 다른 것)을 설정하고 색상 구성표를 사용하여 모델이 예측하는 것보다 더 자주 / 낮은 빈도로 발생하는 약물 / 효과 조합을 찾을 수 있습니다 . 관측치가 많으므로 매우 미세한 색상 임계 값을 사용하고 클러스터 분석의 마이크로 어레이가 종종 시각화되는 방식과 유사한 맵을 얻을 수 있습니다.(그러나 아마도 더 강한 색상 "그라데이션"). 또는 예측에 대한 관측치의 차이가 색상보다 임계 값을 초과하고 나머지는 흰색으로 유지되도록 임계 값을 작성할 수 있습니다. 이 작업을 정확히 수행하는 방법 (예 : 사용할 모델 또는 임계 값)은 질문에 따라 다릅니다.

편집 여기에 내가하는 방법이 있습니다 (사용 가능한 RAM이 충분하다면 ...)

  1. 원하는 치수의 희소 행렬 만들기 (약물 이름 x 효과)
  2. 독립 로그 선형 모형에서 잔차 계산
  3. 최소부터 최대 잔차까지 정밀한 해상도로 색상 그라디언트를 사용하십시오 (예 : hsv 색상 공간)
  4. 희소 행렬의 해당 위치에 잔차 크기의 해당 색상 값을 삽입
  5. 이미지 플롯으로 행렬을 플로팅합니다.

그런 다음 이런 식으로 끝납니다 (물론 그림이 훨씬 커지고 픽셀 크기가 훨씬 작아 지지만 아이디어를 얻어야합니다.) 색상을 영리하게 사용하면 연관성 / 출발을 독립적으로 시각화 할 수 있습니다. 관심이 있음).

100x100 매트릭스를 사용한 빠르고 더러운 예입니다. 이것은 범례에서 볼 수 있듯이 잔차가 -10에서 10 사이의 장난감 예제입니다. 흰색은 0이고 파란색은 예상보다 덜 자주, 빨간색은 예상보다 더 자주입니다. 아이디어를 얻을 수 있어야합니다. 편집 : 줄거리 설정을 수정하고 비폭력 색상을 사용했습니다.

여기에 이미지 설명을 입력하십시오

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인수를 사용하십시오. 스파 스 매트릭스 객체를 사용할 수도 있습니다. image위의 코드를 사용하려면 방법 이 있어야 합니다. sparseM 패키지를 참조하십시오.

이렇게하면 행 / 열의 영리한 순서가 편리 해져 arules 패키지로 계산할 수 있습니다 (17 페이지 및 18 페이지 확인). 일반적으로 이러한 유형의 데이터 및 문제에 대한 arules 유틸리티를 권장합니다 (시각화뿐만 아니라 패턴 찾기). 또한 잔여 음영 대신 사용할 수있는 레벨 사이의 연관 측정 값을 찾을 수 있습니다.

또한보고 할 수 있습니다 tableplots 나중에에만 부작용의 몇 가지를 조사 할의.


1
분명히 이것은 오늘날 "퀼트 플롯"이라고 불린다 plosone.org/article/info:doi/10.1371/journal.pone.0085047
Momo

예를 들어 계층 적 클러스터링과 같이 행과 열이 군집되어있는 이와 같은 히트 맵을 보는 데 익숙합니다. 33556 x 9516 은이 방법을 많이 시각화하는 방법처럼 보입니다.
R 그렉 스테이시
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.