【问题标题】:Creating a linear model matrix in R without intercept在R中创建一个没有截距的线性模型矩阵
【发布时间】:2020-02-02 21:43:04
【问题描述】:

为线性模型创建设计矩阵给了我一个我不理解的输出。假设我要添加两个分组变量:

model.matrix(~ factor(c(0,0,0,0,1,1)) + factor(c(0,0,1,1,0,0)))

这将创建一个三列设计,其中第一列是截距。但是当我抑制拦截时:

model.matrix(~ 0 + factor(c(0,0,0,0,1,1)) + factor(c(0,0,1,1,0,0)))

现在再次创建了三列,只有第一列和第二列是同一变量的 0 和 1 版本。

为什么会这样?

【问题讨论】:

    标签: r regression


    【解决方案1】:

    当您在model.matrix 中添加一个因素时,它会包含所有级别的假人;当你有一个双水平的因素时,你有两个水平的假人(指标)。

    如果没有截距,第一个因子可以包括它的所有水平,所以它确实如此,但是当有截距时,这将导致完美的多重共线性(一个因子的所有指标的总和是恒定的),并且默认情况下然后省略第一级因子的指示符。

    使用 第二个因素,它不能在任何一种情况下都包含其所有级别,因为截距(当它在模型中时)或第一个因素(当它不是)。

    【讨论】:

    • 谢谢,但我错过了一个重要信息——我了解多重共线性以及为什么它在第一种情况下不会创建额外的级别,但我不清楚“它会创建所有级别”它必须”。如果我没看错的话,这两个模型在数值上是相同的。如果我抑制截距,设计矩阵不应该少一列来制作不同的模型吗?
    • 1.我选择说“可以”而不是“必须”;我认为这往往会给情况带来更正确的印象。 2.你的每一个两水平因素都有两个对应的指标变量,模型矩阵将包含两个如果可能的话..我建议你不会那么困惑如果你首先给你的因子水平添加标签“A”和“B”(或者实际上几乎任何其他标签)来代替“0”和“1”。
    猜你喜欢
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多