stepfun {stepfun} | R Documentation |
Step Functions
Description
Given the vectors (x_1,\ldots, x_n)
and
(y_0,y_1,\ldots, y_n)
(one value more!),
stepfun(x,y,...)
returns an interpolating “step” function,
say fn
. I.e., fn(t) = c
_i
(constant) for
t \in (x_i, x_{i+1})
and
fn(x_i) = y_i
for i=1,\ldots,n
.
The value of the constant c_i
above depends on the
“continuity” parameter f
.
For the default, f = 0
, fn
is a “cadlag” function, i.e.
continuous at right, limit (“the point”) at left.
In general, c_i
is interpolated in between the
neighbouring y
values,
c_i= (1-f) y_i + f\cdot y_{i+1}
.
Therefore, for non-0 values of f
, fn
may no longer be a proper
step function, since it can be discontinuous from both sides.
Usage
fn <- stepfun(x, y, f=0)
is.stepfun(fn)
knots(fn)
plot(fn, ...)
print(fn, ...)
summary(fn)
Arguments
x |
numeric vector giving the “knots” or jump locations of the step function. |
y |
numeric vector one longer than |
f |
a number between 0 and 1, indicating how interpolation outside
the given x values should happen. See |
fn |
an R object inheriting from |
Value
A function of class "stepfun"
, say fn
.
There are methods available for
summarizing ("summary(.)"
), representing
("print(.)"
) and plotting ("plot(.)"
, see
plot.stepfun
) "stepfun"
objects.
The environment
of fn
contains all the
information needed;
\ \ "x","y"
: the original arguments;
\ \ "n"
: number of knots (x values);
\ \ "f"
: continuity parameter;
\ \ "yleft", "yright"
the function values outside the knots;
\ \ "method"
(always == "constant"
; not used, from
approxfun(.)
).
The knots are also available by knots(fn)
.
Author(s)
Martin Maechler, maechler@stat.math.ethz.ch with some basic code from Thomas Lumley.
See Also
ecdf
for empirical distribution functions as
special step functions and plot.stepfun
for plotting
step functions.
approxfun
and splinefun
.
Examples
y0 <- c(1,2,4,3)
sfun0 <- stepfun(1:3, y0, f = 0)
sfun.2 <- stepfun(1:3, y0, f = .2)
sfun1 <- stepfun(1:3, y0, f = 1)
sfun0
summary(sfun0)
summary(sfun.2)
x0 <- seq(0.5,3.5, by = 0.25)
rbind(x=x0, f.f0 = sfun0(x0), f.f02= sfun.2(x0), f.f1 = sfun1(x0))