【发布时间】:2021-10-17 14:35:41
【问题描述】:
在 R 中工作,我正在尝试使用 nls() 将一些数据拟合到以下模型:
y ~ c - a * exp(-b * x)
我的数据:
x <- c(8, 8, 10, 10, 10, 10, 12, 12, 12, 12, 14, 14, 14, 16, 16, 16, 18, 18, 20, 20, 20, 22, 22, 22, 24, 24, 24, 26, 26, 26, 28, 28, 30, 30, 30, 32, 32, 34, 36, 36, 38, 38, 40, 42)
y <- c(0.49, 0.49, 0.48, 0.47, 0.48, 0.47, 0.46, 0.46, 0.45, 0.43, 0.45, 0.43, 0.43, 0.44, 0.43, 0.43, 0.46, 0.45, 0.42, 0.42, 0.43, 0.41, 0.41, 0.40, 0.42, 0.40, 0.40, 0.41, 0.40, 0.41, 0.41, 0.40, 0.40, 0.40, 0.38, 0.41, 0.40, 0.40, 0.41, 0.38, 0.40, 0.40, 0.39, 0.39)
data <- data.frame(x, y)
检查数据是否符合模型的形式:
我正在使用的书说系数估计应该是:c=0.3896, a=-0.2194, b=0.992。
我尝试使用给定值,基于此线程 2,返回奇异梯度错误:
m <- nls(y ~ I(c-a*exp(-b*x)), data=data, start=list(a=-.2194, b=1, c=0.3), trace=T)
当我尝试拟合 y ~ a * exp(-b * x) 和 y ~ exp(-b * x) 时,我得到了可接受的值,但是当我添加“c”项时,我得到了奇异梯度错误。我也尝试过使用 nlsLM,它有同样的问题,所以我认为这与我在拦截术语中添加的方式有关。感谢您的任何建议,谢谢。
【问题讨论】:
标签: r regression non-linear-regression nls