如何使用线性回归模型对新的 x 值预测 y 值
How to forecast y values using linear regression model on new x values
我有一个多元线性回归模型:
model <- lm(y ~ a + b + c, data = df)
假设 y、a、b 和 c是2000-2017年的季度数据。
Date y a b c
2000Q1 2 1.5 1.3 8.1
2000Q2 2.3 1.8 1.2 7.6
. . . . .
. . . . .
. . . . .
. . . . .
2017Q4 8.7 3.5 5.6 3.2
现在我有了线性模型,我想通过使用 a、 的新数据来预测 y b 和 c 的时间段为 2017-2020,我们称它们为 a2、b2,以及 c2。
Date a2 b2 c2
2017Q4 3.5 5.6 3.2
2018Q1 4.1 6.3 3.0
. . . .
. . . .
. . . .
2020Q4 5.6 7.8 2.2
如何使用我之前的一组 historical/actual 数据(a、b 和 c),并根据 x 的较新值预测 y (a2, b2 ,以及 c2)?
我已经尝试使用 predict() 和 predict.lm() 函数,但是没有任何结果给我想要的结果。我可以手动输入线性模型并创建这些预测,但我确信有一种更有效的方法可以做到这一点。
更新
这是我正在做的一个小例子:
df <- data.frame(y = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
a = c(2, 2.3, 2.6, 2.9, 2.4, 2.6, 3.0, 3.2, 3.9, 3.7),
b = c(9, 8.7, 9.1, 7.8, 8.2, 8, 6.9, 7.8, 9.1, 5.7))
attach(df)
model <- lm(y ~ a + b)
df2 <- data.frame(a2 = c(3.7, 4.0, 5.2, 5.6, 5.8, 6),
b2 = c(5.7, 5.5, 5.3, 5.1, 4.9, 4.7))
predict(model, newdata = df2)
我不断收到带有警告消息的常规模型结果:
1 2 3 4 5 6 7 8
9 10
1.409122 2.807886 3.690647 5.826560 3.569001 4.501510 6.882534
7.004180 8.793667 10.514892
Warning message:
'newdata' had 6 rows but variables found have 10 rows
已更新以匹配添加的示例
新数据中的名称必须与旧数据/线性模型中的名称匹配。
使用更新后的示例,使 df2 中的名称在 运行 预测之前与 df 中的名称匹配。
names(df2) = c("a","b")
predict(model, newdata = df2)
我有一个多元线性回归模型:
model <- lm(y ~ a + b + c, data = df)
假设 y、a、b 和 c是2000-2017年的季度数据。
Date y a b c
2000Q1 2 1.5 1.3 8.1
2000Q2 2.3 1.8 1.2 7.6
. . . . .
. . . . .
. . . . .
. . . . .
2017Q4 8.7 3.5 5.6 3.2
现在我有了线性模型,我想通过使用 a、 的新数据来预测 y b 和 c 的时间段为 2017-2020,我们称它们为 a2、b2,以及 c2。
Date a2 b2 c2
2017Q4 3.5 5.6 3.2
2018Q1 4.1 6.3 3.0
. . . .
. . . .
. . . .
2020Q4 5.6 7.8 2.2
如何使用我之前的一组 historical/actual 数据(a、b 和 c),并根据 x 的较新值预测 y (a2, b2 ,以及 c2)?
我已经尝试使用 predict() 和 predict.lm() 函数,但是没有任何结果给我想要的结果。我可以手动输入线性模型并创建这些预测,但我确信有一种更有效的方法可以做到这一点。
更新这是我正在做的一个小例子:
df <- data.frame(y = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
a = c(2, 2.3, 2.6, 2.9, 2.4, 2.6, 3.0, 3.2, 3.9, 3.7),
b = c(9, 8.7, 9.1, 7.8, 8.2, 8, 6.9, 7.8, 9.1, 5.7))
attach(df)
model <- lm(y ~ a + b)
df2 <- data.frame(a2 = c(3.7, 4.0, 5.2, 5.6, 5.8, 6),
b2 = c(5.7, 5.5, 5.3, 5.1, 4.9, 4.7))
predict(model, newdata = df2)
我不断收到带有警告消息的常规模型结果:
1 2 3 4 5 6 7 8
9 10
1.409122 2.807886 3.690647 5.826560 3.569001 4.501510 6.882534
7.004180 8.793667 10.514892
Warning message:
'newdata' had 6 rows but variables found have 10 rows
已更新以匹配添加的示例
新数据中的名称必须与旧数据/线性模型中的名称匹配。
使用更新后的示例,使 df2 中的名称在 运行 预测之前与 df 中的名称匹配。
names(df2) = c("a","b")
predict(model, newdata = df2)