Logo ROOT   6.07/09
Reference Guide
List of all members | Public Member Functions | Static Public Member Functions | Protected Attributes | Private Member Functions | List of all members
TGraphSmooth Class Reference

A helper class to smooth TGraph.

see examples in $ROOTSYS/tutorials/graphs/motorcycle.C and approx.C

Definition at line 38 of file TGraphSmooth.h.

Public Member Functions

 TGraphSmooth ()
 
 TGraphSmooth (const char *name)
 GraphSmooth constructor. More...
 
virtual ~TGraphSmooth ()
 GraphSmooth destructor. More...
 
TGraphApprox (TGraph *grin, Option_t *option="linear", Int_t nout=50, Double_t *xout=0, Double_t yleft=0, Double_t yright=0, Int_t rule=0, Double_t f=0, Option_t *ties="mean")
 Approximate data points. More...
 
void Approxin (TGraph *grin, Int_t iKind, Double_t &Ylow, Double_t &Yhigh, Int_t rule, Int_t iTies)
 Sort data points and eliminate double x values. More...
 
void Lowess (Double_t *x, Double_t *y, Int_t n, Double_t *ys, Double_t span, Int_t iter, Double_t delta)
 Lowess regression smoother. More...
 
void Smoothin (TGraph *grin)
 Sort input data points. More...
 
TGraphSmoothKern (TGraph *grin, Option_t *option="normal", Double_t bandwidth=0.5, Int_t nout=100, Double_t *xout=0)
 Smooth data with Kernel smoother. More...
 
TGraphSmoothLowess (TGraph *grin, Option_t *option="", Double_t span=0.67, Int_t iter=3, Double_t delta=0)
 Smooth data with Lowess smoother. More...
 
TGraphSmoothSuper (TGraph *grin, Option_t *option="", Double_t bass=0, Double_t span=0, Bool_t isPeriodic=kFALSE, Double_t *w=0)
 Smooth data with Super smoother. More...
 
- Public Member Functions inherited from TNamed
 TNamed ()
 
 TNamed (const char *name, const char *title)
 
 TNamed (const TString &name, const TString &title)
 
 TNamed (const TNamed &named)
 TNamed copy ctor. More...
 
virtual ~TNamed ()
 
virtual void Clear (Option_t *option="")
 Set name and title to empty strings (""). More...
 
virtual TObjectClone (const char *newname="") const
 Make a clone of an object using the Streamer facility. More...
 
virtual Int_t Compare (const TObject *obj) const
 Compare two TNamed objects. More...
 
virtual void Copy (TObject &named) const
 Copy this to obj. More...
 
virtual void FillBuffer (char *&buffer)
 Encode TNamed into output buffer. More...
 
virtual const char * GetName () const
 Returns name of object. More...
 
virtual const char * GetTitle () const
 Returns title of object. More...
 
virtual ULong_t Hash () const
 Return hash value for this object. More...
 
virtual Bool_t IsSortable () const
 
virtual void ls (Option_t *option="") const
 List TNamed name and title. More...
 
TNamedoperator= (const TNamed &rhs)
 TNamed assignment operator. More...
 
virtual void Print (Option_t *option="") const
 Print TNamed name and title. More...
 
virtual void SetName (const char *name)
 Set the name of the TNamed. More...
 
virtual void SetNameTitle (const char *name, const char *title)
 Set all the TNamed parameters (name and title). More...
 
virtual void SetTitle (const char *title="")
 Set the title of the TNamed. More...
 
virtual Int_t Sizeof () const
 Return size of the TNamed part of the TObject. More...
 
- Public Member Functions inherited from TObject
 TObject ()
 TObject constructor. More...
 
 TObject (const TObject &object)
 TObject copy ctor. More...
 
virtual ~TObject ()
 TObject destructor. More...
 
void AbstractMethod (const char *method) const
 Use this method to implement an "abstract" method that you don't want to leave purely abstract. More...
 
virtual void AppendPad (Option_t *option="")
 Append graphics object to current pad. More...
 
virtual void Browse (TBrowser *b)
 Browse object. May be overridden for another default action. More...
 
virtual const char * ClassName () const
 Returns name of class to which the object belongs. More...
 
virtual void Delete (Option_t *option="")
 Delete this object. More...
 
