有没有办法在glm函数中获得优化算法的每个步骤的系数?

时间:2015-10-24 17:09:39

标签: r glm

当在R中执行logit回归时,可以在优化算法与model函数收敛(或不收敛)后获得系数:

coefficients()

有没有办法获得优化算法每个步骤的系数来跟踪其步骤?

1 个答案:

答案 0 :(得分:7)

显示值的control=参数会导致打印偏差,trace语句将导致打印系数值:

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))

输出将如下所示:

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

删除跟踪使用:

untrace(glm.fit)

请注意,在trace调用中,coefoldglm.fit源代码内部使用的变量的名称,使用的数字是指源代码中的语句编号,因此如果glm.fit来源发生变化,则可能需要更改。我正在使用“R版本3.2.2 Patched(2015-10-19 r69550)”。