On 2011-03-29 06:57, Walter Anderson wrote:
   Hello,

I need to regress data like the example below.  The data points
represent friction factors derived from observed trip length data.  The
function used to describe this data is a gamma function of the form,
f(t) = a * t^b * e^(c*t)  and I need to regress the data to obtain the
a,b, and c coefficients.  The gamma function can also be expressed in
the log-linear form, ln[f(t)] = ln[a] + b * ln[t] + c*t, which may be
easier to perform a regression on.  I have performed a search for
information on the subject, and have found a few possibly related sites,
I can not figure out how to perform the regression in R.  Any
help/guidance would be appreciated.

Walter

             t                f      ln(f)
    1      1    952893    13
    2      2    951077    13
    3      3    945991    13
    4      4    942358    13
    5      5    939452    13
[... more data snipped ...]

This looks like easy grist for the nls() mill. I would usually
use the log form to get reasonable starting values for the
nls interations:

## assume that your data are in a data.frame DF;
 fm1 <- lm( log(f) ~ log(t) + t, data = DF )
 coef(fm1)
 # (Intercept)      log(t)           t
 # 13.81370501  0.18469223 -0.05955323

 startvec <- c( aa=exp(14), bb=0.2, cc=-.06 )
 fm2 <- nls( f ~ aa * t^bb * exp(cc*t), data=DF, start=startvec )
 #summary(fm2)
 coef(fm2)
 #           aa            bb            cc
 # 9.093841e+05  2.294895e-01 -5.951806e-02

## plot the data
 plot( f ~ t, data=DF )
 lines( fitted(fm2) ~ t, data=DF )

I wouldn't trust the model for small t.

Peter Ehlers

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to