Áp dụng quy tắc của Rubin để kết hợp nhiều bộ dữ liệu được liệt kê


8

Tôi hy vọng sẽ tổng hợp các kết quả của một bộ phân tích khá cơ bản được thực hiện trên một dữ liệu được liệt kê nhiều lần (ví dụ: hồi quy bội, ANOVA). Nhiều lần phân tích và phân tích đã được hoàn thành trong SPSS nhưng SPSS không cung cấp kết quả gộp cho một vài thống kê bao gồm giá trị F, ma trận hiệp phương sai, R-Squared, v.v.

Tôi đã thực hiện một vài nỗ lực để giải quyết vấn đề này bằng cách mạo hiểm vào R hoặc thử các macro có sẵn và chưa giải quyết thành công vấn đề (ví dụ: chạy vào các vấn đề với việc thống kê các chỉ số cho hơn 5 lần cắt ngang trong Chuột chẳng hạn).

Tại thời điểm này, tôi muốn thử tính toán những thứ này bằng tay, áp dụng quy tắc của Rubin, sử dụng đầu ra mà SPSS tạo ra. Tuy nhiên, tôi không chắc làm thế nào tôi có thể rút ra được phương sai trong phạm vi ( ) dựa trên SPSS đầu ra tạo ra. U¯=1mj=1mUj

Tôi thực sự sẽ đánh giá cao một hướng dẫn chi tiết về điều này.


Bạn chỉ đang tự hỏi những biểu tượng trong công thức đó có nghĩa là gì? Bạn có biết đại diện cho đầu ra SPSS không? U
gung - Phục hồi Monica

Đối với đầu ra ANOVA nói riêng (như một phần của hồi quy tuyến tính), thống kê F được báo cáo cùng với các tổng bình phương, df và bình phương trung bình. Tôi đặc biệt đang cố gắng tìm ra cách tính thành phần phương sai trong phạm vi cho thống kê F.
dùng81715

Câu trả lời:


8

Quy tắc của Rubin chỉ có thể được áp dụng cho các tham số theo phân phối bình thường. Đối với các tham số có phân phối F hoặc Chi Square, cần có một bộ công thức khác:

  • Allison, PD (2002). Dữ liệu bị mất. Công viên Newbury, CA: Hiền nhân.

Để thực hiện ANOVA trên nhiều bộ dữ liệu được liệt kê, bạn có thể sử dụng miceadds gói R ( pdf ; miceadds::mi.anova).

Cập nhật 1

Dưới đây là một ví dụ hoàn chỉnh:

  1. Xuất dữ liệu của bạn từ SPSS sang R. Trong Spss lưu dữ liệu của bạn dưới dạng .csv

  2. Đọc trong tập dữ liệu của bạn:

    library(miceadds)   
    dat <– read.csv(file='your-dataset.csv')

    Giả sử rằng reading là biến phụ thuộc của bạn và bạn có hai yếu tố

    • giới tính , với nam = 0 và nữ = 1
    • điều trị , với sự kiểm soát = 0 và 'điều trị được nhận' = 1

    Bây giờ hãy chuyển đổi chúng thành các yếu tố:

    dat$gender    <- factor(dat$gender)
    dat$treatment <- factor(dat$treatment)
  3. Chuyển đổi tập dữ liệu của bạn thành một đối tượng trung bình, theo đó chúng tôi giả sử rằng biến đầu tiên giữ số thứ tự (Imputation_ trong SPSS):

    dat.mids <- as.mids(dat)
  4. Bây giờ bạn có thể thực hiện ANOVA:

    fit <- mi.anova(mi.res=dat.mids, formula="reading~gender*treatment", type=3)
    summary(fit)

Cập nhật 2 Đây là phản hồi cho nhận xét thứ hai của bạn:

Những gì bạn mô tả đây là một vấn đề liên quan đến nhập dữ liệu / xuất khẩu giữa SPSS và R. Bạn có thể thử để nhập khẩu các .savtập tin trực tiếp vào R và có một loạt các gói chuyên dụng cho rằng: foreign, rio, gdata, Hmisc, vv Tôi thích csv chiều , nhưng đó là vấn đề của hương vị và / hoặc phụ thuộc vào bản chất vấn đề của bạn. Có lẽ bạn cũng nên kiểm tra một số hướng dẫn trên youtube hoặc các nguồn khác trên internet.

library(foreign)
dat <- read.spss(file='path-to-sav', use.value.labels=F, to.data.frame=T)

Cập nhật 3 Đây là phản hồi cho nhận xét đầu tiên của bạn:

Có, bạn có thể thực hiện phân tích của mình trong SPSS và gộp các giá trị F vào miceadds(xin lưu ý ví dụ này được lấy từ miceadds::micombine.Ftrang trợ giúp):

library(miceadds)
Fvalues <- c(6.76 , 4.54 , 4.23 , 5.45 , 4.78, 6.76 , 4.54 , 4.23 , 5.45 , 4.78, 
             6.76 , 4.54 , 4.23 , 5.45 , 4.78, 6.76 , 4.54 , 4.23 , 5.45 , 4.78 )
micombine(Fvalues, df1=4)

