pf2pf {lazy.stat}R Documentation

Calculation of pf at xout from (x, pf) where x the the domain and pf is the probability function at x.

Description

(This is a Beta Version.)

Usage

pf2pf(
  x,
  pf,
  xout,
  maxx = NULL,
  maxx2 = NULL,
  normalize = 1,
  print = 0,
  plot = 0
)

Arguments

x

A vector at which pf is defined

pf

A vector of probability function which sums to unity.

xout

A vector of new values at which pf will be calculated.

maxx

max value of X or NULL.

maxx2

max value of Xout or NULL.

print

= 1 to print the result

plot

= 1 to plot the result

Details

This function assumes that the random variable X is continuous and that the probability density function, pf, at x is normalized so that sum(pf)=1. Therefore, it is called pf, not pdf. Now, we wish to calculate the normalized pdf, pf2, at xout such that sum(pf2)=1. In order to do so, we proceed as follows:

0. adjust the value of x and xout to x2 and xout2 where x2 = x + half length of the interval x[i] and x[i+1], i < n, x2 = x + ???????????????????????????????????????? 1. calculate cdf from pf. 2. interpolate (x2,cdf) to get (xout2,cdf2). 3. calculate pf2 at xout using cdf2pf. 4. normalize pf2 so that is sums to unity.

The tail probabilities are defined so that pf(1) = Pr( X < x[1]+dd ), pf(n) = Pr( X > x[n]-dd )

Value

A vector containing pf at xout.

Examples


# discretized standard normal
set.seed(1701)
x <- seq(-3,3,len=11)
pf <- dnorm(x)
pf <- pf/sum(pf)
cdf <- cumsum(pf)
pf2 <- cdf2pf( x, cdf, print=1, plot=1 )
stat <- unlist(mandd( x, pf2 )[c("mean","var","std")])
Print(stat, fmt="10.5")

# calculate pf2 at new xout from (x,pf)
xout <- seq(-3,3,len=15)
pf2 <- pf2pf( x, pf, xout, print=1, plot=3 )
stat <- unlist(mandd( xout, pf2 )[c("mean","var","std")])
Print(stat, fmt="10.5")

# calculate pf2 at new xout from (x,pf): Large tail probabilities.
xout <- seq(-2, 2, len=21)
pf2 <- pf2pf( x, pf, xout, print=1, plot=3 )
stat <- unlist(mandd( xout, pf2 )[c("mean","var","std")])
Print(stat, fmt="10.5")


# Change of Variable
# standard normal to log normal
x <- seq(-3,3,len=121)
pf <- dnorm(x)
pf <- pf/sum(pf)
# log normal at equal interval: log(x2) ~ N( 0, 1 )
x2 <- exp(x)
xout <- c( 0.05, seq(0.1,20,0.1) )
pf2 <- pf2pf( x2, pf, xout, plot=2 )


[Package lazy.stat version 0.1.4 Index]