virtual Int_t DistancetoPrimitive (Int_t px, Int_t py)
 Computes distance from point (px,py) to the object. More...
 
virtual void Draw (Option_t *option="")
 Default Draw method for all objects. More...
 
virtual void DrawClass () const
 Draw class inheritance tree of the class to which this object belongs. More...
 
virtual TObjectDrawClone (Option_t *option="") const
 Draw a clone of this object in the current pad. More...
 
virtual void Dump () const
 Dump contents of object on stdout. More...
 
virtual void Error (const char *method, const char *msgfmt,...) const
 Issue error message. More...
 
virtual void Execute (const char *method, const char *params, Int_t *error=0)
 Execute method on this object with the given parameter string, e.g. More...
 
virtual void Execute (TMethod *method, TObjArray *params, Int_t *error=0)
 Execute method on this object with parameters stored in the TObjArray. More...
 
virtual void ExecuteEvent (Int_t event, Int_t px, Int_t py)
 Execute action corresponding to an event at (px,py). More...
 
virtual void Fatal (const char *method, const char *msgfmt,...) const
 Issue fatal error message. More...
 
virtual TObjectFindObject (const char *name) const
 Must be redefined in derived classes. More...
 
virtual TObjectFindObject (const TObject *obj) const
 Must be redefined in derived classes. More...
 
virtual Option_tGetDrawOption () const
 Get option used by the graphics system to draw this object. More...
 
virtual const char * GetIconName () const
 Returns mime type name of object. More...
 
virtual char * GetObjectInfo (Int_t px, Int_t py) const
 Returns string containing info about the object at position (px,py). More...
 
virtual Option_tGetOption () const
 
virtual UInt_t GetUniqueID () const
 Return the unique object id. More...
 
virtual Bool_t HandleTimer (TTimer *timer)
 Execute action in response of a timer timing out. More...
 
virtual void Info (const char *method, const char *msgfmt,...) const
 Issue info message. More...
 
virtual Bool_t InheritsFrom (const char *classname) const
 Returns kTRUE if object inherits from class "classname". More...
 
virtual Bool_t InheritsFrom (const TClass *cl) const
 Returns kTRUE if object inherits from TClass cl. More...
 
virtual void Inspect () const
 Dump contents of this object in a graphics canvas. More...
 
void InvertBit (UInt_t f)
 
virtual Bool_t IsEqual (const TObject *obj) const
 Default equal comparison (objects are equal if they have the same address in memory). More...
 
virtual Bool_t IsFolder () const
 Returns kTRUE in case object contains browsable objects (like containers or lists of other objects). More...
 
Bool_t IsOnHeap () const
 
Bool_t IsZombie () const
 
void MayNotUse (const char *method) const
 Use this method to signal that a method (defined in a base class) may not be called in a derived class (in principle against good design since a child class should not provide less functionality than its parent, however, sometimes it is necessary). More...
 
virtual Bool_t Notify ()
 This method must be overridden to handle object notification. More...
 
void Obsolete (const char *method, const char *asOfVers, const char *removedFromVers) const
 Use this method to declare a method obsolete. More...
 
void operator delete (void *ptr)
 Operator delete. More...
 
void operator delete[] (void *ptr)
 Operator delete []. More...
 
voidoperator new (size_t sz)
 
voidoperator new (size_t sz, void *vp)
 
voidoperator new[] (size_t sz)
 
voidoperator new[] (size_t sz, void *vp)
 
TObjectoperator= (const TObject &rhs)
 TObject assignment operator. More...
 
virtual void Paint (Option_t *option="")
 This method must be overridden if a class wants to paint itself. More...
 
virtual void Pop ()
 Pop on object drawn in a pad to the top of the display list. More...
 
virtual Int_t Read (const char *name)
 Read contents of object with specified name from the current directory. More...
 
virtual void RecursiveRemove (TObject *obj)
 Recursively remove this object from a list. More...
 
void ResetBit (UInt_t f)
 
virtual void SaveAs (const char *filename="", Option_t *option="") const
 Save this object in the file specified by filename. More...
 
virtual void SavePrimitive (std::ostream &out, Option_t *option="")
 Save a primitive as a C++ statement(s) on output stream "out". More...
 
void SetBit (UInt_t f, Bool_t set)
 Set or unset the user status bits as specified in f. More...
 
