# ------ Fit distance functions to half-normal data
set.seed(90382)
x <- rnorm(1000) * 20
x <- x[ 0 < x & x < 100 ]
un.dfunc <- F.dfunc.estim( x, likelihood="uniform", w.hi = 100)
hn.dfunc <- F.dfunc.estim( x, likelihood="halfnorm", w.hi = 100)
ne.dfunc <- F.dfunc.estim( x, likelihood="negexp", w.hi = 100)
hz.dfunc <- F.dfunc.estim( x, likelihood="hazrate", w.hi = 100)
ga.dfunc <- F.dfunc.estim( x, likelihood="Gamma", w.hi = 100, x.scl="max")
par(mfrow=c(2,2))
plot(un.dfunc)
plot(hn.dfunc)
plot(ne.dfunc)
plot(hz.dfunc)
# ------ A user defined likelihood function: the triangular distribution on [0,b]
triangular.like <- function(b, dist, w.lo, w.hi, series = "", expansions = 0, scale = TRUE){
L <- (2/b)*(1 - dist/b)
L[ L < 0 ] <- 0
L
}
triangular.start.limits <- function(dist, w.lo, w.hi){
list(start=max(dist)*.75,
lowlimit=w.lo,
highlimit=w.hi,
names="Max")
}
# A function to generate triangular random deviates
rtriang <- function(n, b){
x<-seq(0,b,length=500)
CDF <- 2*x/b - (x/b)^2
u <- runif(n)
r <- approx( CDF, x, xout=u )$y
}
d <- rtriang(500,100) # true b = 100
tri.dfunc <- F.dfunc.estim( d, likelihood="triangular", w.hi=150 )
plot(tri.dfunc)
# For triangular case, true effective strip width = tri.dfunc$g.x.scl*tri.dfunc$param / 2.
# ESW(tri.dfunc) may differ slightly due to numerical integration error.Run the code above in your browser using DataLab