require(circular)
require(graphics)
set.seed(123)
n <- 10 #n (number of samples) is set small for performance. Increase n to
# a value larger than 1000 to see the effects of multimodality
angles <- rvonmisesmix(n,
mu = c(0,pi),
kappa = c(2,1),
prop = c(0.5,0.5)
)
bw1 <- opt_circ_bw(theta = angles, method="nrd", kappa.est = "ML")
bw2 <- opt_circ_bw(theta = angles, method="nrd", kappa.est = "trigmoments")
bw3 <- opt_circ_bw(theta = angles, method="cv")
dens1 <- fit_angle(theta = angles, parametric = FALSE, bandwidth = bw1)
dens2 <- fit_angle(theta = angles, parametric = FALSE, bandwidth = bw2)
dens3 <- fit_angle(theta = angles, parametric = FALSE, bandwidth = bw3)
true_dens <- dvonmisesmix(
seq(-pi,pi,0.001),
mu = c(0,pi),
kappa = c(2,1),
prop = c(0.5,0.5)
)
if(interactive()){
plot(seq(-pi, pi, 0.001), true_dens, type = "l")
lines(as.double(dens1$x), as.double(dens1$y), col = "red")
lines(as.double(dens2$x), as.double(dens2$y), col = "green")
lines(as.double(dens3$x), as.double(dens3$y), col = "blue")
}
Run the code above in your browser using DataLab