void SetBit (UInt_t f)
 
virtual void SetDrawOption (Option_t *option="")
 Set drawing option for object. More...
 
virtual void SetUniqueID (UInt_t uid)
 Set the unique object id. More...
 
virtual void SysError (const char *method, const char *msgfmt,...) const
 Issue system error message. More...
 
Bool_t TestBit (UInt_t f) const
 
Int_t TestBits (UInt_t f) const
 
virtual void UseCurrentStyle ()
 Set current style settings in this object This function is called when either TCanvas::UseCurrentStyle or TROOT::ForceStyle have been invoked. More...
 
virtual void Warning (const char *method, const char *msgfmt,...) const
 Issue warning message. More...
 
virtual Int_t Write (const char *name=0, Int_t option=0, Int_t bufsize=0)
 Write this object to the current directory. More...
 
virtual Int_t Write (const char *name=0, Int_t option=0, Int_t bufsize=0) const
 Write this object to the current directory. More...
 

Static Public Member Functions

static Double_t Approx1 (Double_t v, Double_t f, Double_t *x, Double_t *y, Int_t n, Int_t iKind, Double_t Ylow, Double_t Yhigh)
 Approximate one data point. More...
 
static void BDRksmooth (Double_t *x, Double_t *y, Int_t n, Double_t *xp, Double_t *yp, Int_t np, Int_t kernel, Double_t bw)
 Smooth data with specified kernel. More...
 
static void BDRsmooth (Int_t n, Double_t *x, Double_t *y, Double_t *w, Double_t span, Int_t iper, Double_t vsmlsq, Double_t *smo, Double_t *acvr)
 Function for super smoother Based on R function supsmu: Translated to C++ by C. More...
 
static void BDRsupsmu (Int_t n, Double_t *x, Double_t *y, Double_t *w, Int_t iper, Double_t span, Double_t alpha, Double_t *smo, Double_t *sc)
 Friedmanns super smoother (Friedman, 1984). More...
 
static void Lowest (Double_t *x, Double_t *y, Int_t n, Double_t &xs, Double_t &ys, Int_t nleft, Int_t nright, Double_t *w, Bool_t userw, Double_t *rw, Bool_t &ok)
 Fit value at x[i] Based on R function lowest: Translated to C++ by C. More...
 
static void Psort (Double_t *x, Int_t n, Int_t k)
 Static function based on R function rPsort: adapted to C++ by Christian Stratowa (R source file: R_sort.c by R Development Core Team (C) 1999-2001) More...
 
static void Rank (Int_t n, Double_t *a, Int_t *index, Int_t *rank, Bool_t down=kTRUE)
 static function More...
 
static Int_t Rcmp (Double_t x, Double_t y)
 Static function if (ISNAN(x)) return 1; if (ISNAN(y)) return -1;. More...
 
- Static Public Member Functions inherited from TObject
static Long_t GetDtorOnly ()
 Return destructor only flag. More...
 
static Bool_t GetObjectStat ()
 Get status of object stat flag. More...
 
static void SetDtorOnly (void *obj)
 Set destructor only flag. More...
 
static void SetObjectStat (Bool_t stat)
 Turn on/off tracking of objects in the TObjectTable. More...
 

Protected Attributes

TGraphfGin
 
TGraphfGout
 
Double_t fMaxX
 
Double_t fMinX
 
Int_t fNin
 
Int_t fNout
 
- Protected Attributes inherited from TNamed
TString fName
 
TString fTitle
 

Private Member Functions

 TGraphSmooth (const TGraphSmooth &)
 
TGraphSmoothoperator= (const TGraphSmooth &)
 

Additional Inherited Members

- Public Types inherited from TObject
enum  { kIsOnHeap = 0x01000000, kNotDeleted = 0x02000000, kZombie = 0x04000000, kBitMask = 0x00ffffff }
 
enum  { kSingleKey = BIT(0), kOverwrite = BIT(1), kWriteDelete = BIT(2) }
 
enum  EStatusBits {
  kCanDelete = BIT(0), kMustCleanup = BIT(3), kObjInCanvas = BIT(3), kIsReferenced = BIT(4),
  kHasUUID = BIT(5), kCannotPick = BIT(6), kNoContextMenu = BIT(8), kInvalidObject = BIT(13)
}
 
