Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.width = 7,
fig.height = 5,
fig.alt = "Random walk visualization examples"
)
## ----setup, echo=FALSE, message=FALSE-----------------------------------------
library(RandomWalker)
library(dplyr)
library(ggplot2)
## ----install_example, eval=FALSE----------------------------------------------
# # From CRAN (stable)
# install.packages("RandomWalker")
#
# # From GitHub (development)
# devtools::install_github("spsanderson/RandomWalker")
## ----dependencies_example, eval=FALSE-----------------------------------------
# install.packages(c("dplyr", "tidyr", "purrr", "rlang", "patchwork", "NNS", "ggiraph"))
## ----simple_walk_example------------------------------------------------------
library(RandomWalker)
rw30() |> head(10) # Generates 30 walks with 100 steps each
## ----visualize_example, fig.alt="Visualization of random walks showing multiple panels"----
library(RandomWalker)
rw30() |> visualize_walks()
## ----custom_walk_example, fig.alt="Custom normal random walk with specified parameters"----
random_normal_walk(
.num_walks = 10,
.n = 100,
.mu = 0,
.sd = 1,
.initial_value = 0
) |> visualize_walks()
## ----seed_example-------------------------------------------------------------
set.seed(123)
walks <- rw30()
# Same seed produces same result
set.seed(123)
walks2 <- rw30()
identical(walks, walks2) # TRUE
## ----custom_distribution_example, eval=FALSE----------------------------------
# # Custom displacement function
# my_displacement <- function() {
# # Your custom logic here
# return(some_value)
# }
#
# custom_walk(
# .num_walks = 10,
# .n = 100,
# .custom_fns = my_displacement
# )
## ----twod_example-------------------------------------------------------------
random_normal_walk(.num_walks = 10, .n = 100, .dimensions = 2)
## ----visualize_2d, fig.alt="2D random walk visualization with x-y coordinates"----
library(ggplot2)
walk_2d <- random_normal_walk(.num_walks = 10, .n = 100, .dimensions = 2)
ggplot(walk_2d, aes(x = cum_sum_x, y = cum_sum_y, color = walk_number)) +
geom_path() +
coord_equal() +
theme_minimal()
## ----interactive_example, eval=FALSE------------------------------------------
# rw30() |> visualize_walks(.interactive = TRUE)
## ----pluck_example, fig.alt="Single panel visualization showing cumulative sum"----
# Single panel
random_normal_walk() |> visualize_walks(.pluck = "cum_sum_y")
## ----pluck_multiple, fig.alt="Multiple panel visualization showing y, cumulative sum, and cumulative mean"----
# Multiple panels
random_normal_walk() |> visualize_walks(.pluck = c("y", "cum_sum_y", "cum_mean_y"))
## ----alpha_example, eval=FALSE------------------------------------------------
# rw30() |> visualize_walks(.alpha = 0.3) # More transparent
# rw30() |> visualize_walks(.alpha = 0.9) # More opaque
## ----export_example, eval=FALSE-----------------------------------------------
# library(ggplot2)
#
# p <- rw30() |> visualize_walks()
# ggsave("my_plot.png", p, width = 12, height = 8, dpi = 300)
## ----colors_example, fig.alt="Random walk with custom color palette"----------
p <- random_normal_walk(.num_walks = 5) |>
visualize_walks(.pluck = "y")
p + scale_color_viridis_d()
## ----summary_example----------------------------------------------------------
walks <- rw30()
# Overall summary
walks |> summarize_walks(.value = y)
## ----summary_by_walk----------------------------------------------------------
# By walk
walks |> summarize_walks(.value = y, .group_var = walk_number) |> head()
## ----subset_example, fig.alt="Maximum and minimum walks visualization"--------
walks <- rw30()
# Get walk with maximum final value
max_walk <- walks |> subset_walks(.value = "y", .type = "max")
# Get walk with minimum final value
min_walk <- walks |> subset_walks(.value = "y", .type = "min")
# Visualize both walks together
combined <- dplyr::bind_rows(
dplyr::mutate(max_walk, type = "Maximum"),
dplyr::mutate(min_walk, type = "Minimum")
)
visualize_walks(combined, .pluck = "y") +
ggplot2::facet_wrap(~type)
## ----speed_example, eval=FALSE------------------------------------------------
# # Sample walks
# walks_large |>
# filter(walk_number %in% sample(levels(walk_number), 50)) |>
# visualize_walks(.alpha = 0.2)
#
# # Downsample steps
# walks_large |>
# filter(step_number %% 10 == 0) |>
# visualize_walks()
## ----parallel_example, eval=FALSE---------------------------------------------
# library(future)
# library(furrr)
#
# plan(multisession, workers = 4)
#
# walks_list <- future_map(1:10, ~random_normal_walk(.num_walks = 100), .options = furrr_options(seed = 123))
## ----attributes_example-------------------------------------------------------
walks <- rw30()
atb <- get_attributes(walks)
names(atb)
## ----convert_example, eval=FALSE----------------------------------------------
# # To base R data.frame
# as.data.frame(walks)
#
# # To matrix (values only)
# walks |> select(y) |> as.matrix()
#
# # To time series
# ts(walks$y, frequency = 1)
#
# # To wide format
# walks |> tidyr::pivot_wider(names_from = walk_number, values_from = y)
## ----error_example1, eval=FALSE-----------------------------------------------
# # Wrong
# walks |> summarize_walks()
#
# # Correct
# walks |> summarize_walks(.value = y)
## ----error_example2, eval=FALSE-----------------------------------------------
# walk_2d <- random_normal_walk(.dimensions = 2)
#
# # Wrong
# walk_2d |> summarize_walks(.value = y)
#
# # Correct
# walk_2d |> summarize_walks(.value = cum_sum_y)
## ----dplyr_example------------------------------------------------------------
library(dplyr)
random_normal_walk(.num_walks = 10) |>
filter(step_number > 50) |>
mutate(positive = cum_sum_y > 0) |>
group_by(walk_number) |>
summarize(prop_positive = mean(positive))
## ----shiny_example, eval=FALSE------------------------------------------------
# library(shiny)
# library(RandomWalker)
#
# ui <- fluidPage(
# numericInput("num_walks", "Number of Walks:", 10),
# plotOutput("walks_plot")
# )
#
# server <- function(input, output) {
# output$walks_plot <- renderPlot({
# random_normal_walk(.num_walks = input$num_walks) |>
# visualize_walks(.pluck = "cum_sum_y")
# })
# }
#
# shinyApp(ui, server)
## ----ggplot2_example, fig.alt="Custom ggplot2 theme applied to random walk"----
library(ggplot2)
p <- rw30() |> visualize_walks(.pluck = "y")
# Customize further
p +
labs(title = "My Custom Title") +
theme_bw()
## ----stock_example, fig.alt="Stock price simulation using geometric Brownian motion"----
stock_prices <- geometric_brownian_motion(
.num_walks = 100,
.n = 252, # Trading days
.mu = 0.08, # 8% expected return
.sigma = 0.25, # 25% volatility
.initial_value = 100
)
visualize_walks(stock_prices)
## ----particle_example, eval=FALSE---------------------------------------------
# particles <- brownian_motion(
# .num_walks = 50,
# .n = 1000,
# .dimensions = 3
# )
## ----algorithm_example, eval=FALSE--------------------------------------------
# # Generate test walks
# test_data <- discrete_walk(
# .num_walks = 1000,
# .n = 100,
# .upper_probability = 0.5
# )
#
# # Run your algorithm
# result <- my_algorithm(test_data)
## ----citation_example, eval=FALSE---------------------------------------------
# citation("RandomWalker")
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.