R GGPlot2中的NLS回归,绘制y=Ax^b趋势线错误

R GGPlot2中的NLS回归,绘制y=Ax^b趋势线错误,r,ggplot2,regression,nls,non-linear-regression,R,Ggplot2,Regression,Nls,Non Linear Regression,我试图在一组3个数据点上拟合一条基本的电源趋势线,就像在Excel中模拟y=Ax^b函数一样。我将一个非常简单的数据集加载到LCurve.data中,如下所示: MDPT={4,10.9,51.6} AUC={287069.4272986.0172426.1} fm0 <- nls(log(LCurve.data$AUC) ~ log(a) + b * log(LCurve.data$MDPT), data = LCurve.data, start = list (a = 1, b =1)

我试图在一组3个数据点上拟合一条基本的电源趋势线,就像在Excel中模拟y=Ax^b函数一样。我将一个非常简单的数据集加载到LCurve.data中,如下所示:

MDPT={4,10.9,51.6}

AUC={287069.4272986.0172426.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]))) 

fm0我没有收到与您相同的消息,但我认为您需要
stat\u smooth()
中的nls模型的
se=FALSE
。我认为起始值应该是一个列表而不是一个向量:
start=list(a=coef(fm0)[1],b=coef(fm0)[2])
。显示了我提到的内容。我添加了se=FALSE标志,这没有什么区别。method.args代码已正确编码,如果确实使用start=list,则代码将中断。我以前引用过这个答案来构建我现有的代码。其他想法?如果我做了这些更改,代码将为我运行(尽管我认为估算的行非常奇怪;它只有三个点)。您使用的是什么版本的ggplot2?我使用的是最新版本,您需要使用method.args而不是start=。。。是的,我只使用了3个点,在我外推到更大的数据集之前,尝试让函数工作。