- Protected Member Functions inherited from TObject
virtual void DoError (int level, const char *location, const char *fmt, va_list va) const
 Interface to ErrorHandler (protected). More...
 
void MakeZombie ()
 

#include <TGraphSmooth.h>

Inheritance diagram for TGraphSmooth:
[legend]

Constructor & Destructor Documentation

TGraphSmooth::TGraphSmooth ( const TGraphSmooth )
private
TGraphSmooth::TGraphSmooth ( )

Definition at line 41 of file TGraphSmooth.cxx.

TGraphSmooth::TGraphSmooth ( const char *  name)

GraphSmooth constructor.

Definition at line 54 of file TGraphSmooth.cxx.

TGraphSmooth::~TGraphSmooth ( )
virtual

GraphSmooth destructor.

Definition at line 67 of file TGraphSmooth.cxx.

Member Function Documentation

TGraph * TGraphSmooth::Approx ( TGraph grin,
Option_t option = "linear",
Int_t  nout = 50,
Double_t xout = 0,
Double_t  yleft = 0,
Double_t  yright = 0,
Int_t  rule = 0,
Double_t  f = 0,
Option_t ties = "mean" 
)

Approximate data points.

Parameters
[in]gringraph giving the coordinates of the points to be interpolated. Alternatively a single plotting structure can be specified:
[in]optionspecifies the interpolation method to be used. Choices are "linear" (iKind = 1) or "constant" (iKind = 2).
[in]noutIf xout is not specified, interpolation takes place at n equally spaced points spanning the interval [min(x), max(x)], where nout = max(nout, number of input data).
[in]xoutan optional set of values specifying where interpolation is to take place.
[in]yleftthe value to be returned when input x values less than min(x). The default is defined by the value of rule given below.
[in]yrightthe value to be returned when input x values greater than max(x). The default is defined by the value of rule given below.
[in]rulean integer describing how interpolation is to take place outside the interval [min(x), max(x)]. If rule is 0 then the given yleft and yright values are returned, if it is 1 then 0 is returned for such points and if it is 2, the value at the closest data extreme is used.
[in]fFor method="constant" a number between 0 and 1 inclusive, indicating a compromise between left- and right-continuous step functions. If y0 and y1 are the values to the left and right of the point then the value is y0*f+y1*(1-f) so that f=0 is right-continuous and f=1 is left-continuous
[in]tiesHandling of tied x values. An integer describing a function with a single vector argument returning a single number result:
  • ties = "ordered" (iTies = 0): input x are "ordered"
  • ties = "mean" (iTies = 1): function "mean"
  • ties = "min" (iTies = 2): function "min"
  • ties = "max" (iTies = 3): function "max"

Details:

At least two complete (x, y) pairs are required. If there are duplicated (tied) x values and ties is a function it is applied to the y values for each distinct x value. Useful functions in this context include mean, min, and max. If ties="ordered" the x values are assumed to be already ordered. The first y value will be used for interpolation to the left and the last one for interpolation to the right.

Value:

approx returns a graph with components x and y, containing n coordinates which interpolate the given data points according to the method (and rule) desired.

Definition at line 997 of file TGraphSmooth.cxx.

Double_t TGraphSmooth::Approx1 ( Double_t  v,
Double_t  f,
Double_t x,
Double_t y,
Int_t  n,
Int_t  iKind,
Double_t  ylow,
Double_t  yhigh 
)
static

Approximate one data point.

Approximate y(v), given (x,y)[i], i = 0,..,n-1 Based on R function approx1: Translated to C++ by Christian Stratowa (R source file: approx.c by R Development Core Team (C) 1999-2001)

Definition at line 1059 of file TGraphSmooth.cxx.

void TGraphSmooth::Approxin ( TGraph grin,
Int_t  iKind,
Double_t Ylow,
Double_t Yhigh,
Int_t  rule,
Int_t  iTies 
)

Sort data points and eliminate double x values.

Definition at line 858 of file TGraphSmooth.cxx.

void TGraphSmooth::BDRksmooth ( Double_t x,
Double_t y,
Int_t  n,
Double_t xp,
Double_t yp,
Int_t  np,
Int_t  kernel,
Double_t  bw 
)
static

Smooth data with specified kernel.

