Làm thế nào để hình dung một bảng dự phòng rất lớn thưa thớt?


24

Tôi có hai biến: Tên thuốc (DN) và Sự kiện bất lợi (AE) tương ứng, đứng trong mối quan hệ nhiều-nhiều. Có 33.556 tên thuốc và 9.516 tác dụng phụ. Cỡ mẫu là khoảng 5,8 triệu quan sát.

Tôi muốn nghiên cứu và hiểu mối liên hệ / mối quan hệ giữa DN và AE. Tôi đang suy nghĩ về cách hình dung bộ ảnh này trong R vì tốt hơn là nhìn vào hình ảnh. Tôi không chắc làm thế nào để đi về nó ...


3
(+1) Trước thông tin bổ sung được trình bày trong các nhận xét này (kể từ khi bị xóa, vì thông tin hiện xuất hiện trong chính câu hỏi), điều này đã trở thành một vấn đề thú vị và đầy thách thức. Tôi khuyến khích những người phản đối trước đây thay đổi phiếu bầu của họ để công nhận điều này (và những người khác nêu lên câu hỏi nếu bạn đồng ý với tôi!).
whuber

1
Là dữ liệu có sẵn công khai?
Đức hồng y

5
@cardinal, vâng .. dữ liệu thu được từ FDA, nó được gọi là AERS. Xem liên kết: fda.gov/Drugs/GuidanceComplianceRegulatoryIn information / Giả
user9292

Đây là một vấn đề được biết đến với một tài liệu lớn: Bạn có thể xem qua, ví dụ (từ thống kê trong y học, có thể tải xuống): "Phương pháp phát hiện tín hiệu dược lý Bayes được xem lại trong một cài đặt so sánh" và tham khảo trong đó.
kjetil b halvorsen

Nghe có vẻ như một tờ giấy thú vị (không chắc là nó có sẵn miễn phí, nhưng có gói R ). Bây giờ, giải pháp đồ họa nào bạn muốn đề xuất?
chl

Câu trả lời:


11

Những gì bạn có thể làm là sử dụng các ý tưởng tô bóng còn lại từ vcd ở đây kết hợp với trực quan hóa ma trận thưa thớt như ví dụ trên trang 49 của chương sách này . Hãy tưởng tượng cốt truyện sau với các phần còn lại và bạn có ý tưởng.

Bảng ma trận / tiếp giáp thưa thớt thường sẽ chứa số lần xuất hiện của từng loại thuốc với mỗi tác dụng phụ. Tuy nhiên, với ý tưởng tạo bóng dư, bạn có thể thiết lập mô hình tuyến tính nhật ký cơ sở (ví dụ: mô hình độc lập hoặc bất cứ điều gì bạn thích) và sử dụng bảng màu để tìm ra sự kết hợp thuốc / hiệu ứng nào xảy ra thường xuyên hơn / ít hơn so với mô hình dự đoán . Vì bạn có nhiều quan sát, bạn có thể sử dụng một ngưỡng màu rất tốt và có được một bản đồ trông giống như cách các vi mô trong phân tích cụm thường được hình dung, ví dụ như ở đây(nhưng có lẽ với "độ dốc" màu mạnh hơn). Hoặc bạn có thể xây dựng các ngưỡng sao cho chỉ khi sự khác biệt của các quan sát so với dự đoán vượt quá ngưỡng được tô màu và phần còn lại sẽ giữ nguyên màu trắng. Làm thế nào chính xác bạn sẽ làm điều này (ví dụ: mô hình nào sẽ sử dụng hoặc ngưỡng nào) phụ thuộc vào câu hỏi của bạn.

Chỉnh sửa Vì vậy, đây là cách tôi sẽ làm điều đó (với điều kiện tôi có đủ RAM ...)

  1. Tạo một ma trận thưa thớt các kích thước mong muốn (tên thuốc x hiệu ứng)
  2. Tính toán phần dư từ mô hình loglinear độc lập
  3. Sử dụng một dải màu ở độ phân giải mịn từ cực tiểu đến cực đại của phần dư (ví dụ: với không gian màu hsv)
  4. Chèn giá trị màu theo độ lớn của phần dư tại vị trí theo ma trận thưa thớt
  5. Vẽ đồ thị ma trận với một cốt truyện hình ảnh.

Sau đó, bạn kết thúc với một cái gì đó như thế này (tất nhiên hình ảnh của bạn sẽ lớn hơn nhiều và sẽ có kích thước pixel thấp hơn nhiều nhưng bạn sẽ có ý tưởng. Với cách sử dụng màu sắc thông minh, bạn có thể hình dung ra sự liên kết / khởi hành từ sự độc lập mà bạn thích nhất quan tâm).

Một ví dụ nhanh và bẩn với ma trận 100x100. Đây chỉ là một ví dụ về đồ chơi với số dư từ -10 đến 10 như bạn có thể thấy trong truyền thuyết. Màu trắng bằng không, màu xanh ít thường xuyên hơn dự kiến, màu đỏ thường xuyên hơn dự kiến. Bạn sẽ có thể có được ý tưởng và lấy nó từ đó. Chỉnh sửa: Tôi đã sửa lỗi thiết lập của cốt truyện và sử dụng các màu không bạo lực.

nhập mô tả hình ảnh ở đây

Điều này đã được thực hiện bằng cách sử dụng imagechức năng và cm.colors()trong chức năng sau đây:

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)

sử dụng các ý tưởng từ đây http://www.phaget4.org/R/image_matrix.html . Nếu ma trận của bạn lớn đến mức imagehàm bị chậm, hãy sử dụng useRaster=TRUEđối số (bạn cũng có thể muốn sử dụng các đối tượng Ma trận thưa thớt; lưu ý rằng nên có một imagephương thức nếu bạn muốn sử dụng mã ở trên, hãy xem gói spzzyM.)

Nếu bạn làm điều này, một số thứ tự thông minh của các hàng / cột có thể trở nên tiện dụng, bạn có thể tính toán với gói arules (kiểm tra trang 17 và 18 hoặc hơn). Tôi thường muốn giới thiệu các tiện ích arules cho loại dữ liệu và vấn đề này (không chỉ trực quan mà còn để tìm các mẫu). Ở đó, bạn cũng sẽ tìm thấy các biện pháp liên kết giữa các cấp độ mà bạn có thể sử dụng thay vì đổ bóng còn lại.

Bạn cũng có thể muốn xem xét các bảng biểu của bạn muốn điều tra chỉ một vài tác dụng phụ sau này.


1
Rõ ràng ngày nay nó được gọi là "cốt truyện quilt" plosone.org/article/info:doi/10.1371/journal.pone.0085047
Momo

Tôi đã từng thấy các bản đồ nhiệt như thế này với các hàng và cột được phân cụm, ví dụ với phân cụm theo cấp bậc. Mặc dù 33556 x 9516 có vẻ như rất nhiều để hình dung theo cách này.
R Greg Stacey
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.