knitr::opts_chunk$set( collapse = TRUE, comment = "#>", eval = FALSE )
library(mlanimate) set_theme()
p <- 0.5 mu_0 <- c(0, 2) sigma_0 <- matrix(c(1, 0, 0, 1.5), nrow = 2) mu_1 <- c(2, 0) sigma_1 <- matrix(c(1.5, -0.5, -0.5, 1), nrow = 2) n <- 6000 set.seed(31415) sample_mvn <- new_sample_mvn(n, mu_0, sigma_0, mu_1, sigma_1, p) x_min <- -3 x_max <- 5 y_min <- -3 y_max <- 5 density_mvn <- new_density_mvn(mu_0, sigma_0, mu_1, sigma_1, p, x_min, x_max, y_min, y_max) ggplot() + layer_sample(sample_mvn) ggplot() + layer_density(density_mvn, z = p_0_xy) + layer_density(density_mvn, z = p_1_xy) ggplot() + layer_density(density_mvn, z = p_0_xy, alpha = 0.5) + layer_density(density_mvn, z = p_1_xy, alpha = 0.5) + layer_optimal(density_mvn)
set.seed(31415) p <- 0.5 mu_0 <- c(0, 2) sigma_0 <- matrix(c(1.5, -0.5, -0.5, 1), nrow = 2) make_mu <- function(x) { matrix(c(cos(x), sin(x)), nrow = 1) } make_density <- function(...) new_density_mvn(mu_0, sigma_0, make_mu(...), sigma_0, p, -4, 4, -4, 5) make_sample <- function(...) new_sample_mvn(n, mu_0, sigma_0, make_mu(...), sigma_0, p) steps <- 50 nframes <- 50 fps <- 10 xs <- list(x = seq(0.01, 2*pi-0.01, length = steps)) new_DensityFrameSequence(density_fun = make_density, params = xs, method = identity) %>% new_Animation() %>% animate(nframes = nframes, fps = fps) anim_save("/home/jovyan/work/mlanimate/animations/linear_mean.gif")
set.seed(31415) p <- 0.5 mu_0 <- c(0, 2) sigma_0 <- matrix(c(1.5, -0.5, -0.5, 1), nrow = 2) sigma_1 <- matrix(c(1, 0.75, 0.75, 1.25), nrow = 2) make_mu <- function(x) { matrix(c(cos(x), sin(x)), nrow = 1) } make_density <- function(...) new_density_mvn(mu_0, sigma_0, make_mu(...), sigma_1, p, -3.5, 4.5, -4, 5) steps <- 50 nframes <- 50 fps <- 10 xs <- list(x = seq(0.01, 2*pi-0.01, length = steps)) new_DensityFrameSequence(density_fun = make_density, params = xs, method = identity) %>% new_Animation() %>% animate(nframes = nframes, fps = fps) anim_save("/home/jovyan/work/mlanimate/animations/quadratic_mean.gif")
fit_and_predict_qda <- function(sample, density, ...) { fit_qda <- MASS::qda(class ~ x + y, data = sample) pred_qda <- predict(fit_qda, newdata = density) density_qda <- cbind(density, "fitted" = pred_qda$posterior[, "1"]) density_qda } new_FittedFrameSequence(sample_frame = sample_mvn, density_frame = density_mvn, fit_and_predict = fit_and_predict_qda, delta = 10, start = 100) %>% new_Animation(animation_frame) %>% animate(animation) anim_save("/home/jovyan/work/mlanimate/animations/fitting_qda.gif")
fit_and_predict_qda <- function(sample, density, ...) { fit_qda <- MASS::qda(class ~ x + y, data = sample) pred_qda <- predict(fit_qda, newdata = density) density_qda <- cbind(density, "fitted" = pred_qda$posterior[, "1"]) density_qda } new_FittedFrameSequence(sample_frame = sample_mvn, density_frame = density_mvn, fit_and_predict = fit_and_predict_qda, delta = 10, start = 100) %>% new_Animation(animation_frame) %>% animate(animation) anim_save("/home/jovyan/work/mlanimate/animations/fitting_qda.gif")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.