Title: | Functions Relating to the Smoothing of Numerical Data |
---|---|
Description: | A collection of methods for smoothing numerical data, commencing with a port of the Matlab gaussian window smoothing function. In addition, several functions typically used in smoothing of financial data are included. |
Authors: | Nicholas Hamilton |
Maintainer: | Nicholas Hamilton <[email protected]> |
License: | GPL-2 |
Version: | 1.3 |
Built: | 2024-10-30 06:44:17 UTC |
Source: | CRAN |
smoother
Package for the Smoothing of Numerical Data
smoother
is presently limited to a port of the Matlab 'Gaussian Window' Function,
as well as a limited number of moving averages (sma, ema, dema
and 'wma'
). Code for the gaussian window
function has been written locally within this package, however, the moving averages are called from the TTR package
(https://CRAN.R-project.org/package=TTR) and are included as a matter of convenience.
For further information (and examples) with regards to utilizing the primary helper function, please refer to the smth function help file
The Gaussian Smoothing component of the smoother
package has been loosley adapted from elsewhere
Helper function to smooth numerical data using methods specified by the user.
smth( x = stop("Numeric Vector 'x' is Required"), method = getOption("smoother.method"), ... )
smth( x = stop("Numeric Vector 'x' is Required"), method = getOption("smoother.method"), ... )
x |
numeric vector of values to smooth |
method |
one of |
... |
any other arguments to be passed to each specific smoothing methodology. |
At this moment in time, the only method is the 'gaussian'
window function (similar to the Matlab
Gaussian Window Smoothing Function) and a number of moving averages 'sma', 'ema', 'dema'
or 'wma'
.
These are functions that allows the user to smooth an input vector, returning vector of the same length as the input.
This can also be achieved using the specific smth.gaussian
function.
a numeric vector of same length as input 'x'
vector
If the 'method'
argument is equal to 'gaussian'
, then this function is a port of the function
described here: https://goo.gl/HGM47U, very loosly based of code which has also been ported to c++ elsewhere
Refer to specific man files: smth.gaussian
, SMA
, EMA
,
DEMA
or WMA
#Prepare Data n = 1000 x = seq(-pi,pi,length.out=n) y = sin(x) + (runif(length(x))*0.1) #NOISY DATA ys = smth(y,window = 0.1,method = "gaussian") #SMOOTHING plot(x,y,type="l",col="red") lines(x,ys,col="black",lwd=3) title("Example Smoothing of Noisy Data")
#Prepare Data n = 1000 x = seq(-pi,pi,length.out=n) y = sin(x) + (runif(length(x))*0.1) #NOISY DATA ys = smth(y,window = 0.1,method = "gaussian") #SMOOTHING plot(x,y,type="l",col="red") lines(x,ys,col="black",lwd=3) title("Example Smoothing of Noisy Data")
The specific function for smoothing using the gaussian window function
smth.gaussian( x = stop("Numeric Vector 'x' is Required"), window = getOption("smoother.window"), alpha = getOption("smoother.gaussianwindow.alpha"), ..., tails = getOption("smoother.tails") )
smth.gaussian( x = stop("Numeric Vector 'x' is Required"), window = getOption("smoother.window"), alpha = getOption("smoother.gaussianwindow.alpha"), ..., tails = getOption("smoother.tails") )
x |
numeric vector of values to smooth, error will be thrown if not provided. |
window |
the length of the smoothing window, if an integer, represents
number of items, else, if a value between |
alpha |
parameter to determine the breadth of the gaussian window, yielding more or less sensitive smoothing characteristics |
... |
not used |
tails |
Logical value as to whether the tail regions should be included or not. |
y = runif(100) ys = smth.gaussian(y)
y = runif(100) ys = smth.gaussian(y)
Several Global Options have been declared, as described in this help file.
The following global options can be modified, to alter the default calculation behaviour.
NAME | VALUE | DESCRIPTION |
smoother.gaussianwindow.alpha |
2.5 |
Alpha Value in Calculating Window |
smoother.window |
0.1 |
Width of Window |
smoother.method |
'gaussian' |
Default Smoothing Method |
smoother.tails |
FALSE |
Include tails in final vector |
smoother.verbose |
FALSE |
Verbose Reporting |
#Tighten the alpha term for this session. options('smoother.gaussianwindow.alpha' = 1) #Include the Tails in Final Calculation options('smoother.tails' = TRUE)
#Tighten the alpha term for this session. options('smoother.gaussianwindow.alpha' = 1) #Include the Tails in Final Calculation options('smoother.tails' = TRUE)