-1
ggplot (Zombie, aes(x=Mean_Temp, y=Percent_Infected)) +
   stat_smooth(method="lm", aes (color="Linear")) + 
   stat_smooth(method="loess", aes(color="Loess")) +  
   stat_smooth(method = "nls", formula = y ~ a * log(x) +b,
       aes(color = "logarithmic"),se=F,start = list(a=1,b=1)) + 
   geom_point()
Ben Bolker
  • 211,554
  • 25
  • 370
  • 453
  • 1
    What is your question? – markus Nov 22 '20 at 19:57
  • When I run the code the logarithmic line won't show up. And the error says:No starting values specified for some parameters. Initializing ‘a’, ‘b’ to '1.'. Consider specifying 'start' or using a selfStart model – Difei Jiang Nov 22 '20 at 19:58
  • 2
    Consider that nobody knows what `Zombie` is but you. Please read [How to make a great R reproducible example](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) – markus Nov 22 '20 at 20:00

1 Answers1

3

Shortcut: you probably don't need nls(), since y~a*log(x)+b is actually a linear model. Try method="lm", formula=y~log(x) ...

Guessing here since you haven't shown us a data set, but try method.args= list(start = list(a=1,b=1)). ggplot only knows about a small subset of the possible arguments to a fitting function like nls or lm, everything that's model-specific (like start) needs to be passed through model.args()

Also, try the nls() fit outside of ggplot first to make sure that your starting values work OK/you get sensible results.

Ben Bolker
  • 211,554
  • 25
  • 370
  • 453