Một Anova lặp đi lặp lại các biện pháp đa chiều trong R?


16

Câu hỏi sau đây là một trong những hạt thánh cho tôi một thời gian, tôi hy vọng ai đó có thể đưa ra một lời khuyên tốt.

Tôi muốn thực hiện một biện pháp lặp lại không tham số nhiều lần bằng cách sử dụng R.

Tôi đã thực hiện một số tìm kiếm và đọc trực tuyến một thời gian và cho đến nay tôi chỉ có thể tìm ra giải pháp cho một số trường hợp: thử nghiệm Friedman cho một cách không lặp lại các phép đo anova, hồi quy thứ tự với {car} Hàm Anova cho đa phương thức anova, vân vân. Các giải pháp một phần KHÔNG phải là những gì tôi đang tìm kiếm trong chuỗi câu hỏi này. Tôi đã tóm tắt những phát hiện của tôi cho đến nay trong một bài đăng tôi đã xuất bản cách đây một thời gian (có tiêu đề: Các biện pháp lặp đi lặp lại ANOVA với R (chức năng và hướng dẫn) , trong trường hợp nó sẽ giúp được bất cứ ai)


Nếu những gì tôi đọc trực tuyến là đúng, thì nhiệm vụ này có thể đạt được bằng cách sử dụng mô hình Hồi quy thông thường hỗn hợp (hay còn gọi là Mô hình tỷ lệ cược tỷ lệ).

Tôi tìm thấy hai gói có vẻ phù hợp, nhưng không thể tìm thấy bất kỳ họa tiết nào về chủ đề này:

Vì vậy, mới đối với vấn đề này, tôi đã hy vọng một số hướng từ những người ở đây.

Có bất kỳ hướng dẫn / gợi ý đọc về chủ đề này? Thậm chí tốt hơn, ai đó có thể đề xuất một mã ví dụ đơn giản về cách chạy và phân tích mã này trong R (ví dụ: "các biện pháp lặp lại không tham số multiway anova")?


Tal, tôi có thể hỏi liệu bạn đã tìm ra giải pháp cho việc này chưa? Tôi đang có cùng một vấn đề và các câu trả lời dưới đây có thể hữu ích trong việc hỗ trợ tìm câu trả lời, nhưng không thực sự cung cấp câu trả lời dứt khoát. Tôi có 9 DV thứ tự và 2 điểm thời gian, và đang tìm kiếm bài kiểm tra tương tự mà bạn muốn thực hiện.
Torvon

1
Xin chào Torvon. Tôi chưa bao giờ đến bằng một giải pháp. Tôi đoán các bài kiểm tra hoán vị sẽ là con đường an toàn nhất, nhưng tôi không bao giờ có thời gian để ngồi và làm cho nó hoạt động. Nếu bạn làm - xin vui lòng đến một lần nữa để gửi câu trả lời của bạn. Chúc mừng, T
Tal Galili

Cám ơn bạn đã phản ứng nhanh chóng của bạn. Tôi sẽ phải làm việc này và sẽ cho bạn biết.
Torvon

Câu trả lời:


8

Các ez gói, trong đó tôi là tác giả, có chức năng gọi ezPerm () mà tính một thử nghiệm hoán vị, nhưng có lẽ không làm tương tác đúng cách (các tài liệu hướng dẫn thừa nhận càng nhiều). Phiên bản mới nhất có chức năng gọi là ezBoot (), cho phép bạn thực hiện thay đổi kích thước bootstrap có tính đến các biện pháp lặp đi lặp lại (bằng cách lấy lại đối tượng, sau đó trong các đối tượng), sử dụng ô truyền thống có nghĩa là thống kê dự đoán hoặc sử dụng mô hình hiệu ứng hỗn hợp để đưa ra dự đoán cho mỗi tế bào trong thiết kế. Tôi vẫn không chắc chắn các CIs bootstrap "không tham số" từ các dự đoán mô hình hiệu ứng hỗn hợp như thế nào; Trực giác của tôi là họ có thể được coi là không tham số một cách hợp lý, nhưng sự tự tin của tôi trong lĩnh vực này là thấp do tôi vẫn đang tìm hiểu về các mô hình hiệu ứng hỗn hợp.


Xin chào Mike. Cảm ơn bạn đã trả lời, và cho gói của bạn - nó thực sự tuyệt vời!
Tal Galili

@Mike, Gói của bạn dường như chỉ hoạt động cho các thiết kế nhiều yếu tố hỗn hợp. Sự aovpthay thế - từ lmpermgói mồ côi - tạo ra các biến thể lớn cho các giá trị p, xem điều này . Tôi có một vài câu hỏi: Tôi có thể tìm tài liệu tham khảo thư mục để thực hiện ở ezPermđâu? Làm thế nào tôi có thể giải thích rằng chức năng có thể không thực hiện tương tác đúng cách ? Điều gì có thể là một bài kiểm tra sau hoc trong trường hợp này? Cảm ơn!
toto_tico

