【问题标题】:lm()$assign: what is it?lm()$assign: 它是什么?
【发布时间】:2016-07-13 13:19:58
【问题描述】:

什么是线性模型拟合的assign 属性?它应该以某种方式提供响应项的位置,但实际上它似乎枚举了模型中的所有系数。据我了解,assign 是 S 的遗留物,glm() 不支持它。我需要提取glm 的等效信息,但我不明白该实现对lm 做了什么,而且似乎也找不到源代码。 lm.fit 的帮助文件毫无帮助地说:

非空拟合将包含与线性拟合相关的组件 assigneffects 和(除非未要求)qr,供提取函数使用,例如 summaryeffects

【问题讨论】:

    标签: r glm lm s


    【解决方案1】:

    您可以在 help("model.matrix") 中找到它,它会创建这些值:

    有一个属性“assign”,一个整数向量,带有一个条目 矩阵中的每一列给出公式中的项 上升到柱子。值 0 对应于截距(如果有),并且 按照 term.labels 给出的顺序对术语进行正值 对象对应的terms结构的属性。

    因此,它将设计矩阵映射到公式。

    【讨论】:

    • 荒谬的是,?lm根本没有提到这点...不得不花 20 分钟追踪 assign 的来源。
    【解决方案2】:

    $assign 中的数字代表相应的预测变量。如果您的预测器是具有 3 个级别的分类,您将在 $assign 调用中看到相应的数字 (3-1) 次。示例:

    data(mpg, package = "ggplot2")
    m = lm(cty ~ hwy + class,data = mpg)
    m$assign 
      [1] 0 1 2 2 2 2 2 2
    # Note how there is six 2's to represent the indicator variables
    # for the various 'class' levels. (class has 7 levels)
    

    您将看到定量预测变量只有一个值(上例中的hwy),因为它们在设计公式中由一项表示。

    【讨论】:

    • 计算这个字段的代码在哪里?暂时没找到。
    • 啊,我现在看到了这个问题。奇怪的是$assign 不在lmglm 的源代码中。我还没有找到原因,但我会继续寻找。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    • 2019-08-21
    • 1970-01-01
    • 2014-04-17
    • 1970-01-01
    • 2017-09-03
    相关资源
    最近更新 更多