NLS Regression in GGPlot2, Plotting y=Ax^b Trendli

2019-08-20 08:06发布

I'm attempting to fit a basic power trendline on a set of 3 data point, as you could do in Excel to mimic the y = Ax^b function. I have a very simple data set loaded into LCurve.data as follows:

MDPT = {4, 10.9, 51.6}

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

For some reason this code produces the following error.

Warning: Computation failed in stat_smooth(): singular gradient matrix at initial parameter estimates

The fm0 array has the correct values in the "a" and "b" fields, or coef(fm0)[1] and [2] respectively. I confirmed that with a print of the variable.

I cannot figure out why I am unable to graph the NLS trendline in stat_smooth though. Any ideas? I've been googling for almost 2 hours now and keep running into dead ends. Thanks!

0条回答
登录 后发表回答