转换 R 中线性模型的变量

transforming variables for a linear model in R

在线性模型的公式定义中转换模型是一个好习惯吗?

例如:

reg1 <- lm(log(Y) ~ X + Z + (W)^2, data = data)

当我在数据中只有 WXYZ 而不是转换后的变量时?当我调用 reg1.

的摘要时,我没有看到 W^2 列出

由于快速搜索没有发现重复项(应该有答案),这里有一个:

lm 中指定回归方程的部分称为 公式。公式以自己的方式使用运算符(如 ^+),因此您不能使用它们在公式中进行算术运算。

为了在公式内进行算术运算,您需要使用 I 函数,正如@jogo 所建议的那样(请参阅 ?I 以了解其在 R 中的描述),如下所示:

reg1 <- lm(log(Y) ~ X + Z + I(W^2), data = data)

这可以防止 R 将运算符解释为 公式运算符,因此它们被解释为 算术运算符

R 以可能不直观的方式解释您的输入的另一个示例是函数 data.frame。如果您尝试从列表中构造一个 data.frame,它会将其强制转换为原子向量:

li = list(x = 1:3, y = 11:13, z = 21:23)
data.frame(a = 5:7, b = li)
#   a b.x b.y b.z
# 1 5   1  11  21
# 2 6   2  12  22
# 3 7   3  13  23

这也可以使用 I 来避免,这将 抑制 将列表作为一个或多个原子向量的这种特殊解释,并改为创建一个列表列:

data.frame(a = 5:7, b = I(li))
#   a          b
# x 5    1, 2, 3
# y 6 11, 12, 13
# z 7 21, 22, 23