我一直在阅读R 用于拟合广义线性模型(GLM) 的代码,因为 R 的源代码是免费提供的。所使用的算法称为迭代重加权最小二乘法(IRLS),这是一种有据可查的算法。对于每次迭代,都会调用一个 Fortran 函数来解决加权最小二乘问题。
从最终用户的角度来看,例如,对于逻辑回归,R 中的调用如下所示:
y <- rbinom(100, 1, 0.5)
x <- rnorm(100)
glm(y~x, family=binomial)$coefficients
如果你不想使用拦截,这些调用中的任何一个都可以:
glm(y~x-1, family=binomial)$coefficients
glm(y~x+0, family=binomial)$coefficients
但是,我无法理解公式,即y~x
or y~x-1
,在代码中是如何有意义的,并且被理解为是否使用截距。我正在寻找一列将绑定到的代码的一部分x
,但似乎没有。
据我所知,出现在被调用函数中的布尔截距glm.fit
与我所指的截距不同。偏移量也是一样的。
关于glm
andglm.fit
的文档在这里。