代码之家  ›  专栏  ›  技术社区  ›  Wok

如何在GLM拟合中计算截距?

  •  2
  • Wok  · 技术社区  · 14 年前

    我一直在看报纸 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

    据我所知,函数中出现的布尔截距 glm.fit 和我指的截距不一样。同样的道理 抵消 .

    关于 glm glm.fit公司 here .

    1 回复  |  直到 5 年前
        1
  •  6
  •   Dirk is no longer here    14 年前

    你可能找错地方了。通常情况下, 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() 以及其他模型装配工。

    为了 glm() ,这是不同的,只是 model.frame() 叫做哪个 没有 添加截距列。为什么会这样,这与 广义

    推荐文章