Làm cách nào để tăng tốc tính toán các hiệu ứng cố định trong GLMM?


9

Tôi đang thực hiện một nghiên cứu mô phỏng đòi hỏi các ước tính bootstrapping thu được từ mô hình hỗn hợp tuyến tính tổng quát (thực ra, sản phẩm của hai ước tính cho các hiệu ứng cố định, một từ GLMM và một từ LMM). Để làm tốt nghiên cứu sẽ cần khoảng 1000 mô phỏng với 1000 hoặc 1500 lần sao chép bootstrap mỗi lần. Điều này mất một lượng thời gian đáng kể trên máy tính của tôi (nhiều ngày).

How can I speed up the computation of these fixed effects?

Cụ thể hơn, tôi có các đối tượng được đo liên tục theo ba cách, tạo ra các biến X, M và Y, trong đó X và M liên tục và Y là nhị phân. Chúng tôi có hai phương trình hồi quy trong đó Y là tiềm ẩn biến tiềm ẩn liên tục cho và các lỗi không IID. Thống kê chúng tôi muốn bootstrap là . Do đó, mỗi bản sao bootstrap yêu cầu lắp LMM và GLMM. Mã R của tôi là (sử dụng lme4)

M= =α0+α1X+ε1
* Y alpha 1 β 2
Y*= =β0+β1X+β2M+ε2
*Y
α1β2
    stat=function(dat){
        a=fixef(lmer(M~X+(X|person),data=dat))["X"]
        b=fixef(glmer(Y~X+M+(X+M|person),data=dat,family="binomial"))["M"]
        return(a*b)
    }

Tôi nhận ra rằng tôi nhận được cùng một ước tính cho nếu tôi chỉ điều chỉnh nó như một mô hình tuyến tính, để tiết kiệm thời gian, nhưng thủ thuật tương tự không hoạt động đối với .β 2α1β2

Tôi chỉ cần mua một máy tính nhanh hơn? :)


1
@BR cái cổ chai gì đây? Về cơ bản những gì mất thời gian trong Rprof.
suncoolsu

1
Một cách là chỉ cần bỏ qua phần "hỗn hợp" của GLMM. Chỉ cần phù hợp với một GLM thông thường, các ước tính sẽ không thay đổi nhiều, nhưng các lỗi tiêu chuẩn của chúng có thể sẽ
xảy ra

@probabilityislogic. Ngoài nhận xét của bạn, tôi cũng nghĩ, việc câu trả lời có khác nhau hay không phụ thuộc vào quy mô nhóm và hành vi cá nhân trong nhóm. Như Gelman và Hill nói: kết quả mô hình hiệu ứng hỗn hợp sẽ là giữa gộp và không gộp. (Obv. Đây là cho các mô hình phân cấp Bayes, nhưng các mô hình hỗn hợp là một cách cổ điển để làm như vậy.)
suncoolsu

@probabilityislogic: Điều đó hiệu quả với LMM, nhưng dường như thất bại đối với GLMM (có nghĩa là tôi đã chạy các mô hình có và không có M thêm trên cùng một dữ liệu và kết quả có kết quả khác nhau đáng kể). Trừ khi, tất nhiên, có một lỗi trong việc thực hiện glmer.
BR

@suncoolsu: nút cổ chai là ước tính của GLMM, có thể vài giây (đặc biệt là với một số hiệu ứng ngẫu nhiên). Nhưng làm điều đó 1000 * 1000 lần, và đó là 280 giờ tính toán. Lắp GLM mất khoảng 1/100 thời gian.
BR

Câu trả lời:


4

Nó sẽ giúp xác định các giá trị bắt đầu, mặc dù thật khó để biết bao nhiêu. Khi bạn đang thực hiện mô phỏng và bootstrapping, bạn nên biết các giá trị 'thật' hoặc các ước tính chưa được khởi động hoặc cả hai. Hãy thử sử dụng những người trong start =tùy chọn glmer.

Bạn cũng có thể xem xét xem liệu dung sai cho việc khai báo sự hội tụ có chặt chẽ hơn mức bạn cần hay không. Tôi không rõ làm thế nào để thay đổi chúng từ lme4tài liệu mặc dù.


4

Hai khả năng khác quá cân nhắc, trước khi mua một máy tính mới.

  1. Tính toán song song - bootstrapping dễ dàng chạy song song. Nếu máy tính của bạn là hợp lý mới, bạn có thể có bốn lõi. Hãy xem thư viện đa lõi trong R.
  2. Điện toán đám mây cũng là một khả năng và giá rẻ hợp lý. Tôi có các đồng nghiệp đã sử dụng đám mây amazon để chạy các tập lệnh R. Họ thấy rằng nó khá hiệu quả.

1
Cảm ơn câu trả lời. Bằng cách nào đó, tôi đã bỏ qua thực tế là tôi có hai lõi (máy tính của tôi không quá mới). Tôi đã nhìn vào đa lõi từ lâu rồi.
BR

2

Nó có thể là một máy tính nhanh hơn. Nhưng đây là một mẹo có thể làm việc.

Tạo một simultation của , nhưng chỉ có điều kiện về Y , sau đó chỉ cần làm OLS hay LMM trên mô phỏng Y * giá trị.Y*YY*

Giả sử chức năng liên kết của bạn là . điều này cho biết cách bạn nhận được từ xác suất Y = 1 đến giá trị Y và rất có thể là hàm logistic g ( z ) = l o g ( zg(.)Y= =1Y*.g(z)= =tôiog(z1-z)

Vì vậy, nếu bạn giả sử phân phối lấy mẫu bernouli cho , và sau đó sử dụng jeffreys trước xác suất, bạn sẽ nhận được một phiên bản beta cho p B e t a ( Y o b s + 1YY~BernobạntôitôiTôi(p). Mô phỏng từ điều này sẽ giống như ánh sáng, và nếu không, thì bạn cần một máy tính nhanh hơn. Hơn nữa, các mẫu là độc lập, do đó không cần kiểm tra bất kỳ chẩn đoán "hội tụ" nào như trong MCMC và bạn có thể không cần nhiều mẫu - 100 có thể hoạt động tốt cho trường hợp của bạn. Nếu bạn có nhị thứcY's, sau đó chỉ cần thay thế1trong sau trên vớini, số các phép thử của nhị thức cho mỗiYi.p~Betmột(YobS+12,1-YobS+12)Y'S1nTôiYTôi

pSTôimYSTôim= =g(pSTôim)YSTôimN×SNS

gmtôier()tôimer()Ytôimer()b

một= =Giáo dục
b= =0
do S= =1,Giáo dục,S
beSt= =tôimer(YSGiáo dục)
b= =b+1S(beSt-b)
end
retbạnrn(một*b)

Hãy cho tôi biết nếu tôi cần giải thích bất cứ điều gì rõ ràng hơn một chút


Cảm ơn câu trả lời, tôi sẽ mất một chút để tiêu hóa nó (và tôi đã có kế hoạch cho tối thứ bảy của mình). Nó đủ khác biệt đến mức tôi không rõ nếu nó đưa ra câu trả lời giống như phương pháp GLMM, nhưng tôi cần suy nghĩ về nó nhiều hơn.
BR
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.