Cảm ơn bạn đã gợi ý. Trên thực tế tôi đã thử miceadds nhưng một vấn đề tôi gặp phải là gộp giá trị F cho tất cả 20 bộ dữ liệu được liệt kê và không chỉ 5 cái mà chuột được lập trình để đọc theo mặc định (tôi tin). Tôi đã thử nhập tất cả 20 giá trị f tôi nhận được từ đầu ra SPSS và sử dụng chuột để gộp các ước tính này. Phương pháp này có được chấp nhận không (ví dụ như việc cắt cụt trong SPSS, gộp các ước tính này ở chuột thêm)? Nếu có một cách mà tôi có thể có tất cả 20 lần đọc trong MICE, tôi sẽ đánh giá cao nó. Cảm ơn một lần nữa!
dùng81715

Tôi đã cập nhật câu trả lời của mình với một ví dụ hoàn chỉnh từ spss đến miceadds.
Thomas

Cám ơn bạn một lần nữa. Tôi sẽ thử chạy nó và hy vọng sẽ theo dõi kết quả!
dùng81715

Nhân tiện: chuột không bị hạn chế trong bất kỳ số lần cắt cụt nào. Tôi thường sử dụng chuột với m> 20 lần cắt. Lấy các ước tính ra khỏi SPSS và gộp chúng trong chuột là khó khăn và tẻ nhạt, bởi vì chuột mặc định giả định rằng tất cả các bước được thực hiện trong phạm vi gói. Nếu câu trả lời của tôi đã giúp bạn, xin vui lòng gắn thẻ là chính xác hoặc upvote!
Thomas

IV1=factor(dat$<-.data.frame*tmp*

7

Bạn đã viết chính xác công cụ ước tính gộp lại:

U¯=1mi=1mUi

UiiUiUise(Ui)

Các quy tắc của Rubin sử dụng luật tổng phương sai để ghi lại phương sai dưới dạng tổng của phương sai giữa và trong phạm vi điều khiển:

var(U¯)=E[var(U¯|Ui)]+var(E[U¯|Ui])

E[var(U¯|Ui)=1mi=1mViViivar(E[U¯|Ui])=M+1M1i=1m(UiU¯)2

Dù sao, vì số lần cắt ngang được đề xuất là nhỏ (Rubin gợi ý là ít nhất là 5), nên thường có thể tính toán số này bằng cách khớp tay mỗi phân tích. Một ví dụ bằng tay được liệt kê dưới đây:

require(mice)
set.seed(123)
nhimp <- mice(nhanes)
sapply(1:5, function(i) {
  fit <- lm(chl ~ bmi, data=complete(nhimp, i))
  print(c('coef'=coef(fit)[2], 'var'=vcov(fit)[2, 2]))
})

Cung cấp đầu ra sau:

coef.bmi      var 
2.123417 4.542842 
3.295818 3.801829 
2.866338 3.034773 
1.994418 4.124130 
3.153911 3.531536

Vì vậy, phương sai trong phạm vi là trung bình của phương sai ước tính điểm cụ thể của mức độ cụ thể: 3,8 (trung bình của cột thứ hai). Phương sai giữa là 0,35 phương sai của cột đầu tiên). Sử dụng hiệu chỉnh DF, chúng ta có phương sai 4.23. Điều này đồng ý với poollệnh được đưa ra trong micegói.

> fit <- with(data=nhimp,exp=lm(chl~bmi))
> summary(pool(fit))
                  est        se        t       df   Pr(>|t|)     lo 95      hi 95 nmis       fmi     lambda
(Intercept) 119.03466 54.716451 2.175482 19.12944 0.04233303  4.564233 233.505080   NA 0.1580941 0.07444487
bmi           2.68678  2.057294 1.305978 18.21792 0.20781073 -1.631731   7.005291    9 0.1853028 0.10051760

trong đó cho thấy SE = 2.057 cho hệ số mô hình, (Phương sai = SE ** 2 = 4.23).

Tôi không thấy việc tăng số lượng bộ dữ liệu bị tranh chấp sẽ tạo ra bất kỳ vấn đề cụ thể nào. Nếu bạn không thể cung cấp một ví dụ về lỗi, tôi không biết làm thế nào để hữu ích hơn. Nhưng kết hợp bằng tay là chắc chắn để phù hợp với một loạt các chiến lược mô hình.

Bài viết này thảo luận về các cách khác mà luật về phương sai tổng thể có thể rút ra các ước tính khác về phương sai của ước tính gộp. Cụ thể, các tác giả chỉ ra (một cách chính xác) rằng giả định cần thiết cho Quy tắc của Rubin không phải là tính quy phạm của các ước tính điểm mà là một thứ gọi là tính đồng nhất. Tính quy tắc của WRT, hầu hết các ước tính điểm đến từ các mô hình hồi quy có sự hội tụ nhanh chóng theo định lý giới hạn trung tâm và bootstrap có thể cho bạn thấy điều này.


bạn có thể giải thích làm thế nào bạn có được 4,23 từ 3,8 (trung bình ước tính phương sai cho mỗi tập dữ liệu được liệt kê) và 0,35 (phương sai của ước tính hệ số cho mỗi trong năm bộ dữ liệu) không? Tôi đang thiếu một bước.
llewmills

1
(1+1/m)(m1)/(m+1)

m+1m1+1mpool(fit)

Tôi không cho rằng bạn biết công thức tính tổng p -value @AdamO?
llewmills

1
@llewmills tại sao bạn lại tính 5 giá trị p? Bạn có một trung bình lớn và một SE lớn, bây giờ kết hợp chúng và tính một giá trị p cho phân tích nhân rộng.
AdamO
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.