## biased sampling
n = 1000; mu = 30.5; s = 8
x = rnorm(n,mu,s); x = sort(x)
fx = function(x,mu,s) dnorm(x,mu,s)*x/mu # length biasing
x0 = seq(min(x)-s,max(x)+s,length=100)
fn = fx(x0,mu,s)
f0 = dnorm(x0, mu, s)
plot(f0~x0, type='l',col=2, lwd=2)
lines(fn~x0, lty=2, col=2, lwd=2)
wx = bs.w.length(x); wx = wx/max(wx)
sele = runif(length(x))<wx
xw = x[sele]
wx = 1/wx[sele]
lines(density(xw), col=4, lwd=2)
f1 = wkde(xw,w=wx)
lines(f1, col=1, lwd=2)
f2 = wkde(xw,w=wx, bandwidth='wmise')
lines(f2, col=1, lty=2, lwd=2)
f3 = wkde(xw,w=wx, bandwidth='awmise')
lines(f3, col=1, lty=3, lwd=2)
f4 = tkde(xw, func.W = bs.W.length)
lines(f4, col=5, lty=1, lwd=2)
legend(max(x0), max(f0), xjust=1,yjust=1,
legend=c("true", "biased","density(...)","f.rot","wmise","awmise","tkde"),
lty=c(1,2,1,1,2,3,1), col=c(2,2,4,1,1,1,5),lwd=c(2,2,2,2,2,2,2))
Run the code above in your browser using DataLab