Based on R function ksmooth: Translated to C++ by C. Stratowa (R source file: ksmooth.c by B.D.Ripley Copyright (C) 1998)

Definition at line 157 of file TGraphSmooth.cxx.

void TGraphSmooth::BDRsmooth ( Int_t  n,
Double_t x,
Double_t y,
Double_t w,
Double_t  span,
Int_t  iper,
Double_t  vsmlsq,
Double_t smo,
Double_t acvr 
)
static

Function for super smoother Based on R function supsmu: Translated to C++ by C.

Stratowa (R source file: ppr.f by B.D.Ripley Copyright (C) 1994-97)

Definition at line 693 of file TGraphSmooth.cxx.

void TGraphSmooth::BDRsupsmu ( Int_t  n,
Double_t x,
Double_t y,
Double_t w,
Int_t  iper,
Double_t  span,
Double_t  alpha,
Double_t smo,
Double_t sc 
)
static

Friedmanns super smoother (Friedman, 1984).

version 10/10/84 coded and copywrite (c) 1984 by:

                   Jerome H. Friedman
                department of statistics
                          and
           stanford linear accelerator center
                   stanford university

all rights reserved.

Parameters
[in]nnumber of observations (x,y - pairs).
[in]xordered abscissa values.
[in]ycorresponding ordinate (response) values.
[in]wweight for each (x,y) observation.
[in]iperperiodic variable flag.
  • iper=1 => x is ordered interval variable.
  • iper=2 => x is a periodic variable with values in the range (0.0,1.0) and period 1.0.
[in]spansmoother span (fraction of observations in window).
  • span=0.0 => automatic (variable) span selection.
[in]alphacontrols high frequency (small span) penality used with automatic span selection (bass tone control). (alpha.le.0.0 or alpha.gt.10.0 => no effect.)
[out]smosmoothed ordinate (response) values.
scinternal working storage.

note:

for small samples (n < 40) or if there are substantial serial correlations between observations close in x - value, then a prespecified fixed span smoother (span > 0) should be used. reasonable span values are 0.2 to 0.4.

current implementation:

Based on R function supsmu: Translated to C++ by C. Stratowa (R source file: ppr.f by B.D.Ripley Copyright (C) 1994-97)

Definition at line 572 of file TGraphSmooth.cxx.

void TGraphSmooth::Lowess ( Double_t x,
Double_t y,
Int_t  n,
Double_t ys,
Double_t  span,
Int_t  iter,
Double_t  delta 
)

Lowess regression smoother.

Based on R function clowess: Translated to C++ by C. Stratowa (R source file: lowess.c by R Development Core Team (C) 1999-2001)

Definition at line 250 of file TGraphSmooth.cxx.

void TGraphSmooth::Lowest ( Double_t x,
Double_t y,
Int_t  n,
Double_t xs,
Double_t ys,
Int_t  nleft,
Int_t  nright,
Double_t w,
Bool_t  userw,
Double_t rw,
Bool_t ok 
)
static

Fit value at x[i] Based on R function lowest: Translated to C++ by C.

Stratowa (R source file: lowess.c by R Development Core Team (C) 1999-2001)

Definition at line 373 of file TGraphSmooth.cxx.

TGraphSmooth& TGraphSmooth::operator= ( const TGraphSmooth )
private
void TGraphSmooth::Psort ( Double_t x,
Int_t  n,
Int_t  k 
)
static

Static function based on R function rPsort: adapted to C++ by Christian Stratowa (R source file: R_sort.c by R Development Core Team (C) 1999-2001)

Definition at line 1105 of file TGraphSmooth.cxx.

void TGraphSmooth::Rank ( Int_t  n,
Double_t a,
Int_t index,
Int_t rank,
Bool_t  down = kTRUE 
)
static

static function

Definition at line 1125 of file TGraphSmooth.cxx.

Int_t TGraphSmooth::Rcmp ( Double_t  x,
Double_t  y 
)
static

Static function if (ISNAN(x)) return 1; if (ISNAN(y)) return -1;.

Definition at line 1093 of file TGraphSmooth.cxx.

void TGraphSmooth::Smoothin ( TGraph grin)

Sort input data points.

Definition at line 77 of file TGraphSmooth.cxx.

TGraph * TGraphSmooth::SmoothKern ( TGraph grin,
Option_t option = "normal",
Double_t  bandwidth = 0.5,
Int_t  nout = 100,
Double_t xout = 0 
)