@Mike, điều gì đó ezPerm( data = DATA, dv = DV, wid = WID, within = interaction(A,B), perms = 1e3)có ý nghĩa để kiểm tra lại nếu tương tác có ý nghĩa?
toto_tico

5

Khi nghi ngờ, bootstrap! Thực sự, tôi không biết về một quy trình đóng hộp để xử lý một kịch bản như vậy.

Bootstrapping là cách áp dụng chung để tạo một số tham số lỗi từ dữ liệu hiện có. Thay vì dựa vào các giả định tham số điển hình, các quy trình bootstrap tận dụng các đặc điểm của mẫu để tạo phân phối theo kinh nghiệm dựa vào đó ước tính mẫu của bạn có thể được so sánh.

Học giả Google là vàng ... nó đã được thực hiện trước đó ... ít nhất một lần.

Lunneborg, Clifford E.; Tousignant, James P.; 1985 "Bootstrap của Efron với ứng dụng cho thiết kế các biện pháp lặp đi lặp lại." Nghiên cứu hành vi đa biến; Tháng Tư85, Tập. 20 Số 2, p161, 18p


1
Cảm ơn bạn đã dẫn dắt Brett! Tôi tự hỏi nếu bây giờ ai đó phải thực hiện nó trong R (tôi đoán là không).
Tal Galili

1
Đúng. R có rất nhiều thói quen để hỗ trợ bootstrap và các phương thức ngẫu nhiên khác, nhưng tôi không biết rằng bạn sẽ tìm thấy bất cứ điều gì cụ thể cho vấn đề này.
Brett

Câu đầu tiên rất hay. Tôi hy vọng nó không có bản quyền, vì tôi dự định sử dụng nó: D
gui11aume

0

Có một "mánh khóe" được đề cập trong một số diễn đàn và danh sách gửi thư - tôi cũng thấy nó được đề cập trong cuốn sách "Phân tích đa cấp" của Joop Hox (ấn bản thứ hai, 2010), trang 189.

Ý tưởng là: bạn định dạng lại dữ liệu dài của bạn thành một tập dữ liệu dài, trong đó bạn tạo một DV mới bao gồm tất cả các phản hồi DV của bạn và sử dụng biến chỉ số chứa thông tin về bản chất của DV để dự đoán kết quả này.

Giả sử bạn có 9 triệu chứng trầm cảm (thứ tự), 2 điểm đo và 300 đối tượng. Vì vậy, trong khi bạn có 300 hàng trong tập dữ liệu thông thường và trong tập dữ liệu dài của bạn, bạn sẽ có 600 hàng, tập dữ liệu mới này sẽ có 9 hàng (triệu chứng) x 2 (thời gian) x 300 (đối tượng).

Biến "triệu chứng" DV mới hiện chứa mức độ nghiêm trọng của triệu chứng của người tham gia đối với 9 triệu chứng, biến "chỉ số" chứa thông tin về bản chất của triệu chứng (1 đến 9), và sau đó có hai biến "thời gian" và " Tên người dùng".

Bây giờ bạn có thể sử dụng ordinalgói để chạy này.

data<-read.csv("data_long_long.csv", head=T)

data$symptoms <- factor(data$symptoms)
data$time <- factor(data$time)
data$index <-factor(data$index)

m1<-clmm2(symptoms ~ index+time, random=UserID, data = data, Hess=TRUE, nAGQ=10)

Trong trường hợp cụ thể của tôi, tôi quan tâm liệu có sự tương tác đáng kể giữa chỉ số và thời gian hay không, vì vậy tôi đã chạy một mô hình bổ sung và so sánh chúng:

m2<-clmm2(symptoms ~ index+time, random=UserID, data = data, Hess=TRUE, nAGQ=10)
anova(m1,m2)

CLMM2 sử dụng mô hình chặn ngẫu nhiên (theo hiểu biết tốt nhất của tôi, gói ordinalkhông thực hiện độ dốc ngẫu nhiên), nếu bạn không sử dụng mô hình chặn ngẫu nhiên, bạn có thể chạy các mô hình thay vì sử dụng CLM, ví dụ:

m3<-clm(symptoms ~ index+time, data = data)

1
không phải là m1 và m2 giống hệt nhau, có thể bạn muốn nói clmm2(symptoms ~ index*time, random=UserID, data = data, Hess=TRUE, nAGQ=10) anova(m1,m2). Bạn có biết làm thế nào để thể hiện điều này với chức năng clmm mới không? Tôi không chắc chắn về ký hiệu.
toto_tico
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.