2015-10-24 21 views
8

Khi một thực hiện một hồi quy logit trong R, nó có thể để có được hệ số sau khi các thuật toán tối ưu hóa đã hội tụ (hoặc không) với coefficients() chức năng:Có cách nào để có được hệ số cho mỗi bước của thuật toán tối ưu hóa chức năng GLM?

library(MASS) 
data(menarche) 
glm.out = glm(cbind(Menarche, Total-Menarche) ~ Age, 
       family=binomial(logit), data=menarche) 
coefficients(glm.out) 
## (Intercept)   Age 
## -21.226395 1.631968 

Có cách nào để có được hệ số cho mỗi bước của thuật toán tối ưu hóa để theo dõi các bước của nó?

Trả lời

7

Các control= tranh cãi với giá trị chứng minh gây ra sự lệch lạc để in và báo cáo kết quả trace sẽ gây ra các giá trị hệ số để in:

trace(glm.fit, quote(print(coefold)), at = list(c(22, 4, 8, 4, 19, 3))) 
glm.out = glm(cbind(Menarche, Total-Menarche) ~ Age, 
        family=binomial(logit), data=menarche, 
        control = glm.control(trace = TRUE)) 

Đầu ra sẽ trông như thế này:

Tracing glm.fit(x = structure(c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, .... step 22,4,8,4,19,3 
NULL 
Deviance = 27.23412 Iterations - 1 
Tracing glm.fit(x = structure(c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, .... step 22,4,8,4,19,3 
[1] -20.673652 1.589536 
Deviance = 26.7041 Iterations - 2 
Tracing glm.fit(x = structure(c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, .... step 22,4,8,4,19,3 
[1] -21.206854 1.630468 
Deviance = 26.70345 Iterations - 3 
Tracing glm.fit(x = structure(c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, .... step 22,4,8,4,19,3 
[1] -21.226370 1.631966 
Deviance = 26.70345 Iterations - 4 

Để xóa dấu vết sử dụng:

untrace(glm.fit) 

Lưu ý rằng trong trace cuộc gọi, coefold là tên của một biến sử dụng trong nội glm.fit mã nguồn và số được sử dụng để tham khảo số tuyên bố trong mã nguồn và do đó, hoặc có thể cần phải được thay đổi nếu glm.fit thay đổi nguồn. Tôi đang sử dụng "R phiên bản 3.2.2 Patched (2015/10/19 r69550)".

Các vấn đề liên quan