Smooth data with Kernel smoother.

Smooth grin with the Nadaraya-Watson kernel regression estimate.

Parameters
[in]grininput graph
[in]optionthe kernel to be used: "box", "normal"
[in]bandwidththe bandwidth. The kernels are scaled so that their quartiles (viewed as probability densities) are at +/- 0.25*bandwidth.
[in]noutIf xout is not specified, interpolation takes place at equally spaced points spanning the interval [min(x), max(x)], where nout = max(nout, number of input data).
[in]xoutan optional set of values at which to evaluate the fit

Definition at line 117 of file TGraphSmooth.cxx.

TGraph * TGraphSmooth::SmoothLowess ( TGraph grin,
Option_t option = "",
Double_t  span = 0.67,
Int_t  iter = 3,
Double_t  delta = 0 
)

Smooth data with Lowess smoother.

This function performs the computations for the LOWESS smoother (see the reference below). Lowess returns the output points x and y which give the coordinates of the smooth.

Parameters
[in]grinInput graph
[in]spanthe smoother span. This gives the proportion of points in the plot which influence the smooth at each value. Larger values give more smoothness.
[in]iterthe number of robustifying iterations which should be performed. Using smaller values of iter will make lowess run faster.
[in]deltavalues of x which lie within delta of each other replaced by a single value in the output from lowess. For delta = 0, delta will be calculated.

References:

  • Cleveland, W. S. (1979) Robust locally weighted regression and smoothing scatterplots. J. Amer. Statist. Assoc. 74, 829-836.
  • Cleveland, W. S. (1981) LOWESS: A program for smoothing scatterplots by robust locally weighted regression. The American Statistician, 35, 54.

Definition at line 222 of file TGraphSmooth.cxx.

TGraph * TGraphSmooth::SmoothSuper ( TGraph grin,
Option_t option = "",
Double_t  bass = 0,
Double_t  span = 0,
Bool_t  isPeriodic = kFALSE,
Double_t w = 0 
)

Smooth data with Super smoother.

Smooth the (x, y) values by Friedman's ``super smoother''.

Parameters
[in]gringraph for smoothing
[in]spanthe fraction of the observations in the span of the running lines smoother, or 0 to choose this by leave-one-out cross-validation.
[in]basscontrols the smoothness of the fitted curve. Values of up to 10 indicate increasing smoothness.
[in]isPeriodicif TRUE, the x values are assumed to be in [0, 1] and of period 1.
[in]wcase weights

Details:

supsmu is a running lines smoother which chooses between three spans for the lines. The running lines smoothers are symmetric, with k/2 data points each side of the predicted point, and values of k as 0.5 * n, 0.2 * n and 0.05 * n, where n is the number of data points. If span is specified, a single smoother with span span * n is used.

The best of the three smoothers is chosen by cross-validation for each prediction. The best spans are then smoothed by a running lines smoother and the final prediction chosen by linear interpolation.

The FORTRAN code says: ``For small samples (n < 40) or if there are substantial serial correlations between observations close in x - value, then a prespecified fixed span smoother (span > 0) should be used. Reasonable span values are 0.2 to 0.4.''

References:

  • Friedman, J. H. (1984) SMART User's Guide. Laboratory for Computational Statistics, Stanford University Technical Report No. 1.
  • Friedman, J. H. (1984) A variable span scatterplot smoother. Laboratory for Computational Statistics, Stanford University Technical Report No. 5.

Definition at line 481 of file TGraphSmooth.cxx.

Member Data Documentation

TGraph* TGraphSmooth::fGin
protected

Definition at line 47 of file TGraphSmooth.h.

TGraph* TGraphSmooth::fGout
protected

Definition at line 48 of file TGraphSmooth.h.

Double_t TGraphSmooth::fMaxX
protected

Definition at line 50 of file TGraphSmooth.h.

Double_t TGraphSmooth::fMinX
protected

Definition at line 49 of file TGraphSmooth.h.

Int_t TGraphSmooth::fNin
protected

Definition at line 45 of file TGraphSmooth.h.

Int_t TGraphSmooth::fNout
protected

Definition at line 46 of file TGraphSmooth.h.


The documentation for this class was generated from the following files: