R预测()仅返回nls()模型的拟合值

时间:2018-10-24 21:12:28

标签: r

首先,我想提及一下我只是R语言的初学者。 尝试从nls()生成的模型预测数据时遇到了问题。我将指数衰减函数拟合到我的数据中,一切似乎都很好,例如我得到了不错的回归线。但是,当我在新数据集上使用predict()时,它仅返回拟合值。

我的代码是:

df = data.frame(Time = c(0,5,15,30), Value = c(1, 0.38484677,0.18679383, 0.06732328))

model <- nls(Value~a*exp(-b*Time), start=list(a=1, b=0.15), data = df)

plot(Value~Time, data = df)

lines(df$Time, predict(model))

Generated plot

newtime <- data.frame(Time = seq(1,20, by = 1))

pr = predict(model, newdata = newtime$Time)

pr
[1] 0.979457389 0.450112312 0.095058637 0.009225664

有人可以解释一下,我做错了吗?我知道这里有这个问题的答案,但是没有一个帮助我。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

newdata参数应该是与输入数据名称相同的data.frame。当您使用newdata = newtime$Time时,实际上是传入的newtime$Time不再是data.frame了,因为它已“下降”为向量。您可以像这样传递新时间

pr = predict(model, newdata = newtime)