lm()$assign: 这是什么?

lm()$assign: what is it?

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

non-null fits will have components assign, effects and (unless not requested) qr relating to the linear fit, for use by extractor functions such as summary and effects

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

There is an attribute "assign", an integer vector with an entry for each column in the matrix giving the term in the formula which gave rise to the column. Value 0 corresponds to the intercept (if any), and positive values to terms in the order given by the term.labels attribute of the terms structure corresponding to object.

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

$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),因为它们在设计公式中由一项表示。