我一直在看报纸 code 广义线性模型 (GLM),因为R的源代码是免费的。使用的算法称为 迭代加权最小二乘法 (IRLS),这是一个相当有文档记录的算法。对于每次迭代,都会调用Fortran函数来解决加权最小二乘问题。
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 y~x-1 ,在代码中是有意义的,并且被理解为是否使用截获。我在寻找代码的一部分,其中一列将绑定到 x
y~x
y~x-1
x
据我所知,函数中出现的布尔截距 glm.fit 和我指的截距不一样。同样的道理 抵消 .
glm.fit
关于 glm glm.fit公司 here .
glm
glm.fit公司
你可能找错地方了。通常情况下, model.matrix()
model.matrix()
> D <- data.frame(x1=1:4, x2=4:1) > model.matrix(~ x1 + x2, D) (Intercept) x1 x2 1 1 1 4 2 1 2 3 3 1 3 2 4 1 4 1 attr(,"assign") [1] 0 1 2 > model.matrix(~ x1 + x2 -1 , D) x1 x2 1 1 4 2 2 3 3 3 2 4 4 1 attr(,"assign") [1] 1 2 >
它是 它被传给Fortran。对我来说就是这样 lm() 以及其他模型装配工。
lm()
为了 glm() ,这是不同的,只是 model.frame() 叫做哪个 没有 添加截距列。为什么会这样,这与 广义
glm()
model.frame()