假设我在R中拟合了一个包含多个预测变量的回归模型,如下面的玩具示例所示:
x.new <- rnorm(5)
y.new <- rnorm(5)
现在我有了新的日期,由x和y值组成,我想预测相应的z值:
x.new
问题:我应该如何最好地预测将拟合模型应用于新数据?
以下是我尝试过的一些不起作用的内容:
尝试1.尝试使用y.new
和> predict(m, data=data.frame(x=x.new, y=y.new))
1 2 3 4 5 6 7
-0.0157090 1.1667958 -1.3797101 0.1185750 0.7786496 1.7666232 -0.6692865
8 9 10 11 12 13 14
1.9720532 0.3514206 1.1677019 0.6441418 -2.3010431 -0.3228424 -0.2181511
15 16 17 18 19 20
-0.8883275 0.4549592 -1.0377040 0.1750522 -2.4542843 1.2250101
作为新数据框的列:
predict
这给了20个值而不是5个,所以不能正确。
尝试2:可能y^2
因为未提供model.frame
值而感到困惑?尝试使用> predict(m, model.frame(~ x.new + y.new + I(y.new^2)))
1 2 3 4 5 6 7
-0.0157090 1.1667958 -1.3797101 0.1185750 0.7786496 1.7666232 -0.6692865
8 9 10 11 12 13 14
1.9720532 0.3514206 1.1677019 0.6441418 -2.3010431 -0.3228424 -0.2181511
15 16 17 18 19 20
-0.8883275 0.4549592 -1.0377040 0.1750522 -2.4542843 1.2250101
Warning message:
'newdata' had 5 rows but variables found have 20 rows
以正确的形式提供数据。
var myPath = document.URL;
if (!myPath.endsWith("secure")) {
myPath = "";
}
同样,这会导致20个值(加上警告),所以不能正确。
答案 0 :(得分:1)
当告诉newdata
要预测的内容时,参数为data
(不是predict
)。
predict(m, newdata = data.frame(x = x.new, y = y.new))