R:使用nlmrt寻找新x值的解决方案

R:使用nlmrt寻找新x值的解决方案,r,predict,nonlinear-functions,R,Predict,Nonlinear Functions,你好 我已经试着弄明白了,但我真的弄不明白!!我将在R中提供我的数据示例: x <- c(36,71,106,142,175,210,246,288,357) y <- c(19.6,20.9,19.8,21.2,17.6,23.6,20.4,18.9,17.2) table <- data.frame(x,y) library(nlmrt) curve <- "y~ a + b*exp(-0.01*x) + (c*x)" ones <- list(a=1, b=

你好

我已经试着弄明白了,但我真的弄不明白!!我将在R中提供我的数据示例:

x <- c(36,71,106,142,175,210,246,288,357)
y <- c(19.6,20.9,19.8,21.2,17.6,23.6,20.4,18.9,17.2)
table <- data.frame(x,y)

library(nlmrt)
curve <- "y~ a + b*exp(-0.01*x) + (c*x)"
ones <- list(a=1, b=1, c=1)
但是我如何找到新x值的y预测呢?例如:

new_x <- c(10, 30, 50, 70)
它只提供与以下相同的输出:

predict(solve)

我真的希望有人能帮忙!我知道如果我使用参数a、b和c的“solve”值,并用所需的x值将它们替换到曲线公式中,我将能够实现这一点,但我想知道是否有更简单的选项。此外,无需先绘制数据。

Predict要求新数据为
data.frame
,列名称与模型中使用的变量名称匹配(无论模型中有一个或多个变量)。你所需要做的就是使用它

predict(solve, data.frame(x=new_x))
# [1] 18.30066 19.21600 19.88409 20.34973

这将给你一个关于这4个值的预测。不幸的是,指定新数据时的任何错误都会导致返回原始模型的拟合值。错误消息可能会更有用,但很好。

您必须在
predict
中使用与原始模型中完全相同的变量名。这是一个臭名昭著的“抓住你了”。我认为(坏记忆这是
predict(solve,x=newx)
是语法。@CarlWitthoft感谢您的评论。这仍然不起作用,我完全按照您解释的那样尝试了……我不知道预测是否是正确的选项?是的-请参阅@MrFlick的答案以获取完整、正确的语法非常感谢您!!我一直在等待答复时手动预测新x的y值,这很有效非常好!
predict(solve, new_x)
predict(solve, 10)
predict(solve)
predict(solve, data.frame(x=new_x))
# [1] 18.30066 19.21600 19.88409 20.34973