Các lựa chọn thay thế cho âm mưu phân tán ba chiều


7

Để trình bày tôi phải hình dung dữ liệu ba chiều. Tôi nên hình dung chúng theo "phong cách của một scatterplot".

Ý tưởng đầu tiên có thể là

  • Một phân tán ba chiều
  • Một ma trận phân tán
  • Giảm kích thước (PCA) và sau đó là phân tán hai chiều

Các lựa chọn thay thế cho các khái niệm này là gì? Nếu có thể bao gồm Mã R trong câu trả lời của bạn.

Chỉnh sửa: Tôi có 40 đối tượng với 3 chiều. Mỗi quan sát có thể nhận một giá trị nguyên từ 1 đến 6.


3
Câu trả lời sẽ phụ thuộc vào cấu trúc và ngữ nghĩa của dữ liệu của bạn. Tùy thuộc vào những gì bạn có, bạn có thể sử dụng các biểu đồ phân tán được điều khiển hoặc các biểu đồ phân tán có chiều thứ ba được biểu thị bằng màu sắc. Bạn có thể cho chúng tôi biết thêm một chút về dữ liệu của bạn và có thể đăng một mẫu không?
Stephan Kolassa

1
Trong lĩnh vực của tôi, ví dụ điển hình nhất là cốt truyện PCA. Bạn chỉ mất một chiều nếu bạn sử dụng PCA.
HelloWorld

1
Các lô phối hợp song song có thể tốt ở thang đo này (3 chiều, 40 điểm) chúng có sẵn thông qua parcoordchức năng trong MASSgói. Lưu ý rằng đôi khi việc thay đổi thứ tự các kích thước có thể làm cho các ô này trở nên thú vị hơn.
G5W

1
Khó khăn chính mà tôi thấy là chỉ có các giá trị nguyên từ 1 đến 6. Điều này khiến cho việc xem dữ liệu đang làm gì vì các điểm sẽ chồng chéo lên nhau khó khăn hơn nhiều. Bạn rất có thể sẽ muốn jitter điểm vẽ của bạn như plot(jitter(y2) ~ jitter(x2), pch = 15)tài liệu tham khảo: thomasleeper.com/Rcourse/Tutorials/jitter.html
Tavrock

Câu trả lời:


3

Tôi nghĩ rằng những gì chủ yếu cần được thêm vào danh sách của bạn là coplots , nhưng chúng ta hãy làm việc theo cách đó. Điểm bắt đầu để hình dung hai biến liên tục phải luôn là một biểu đồ phân tán. Với nhiều hơn hai biến, tổng quát hóa một cách tự nhiên thành ma trận phân tán (mặc dù nếu bạn có nhiều biến, bạn có thể cần chia nó thành nhiều ma trận, xem: Cách trích xuất thông tin từ ma trận phân tán khi bạn có N lớn, rời rạc dữ liệu, & nhiều biến? ). Điều cần nhận ra là một ma trận phân tán là một tập hợp các hình chiếu biên 2D từ một không gian có chiều cao hơn. Nhưng những lợi nhuận đó có thể không phải là thú vị nhất hoặc nhiều thông tin. Chính xác lề bạn có thể muốn xem là một câu hỏi khó (xem, theo đuổi phép chiếu ), nhưng bộ tiếp theo đơn giản nhất có thể kiểm tra là tập hợp làm cho các biến trực giao, tức là phân tán các biến do phân tích thành phần chính . Bạn đề cập đến việc sử dụng điều này để giảm dữ liệu và xem xét biểu đồ phân tán của hai thành phần chính đầu tiên. Suy nghĩ đằng sau đó là hợp lý, nhưng bạn không cần chỉ nhìn vào hai cái đầu tiên, những cái khác có thể đáng để khám phá ( ví dụ , ví dụ về PCA nơi PC có phương sai thấp là có ích , bạn có thể / nên thực hiện một ma trận phân tán của những người, quá. Một khả năng khác với đầu ra của PCA là tạo ra một biplot, trùng lặp cách các biến ban đầu có liên quan đến các thành phần chính (dưới dạng mũi tên) trên đỉnh của biểu đồ phân tán. Bạn cũng có thể kết hợp một ma trận phân tán của các thành phần chính với các biplots.

Tất cả những điều trên là cận biên, như tôi đã đề cập. Một coplot là có điều kiện (phần trên của câu trả lời của tôi ở đây tương phản với điều kiện so với biên). Theo nghĩa đen, 'coplot' là một từ được pha trộn từ 'cốt truyện có điều kiện'. Trong một coplot, bạn đang lấy các lát (hoặc tập hợp con) của dữ liệu trên các kích thước khác và vẽ dữ liệu trong các tập hợp con đó trong một loạt các biểu đồ phân tán. Khi bạn tìm hiểu cách đọc chúng, chúng là một bổ sung hay cho tập hợp các tùy chọn của bạn để khám phá các mẫu trong dữ liệu chiều cao hơn.

Để minh họa những ý tưởng này, đây là một ví dụ với bộ dữ liệu RandU (dữ liệu giả ngẫu nhiên được tạo bởi một thuật toán phổ biến trong những năm 1970):

data(randu)
windows()
  pairs(randu)

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

pca = princomp(randu)
attr(pca$scores, "dimnames")[[1]][1:400] = "o"
windows()
  par(mfrow=c(3,3), mar=rep(.5,4), oma=rep(2,4))
  for(i in 1:3){
    for(j in 1:3){
      if(i<j){
        plot(y=pca$scores[,i], x=pca$scores[,j], axes=FALSE); box()
      } else if(i==j){
        plot(density(pca$scores[,i]), axes=FALSE, main=""); box()
        text(0, .5, labels=colnames(pca$scores)[i])
      } else {
        biplot(pca, choices=c(j,i), main="", xaxp=c(-10,10,1), yaxp=c(-10,10,1))
      }
    }
  }

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

windows()
  coplot(y~x|z, randu)

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

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.