Skip to content

How to create a 'fit' plot

3 messages · R_xprt_wannabe, (Ted Harding), Adaikalavan Ramasamy

#
Dear List,

As someone who is in the process of trying to migrate
from Excel, I'd appreciate any help on this question:

I have a data set and want to fit, say, three
distributions to it.  I would like to create a plot
that shows my data points against all three fitted
curves (estimated d.f.).  Basically, I lookint to
creat a plot that looks like the one presented in the
attached paper (Figure 5, page 12):

http://www.math.ethz.ch/~mcneil/ftp/astin.pdf


Could you please show me, or point me to example code
showing, how that can be done?  

Thanks,
#
On 18-Mar-05 R_xprt_wannabe wrote:
You can do something on the lines of:

  plot(x,empDF,pch=".") ## for the empirical plot of x

  lines(x0,GPD,lty="solid") ## for the GPD curve

  lines(x0,Pareto,lty="dashed") ## for the Pareto curve

  lines(x0,LogNormal,lty="dotdash") ## for the LogNormal curve

where x0 is a vector of (fairly finely spaced) x-values,
and LogNormal, Pareto and GPD are the corresponding y-values
(at each x0) for the corresponding curves.

Or the latter could be functions which computed the y-values,
given the x-values, in which case you might use

  lines(x0,GPD(x0),lty="solid") ## for the GPD curve

etc.

Since you're apparently beginning with R, you've encountered
one of the more deeply buried (yet commonly required) aspects
of R, namely how the details of a plot are set up.

You can consult the help on 'plot' and 'lines' with

  ?plot
  ?lines

but it takes a bit of poking around to find that you need to
look up

  ?par

to find the details of things like 'lty' as used above.

You may also need to make sure that you get the axes spanning
over good ranges by making your first command

  plot(x,estDF,pch=".",xlim=c(a,b),ylim=c(c,d))

where a and b are the lower and upper limits for x, and c and d
are those for y, since otherwise 'plot' will choose these limits
in its own way depending on the ranges of values in x and in empDF,
which may not be suitable for proper display of the other graphs.
You can omit either or both of 'xlim' and 'ylim'.

Whatever you do about the limits, however, they will be fixed
once and for all once the first plot has been drawn.

Hoping this helps,
Ted.


--------------------------------------------------------------------
E-Mail: (Ted Harding) <Ted.Harding at nessie.mcc.ac.uk>
Fax-to-email: +44 (0)870 094 0861
Date: 18-Mar-05                                       Time: 16:17:12
------------------------------ XFMail ------------------------------
#
If you know the exact formulae for the distribution, replace it with 'f'
function below. You may want to use the log="x" in the plot.

 f <- function(x) 1 - exp( -x/20 ); 
 plot( f, xlim=c(0,100), ylim=c(0.5, 1) )


Otherwise generate sufficient realisations from it and fit a line as
below

 x <- seq(-5,5,by=0.01)
 y <- dt(x, 5)
 plot( x, y, type="l", col=8 )


Now you can overlay the observations as points

 obs.x <- rnorm(50)
 obs.y <- runif(50)
 points( obs.x, obs.y, pch=18)

You might want to see help("plot"), help("par") or demo(graphics) as
well as http://www.r-project.org/other-docs.html

Regards, Adai
On Fri, 2005-03-18 at 07:18 -0800, R_xprt_wannabe wrote: