我正在尝试在一组 3 个数据点上拟合基本幂趋势线,就像您在 Excel 中模拟 y = Ax^b 函数一样。我有一个非常简单的数据集加载到 LCurve.data 中,如下所示:
MDPT = {4, 10.9, 51.6}
曲线下面积 = {287069.4, 272986.0, 172426.1}
fm0 <- nls(log(LCurve.data$AUC) ~ log(a) + b * log(LCurve.data$MDPT), data = LCurve.data, start = list (a = 1, b =1))
ggplot(LCurve.data, aes(x=MDPT, y = AUC)) + geom_line() +
geom_point() +
stat_smooth(method = 'nls', formula = y ~ a * x ^ b, method.args = list(
start=c(a = coef(fm0)[1], b = coef (fm0)[2])))
由于某种原因,此代码会产生以下错误。
警告:计算失败stat_smooth()
:
初始参数估计时的奇异梯度矩阵
fm0 数组的“a”和“b”字段分别具有正确的值,即 coef(fm0)[1] 和 [2]。我通过变量的打印确认了这一点。
我不明白为什么我无法在 stat_smooth 中绘制 NLS 趋势线。有任何想法吗?我已经用谷歌搜索了近两个小时,但一直陷入死胡同。谢谢!