首先,我想提及一下我只是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))
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
有人可以解释一下,我做错了吗?我知道这里有这个问题的答案,但是没有一个帮助我。
提前感谢您的帮助!
答案 0 :(得分:0)
newdata
参数应该是与输入数据名称相同的data.frame。当您使用newdata = newtime$Time
时,实际上是传入的newtime$Time
不再是data.frame了,因为它已“下降”为向量。您可以像这样传递新时间
pr = predict(model, newdata = newtime)