转换 R 中线性模型的变量
transforming variables for a linear model in R
在线性模型的公式定义中转换模型是一个好习惯吗?
例如:
reg1 <- lm(log(Y) ~ X + Z + (W)^2, data = data)
当我在数据中只有 W
、X
、Y
、Z
而不是转换后的变量时?当我调用 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
在线性模型的公式定义中转换模型是一个好习惯吗?
例如:
reg1 <- lm(log(Y) ~ X + Z + (W)^2, data = data)
当我在数据中只有 W
、X
、Y
、Z
而不是转换后的变量时?当我调用 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