Learn R Programming

Kernelheaping (version 1.5)

dbivr: Bivariate kernel density estimation for rounded data

Description

Bivariate kernel density estimation for rounded data

Usage

dbivr(xrounded, roundvalue, burnin = 2, samples = 5, adaptive = FALSE)

Arguments

xrounded
rounded values from which to estimate bivariate density, matrix with 2 columns (x,y)
roundvalue
rounding value (side length of square in that the true value lies around the rounded one)
burnin
burn-in sample size
samples
sampling iteration size
adaptive
set to TRUE for adaptive bandwidth

Value

  • The function returns a list object with the following objects (besides all input objects):
  • Mestimateskde object containing the corrected density estimate
  • gridxVector Grid on which density is evaluated (x)
  • gridyVector Grid on which density is evaluated (y)
  • resultDensityArray with Estimated Density for each iteration
  • resultXMatrix of true latent values X estimates
  • delaigleMatrix of Delaigle estimator estimates

Examples

Run this code
# Create Mu and Sigma  -----------------------------------------------------------
mu1 <- c(0, 0)
mu2 <- c(5, 3)
mu3 <- c(-4, 1)
Sigma1 <- matrix(c(4, 3, 3, 4), 2, 2)
Sigma2 <- matrix(c(3, 0.5, 0.5, 1), 2, 2)
Sigma3 <- matrix(c(5, 4, 4, 6), 2, 2)
# Mixed Normal Distribution -------------------------------------------------------
mus <- rbind(mu1, mu2, mu3)
Sigmas <- rbind(Sigma1, Sigma2, Sigma3)
props <- c(1/3, 1/3, 1/3)
xtrue=rmvnorm.mixt(n=1000, mus=mus, Sigmas=Sigmas, props=props)
roundvalue=2
xrounded=round_any(xtrue,roundvalue)
est <- dbivr(xrounded,roundvalue=roundvalue,burnin=5,samples=10)

#Plot corrected and Naive distribution
plot(est,trueX=xtrue)
#for comparison: plot true density
 dens=dmvnorm.mixt(x=expand.grid(est$Mestimates$eval.points[[1]],est$Mestimates$eval.points[[2]]),
  mus=mus, Sigmas=Sigmas, props=props)
 dens=matrix(dens,nrow=length(est$gridx),ncol=length(est$gridy))
 contour(dens,x=est$Mestimates$eval.points[[1]],y=est$Mestimates$eval.points[[2]],
    xlim=c(min(est$gridx),max(est$gridx)),ylim=c(min(est$gridy),max(est$gridy)),main="True Density")

Run the code above in your browser using DataLab