# [R] Fitting arbitrary curve to 1D data with error bars

Erkcan Özcan erkcan at hotmail.com
Thu Nov 14 20:46:17 CET 2013

```Thanks, this was a useful pointer. Since the function I am trying to fit is exponential, I decided to use nls. And I was able to reproduce exactly the results and the plot in the URL I had posted. For future reference, here is the R code I wrote:

require("gplots")
xx <- 1:10
yy <- c(1.56,1.20,1.10,0.74,0.57,0.55,0.31,0.27,0.28,0.11)
dy <- c(0.02,0.02,0.20,0.03,0.03,0.10,0.05,0.02,0.10,0.05)
plotCI(xx,yy,uiw=dy,gap=0)
nlmod <- nls(yy ~ Alpha * exp(Beta * xx), start=list(Alpha=1, Beta=-1))
lines(xx, predict(nlmod), col = "blue")
wnlmod <- nls(yy ~ Alpha * exp(Beta * xx), start=list(Alpha=1, Beta=-1), weights=dy^-2)
lines(xx, predict(wnlmod), col = "red")

Thanks to everybody who responded,

e.

On 14 Nov 2013, at 11:34, Suzen, Mehmet wrote:

> Maybe you are after "weights" option given by 'lm' or 'glm'
>
> See: http://stackoverflow.com/questions/6375650/function-for-weighted-least-squares-estimates
>
> On 14 November 2013 10:01, Erkcan Özcan <erkcan at hotmail.com> wrote:
>> Thanks, but if you have another closer look to my post, you will see that my question has nothing to do with drawing error bars on a plot.
>>
>> What I want is to do a curve fit to a data with error bars.
>>
>> Best,
>> e.
>>
>> On 14 Nov 2013, at 04:21, Suzen, Mehmet wrote:
>>
>>> If you are after adding error bars in a scatter plot; one example is
>>> given below :
>>>
>>> #some example data
>>> set.seed(42)
>>> df <- data.frame(x = rep(1:10,each=5), y = rnorm(50))
>>>
>>> #calculate mean, min and max for each x-value
>>> library(plyr)
>>> df2 <- ddply(df,.(x),function(df)
>>> c(mean=mean(df\$y),min=min(df\$y),max=max(df\$y)))
>>>
>>> #plot error bars
>>> library(Hmisc)
>>> with(df2,errbar(x,mean,max,min))
>>> grid(nx=NA,ny=NULL)
>>>
>>> (From: http://stackoverflow.com/questions/13032777/scatter-plot-with-error-bars)
>>>
>>
>

```