Tôi đang sử dụng lmer()
trong gói lme4
để ước tính các mô hình hiệu ứng hỗn hợp. Điều này hoạt động tốt, nhưng bây giờ tôi muốn chạy quá trình ước lượng cho một số lần lặp cố định, sau đó tiếp tục quá trình bằng cách xác định các giá trị bắt đầu, như được tính toán bởi quá trình ước tính cuối cùng.Khởi động lại ước tính mô hình hiệu ứng hỗn hợp với các giá trị ước tính trước đây
Theo sự giúp đỡ cho ?lmer
này là có thể, bằng cách thiết lập các đối số:
start
- đó là những giá trị khởi đầu mới, và theo sự giúp đỡ ai có thể trích xuất các giá trị trong kheST
từ một trang bị mô hình và sử dụng các, tức là sử dụng[email protected]
maxiter
- cung cấp như một đối số được ghi tên vàocontrol
vì vậy, ví dụ, giả sử tôi muốn để phù hợp với một lme
sử dụng dữ liệu iris
, người ta có thể thử điều này:
library(lme4)
# Fit model with limited number of iterations
frm <- "Sepal.Length ~ Sepal.Width | Species"
x <- lmer(frm, data=iris,
verbose=TRUE, control=list(maxIter=1), model=FALSE)
# Capture starting values for next set of iterations
start <- list([email protected])
# Update model
twoStep <- lmer(frm, data=iris,
verbose=TRUE, control=list(maxIter=100), model=TRUE,
start=start)
này hoạt động. Hãy xem đầu ra, trong đó cột đầu tiên là REML, nghĩa là khả năng tối đa của hiệu ứng ngẫu nhiên. Chú ý đặc biệt là các REML trong mô hình 2 bắt đầu nơi mô hình 1 chấm dứt:
> x <- lmer(frm, data=iris,
+ verbose=TRUE, control=list(maxIter=1), model=FALSE)
0: 264.60572: 0.230940 0.0747853 0.00000
1: 204.22878: 0.518239 1.01025 0.205835
1: 204.22878: 0.518239 1.01025 0.205835
> # Capture starting values for next set of iterations
> start <- list([email protected])
> # Update model
> twoStep <- lmer(frm, data=iris,
+ verbose=TRUE, control=list(maxIter=100), model=TRUE,
+ start=start)
0: 204.22878: 0.518239 1.01025 0.205835
1: 201.51667: 0.610272 2.00277 0.286049
2: 201.46706: 0.849203 1.94906 0.358809
3: 201.44614: 0.932371 1.88581 0.482423
4: 201.39421: 1.00909 1.71078 0.871824
5: 201.36543: 1.00643 1.60453 1.01663
6: 201.31066: 1.00208 1.35520 1.27524
7: 201.28458: 1.08227 1.22335 1.35147
8: 201.24330: 1.50333 0.679759 1.31698
9: 201.11881: 1.95760 0.329767 0.936047
Tuy nhiên, khi tôi có một giá trị khác nhau của maxIters
này không còn hoạt động:
x <- lmer(frm, data=iris,
verbose=TRUE, control=list(maxIter=3), model=FALSE)
start <- list([email protected])
twoStep <- lmer(frm, data=iris,
verbose=TRUE, control=list(maxIter=100), model=TRUE,
start=start)
thông báo rằng khởi động lại giá trị REML tại 264, tức là phần đầu:
> x <- lmer(frm, data=iris,
+ verbose=TRUE, control=list(maxIter=3), model=FALSE)
0: 264.60572: 0.230940 0.0747853 0.00000
1: 204.22878: 0.518238 1.01025 0.205835
2: 201.94075: 0.00000 1.51757 -1.18259
3: 201.71473: 0.00000 1.69036 -1.89803
3: 201.71473: 0.00000 1.69036 -1.89803
> # Capture starting values for next set of iterations
> start <- list([email protected])
> # Update model
> twoStep <- lmer(frm, data=iris,
+ verbose=TRUE, control=list(maxIter=100), model=TRUE,
+ start=start)
0: 264.60572: 0.230940 0.0747853 0.00000
1: 204.22878: 0.518238 1.01025 0.205835
2: 201.94075: 0.00000 1.51757 -1.18259
3: 201.71473: 0.00000 1.69036 -1.89803
4: 201.64641: 0.00000 1.82159 -2.44144
5: 201.63698: 0.00000 1.88282 -2.69497
6: 201.63649: 0.00000 1.89924 -2.76298
7: 201.63649: 4.22291e-08 1.90086 -2.76969
8: 201.63649: 4.22291e-08 1.90086 -2.76969
Câu hỏi: Làm thế nào tôi có thể khởi động lại đáng tin cậy lmer()
với các giá trị bắt đầu thu được từ một mô hình được trang bị trước đó?
thông tin Session:
packageVersion("lme4")
[1] ‘0.999999.2’
Điều này rất có thể là lỗi; chức năng 'start' của' lme4' chưa được thực hiện rất kỹ lưỡng, vì vậy tôi chắc chắn có rất nhiều vấn đề như thế này. Làm thế nào mạnh là nhu cầu của bạn để sử dụng ổn định chứ không phải là phiên bản phát triển? Tôi sẽ xem xét điều này, nhưng chúng tôi hy vọng sẽ làm hầu hết việc gỡ lỗi của chúng tôi trên phiên bản ổn định ... –
@BenBolker Tôi có thể sử dụng mã thử nghiệm hoặc dev, vì tôi chỉ đang chạy một số thử nghiệm vào lúc này. Tôi có thể giúp, nếu bạn cho tôi biết nơi tìm nhánh dev. – Andrie
trên github: 'library (devtools); install_github ("lme4", user = "lme4") '. Nó dễ dàng hơn trong phiên bản này để trích xuất các chức năng deviance và sử dụng nó trong tối ưu hóa của riêng bạn, mà bạn có thể thích nếu bạn muốn kiểm soát nhiều hơn nữa. Ngoài ra, hãy thử thử nghiệm 'bắt đầu' và cho tôi biết tại https://github.com/lme4/lme4/issues nếu bạn tìm thấy một cái gì đó không hoạt động ... –