四参数多项式的平滑曲线

Smooth curve of a four parameter polynomial

我正在使用此公式处理 nls 模型 (b1 * ((b2 * x)^b4)) / (1 + ((b2 * x)^b4))^(b3 / b4)

我使用带有随机算法的 nls2 包来查找初始值。这是我的公式和曲线函数的代码:

eqn <- function(x){(b1 * ((b2 * x)^b4)) / (1 + ((b2 * x)^b4))^(b3 / b4)}


curve(eqn, data$x, data$y, col = "green", n = 6)

我不知道,我是否正确使用 n = ""。但是,我使用 n = 6 作为方程的长度,因为我的数据在 x 和 y 变量上有 6 个值。

但是,当我尝试为模型制作曲线时,它以错误告终:object 'b1' not found.

如何避免这个错误?我通过在 nls2.

结构之外设置我使用 nls2 获得的变量的估计值来避免这个错误

例如:

b1 = 1
b2 = 5
b3 = 0.7
b4 = 9.5

** 另一方面,如何在不出现错误的情况下为方程设置 curve() 内的变量值:object 'b1' not found.,我应该使用 start = list()

curve(eqn, data$x, data$y, col = "green", n = 6, start = list (b1 = 1, b2 = 5, b3 = 0.7, b = 9.5))

我找到了有关为多项式方程绘制曲线的各种示例,但这些示例已经为方程的变量定义了值。有没有办法使用从 nls2 计算的估计值来设置变量?

您需要定义方程式以接受系数 b1 到 b4 作为输入,如下所示:

eqn <- function(x, b1, b2, b3, b4){
         (b1 * ((b2 * x)^b4)) / (1 + ((b2 * x)^b4))^(b3 / b4)
       }

像这样将系数传递给调用函数:

curve(eqn(x, b1 = 1, b2 = 5, b3 = 0.7, b4 = 9.5), from=0, to=2, col = "green", n = 60)

您需要定义 x 的起始值和终止值。另外 select "n" 的值对于平滑曲线来说足够大,n 为 6 时不会平滑。