Làm thế nào để tìm các nhóm (quỹ đạo) trong số các dữ liệu theo chiều dọc?


11

Bối cảnh

Tôi muốn đặt bối cảnh trước khi phần nào mở rộng câu hỏi.

Tôi có dữ liệu theo chiều dọc, các phép đo được thực hiện trên các đối tượng khoảng 3 tháng một lần, kết quả chính là số (như liên tục đến 1dp) trong phạm vi 5 đến 14 với số lượng lớn (của tất cả các điểm dữ liệu) nằm trong khoảng từ 7 đến 10. Nếu tôi thực hiện âm mưu spaghetti (với tuổi trên trục x và đường cho mỗi người) rõ ràng là một mớ hỗn độn khi tôi có> 1500 đối tượng, nhưng có một bước đi rõ ràng đối với các giá trị cao hơn với tuổi tăng (và điều này được biết).

Câu hỏi rộng hơn: Điều chúng tôi muốn làm là trước tiên có thể xác định các nhóm xu hướng (nhóm bắt đầu cao và cao, nhóm bắt đầu thấp và thấp, nhóm bắt đầu thấp và tăng lên cao, v.v.) và sau đó chúng tôi có thể xem xét các yếu tố cá nhân có liên quan đến tư cách thành viên của 'nhóm xu hướng'.

Câu hỏi của tôi ở đây là đặc biệt liên quan đến phần đầu tiên, nhóm theo xu hướng.

Câu hỏi

  • Làm thế nào chúng ta có thể nhóm các quỹ đạo theo chiều dọc cá nhân?
  • Phần mềm nào sẽ phù hợp để thực hiện điều này?

Tôi đã xem Proc Traj trong SAS và M-Plus được đề xuất bởi một đồng nghiệp, người mà tôi đang tìm hiểu, nhưng muốn biết những gì người khác nghĩ về điều này.


1
Đây chỉ là điểm khởi đầu, nhưng có lẽ kiểm tra một số câu trả lời cho câu hỏi này: stats.stackexchange.com/questions/2777/ mẹo
Jeromy Anglim

Cảm ơn Jeromy, tùy chọn kml rất thú vị, tôi thích ý tưởng được đưa ra trong R, nhưng tôi không chắc mình có thể sử dụng khung của họ với dữ liệu của mình hay không, vì các đối tượng đến ở các độ tuổi khác nhau cho các lượt truy cập của họ thay vì 'truy cập 1' ' truy cập 2 'vv và một số có 10 lượt truy cập trong khi những người khác có 50 + ...
nzcoops

Kiểm tra kml gói - dường như cung cấp chức năng bạn cần. Bài viết trong JoSS mô tả nó một cách chi tiết. Ngoài ra kml3d& kmlShapecó thể được quan tâm.
radek

Câu trả lời:


11

Tôi đã sử dụng Mfuzz trong R để phân cụm các bộ dữ liệu microarray theo thời gian. Mfuzz sử dụng "cụm mềm". Về cơ bản, các cá nhân có thể xuất hiện trong nhiều nhóm.

Như @Andy chỉ ra trong bình luận, bài báo gốc sử dụng dữ liệu CTN. Tuy nhiên, tôi nghi ngờ rằng nó sẽ hoạt động tốt cho dữ liệu rời rạc của bạn. Đặc biệt là vì bạn chỉ đang khám phá các tập dữ liệu. Đây là một ví dụ nhanh trong R:

##It's a bioconductor package
library(Mfuzz)
library(Biobase)

## Simulate some data
## 6 time points and 90 individuals
tps = 6;cases = 90
d = rpois(tps*cases, 1)  ##Poisson distribution with mean 1
m = matrix(d, ncol=tps, nrow=cases)

##First 30 individuals have increasing trends
m[1:30,] = t(apply(m[1:30,], 1, cumsum))

##Next 30 have decreasing trends
##A bit hacky, sorry
m[31:60,] = t(apply(t(apply(m[31:60,], 1, cumsum)), 1, rev))

##Last 30 individuals have random numbers from a Po(1)

##Create an expressionSet object
tmp_expr = new('ExpressionSet', exprs=m)

##Specify c=3 clusters
cl = mfuzz(tmp_expr, c=3, m=1.25)
mfuzz.plot(tmp_expr,cl=cl, mfrow=c(2, 2))

Đưa ra cốt truyện sau:

Mfuzz cụm


Cảm ơn đã tham khảo, tôi đã không gặp phải điều này trước đây. Thuật toán phân cụm này có phù hợp với dữ liệu phân tán có số lượng thấp như OP đã đề cập (hoặc dữ liệu nhị phân) không? Tài liệu tham khảo (Futschik & Carlisle 2005) đã sử dụng dữ liệu được chuyển đổi thành liên tục.
Andy W

@Andy: Điểm tốt. Tôi đã bao gồm một mô phỏng nhanh chóng. Mọi thứ có vẻ ổn, nhưng có thể có một giải pháp tối ưu hơn.
csgillespie

Cảm ơn @csgillespie, sẽ xem xét thử. Nhân tiện, dữ liệu của tôi liên tục không rời rạc, không chắc câu hỏi có đủ rõ ràng không hoặc đó có phải là một lỗi đánh máy trong câu trả lời của bạn không? Phải quay lại R của tôi để cài đặt Mfuzz, hãy để niềm vui bắt đầu.
nzcoops

@csgillespie - cái này rất tuyệt Tôi đang chơi xung quanh với nó ngay bây giờ trên một số dữ liệu thực. Bạn có tình cờ biết liệu có cách nào để ước tính số lượng nhóm không?
Macro

4

Tôi hy vọng có một gói MPLUS để làm những gì bạn cần. Có một bài báo trên tờ Psychometrika về chủ đề này gần như chính xác

springerlink.com/content/25r110007g417187

ngoại trừ dữ liệu là nhị phân và quỹ đạo là quỹ đạo xác suất. Các tác giả sử dụng phân tích lớp tiềm ẩn (được thực hiện bằng cách sử dụng mô hình hỗn hợp hữu hạn bị phạt) để nhóm quỹ đạo. Tôi cũng biết tác giả đầu tiên đã viết một số bài báo khác khoảng 10 năm trước với Bengt Muthen (người tạo ra MPLUS) về phân tích lớp tiềm ẩn trong các cài đặt tương tự (với quỹ đạo). Ví dụ,

http: // onlinel Library.wiley.com/doi/10.1111/j.0006-341X.1999.00463.x/abab

Nghe có vẻ rất giống với những gì bạn đang nói, ngoại trừ kết quả là nhị phân. Trường hợp liên tục đơn giản hơn nhiều, vì vậy tôi sẽ thực hiện tìm kiếm tài liệu ngược (tức là xem các tài liệu tham khảo các giấy tờ này) để tìm một cái gì đó phù hợp với những gì bạn mô tả chính xác hơn.

Để tìm hiểu thêm, bạn có thể hỏi trực tiếp các chủ sở hữu của MPLUS về gói bạn cần sử dụng để làm những gì bạn cần. Họ thường trả lời khá nhanh và rất hữu ích:

http://www.statmodel.com/cgi-bin/discus/discus.cgi

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.