Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.width = 7,
fig.height = 5,
fig.alt = "Random walk visualization showing discrete distribution behavior"
)
## ----setup, echo=FALSE, message=FALSE-----------------------------------------
library(RandomWalker)
library(dplyr)
library(ggplot2)
## ----discrete_walk_example, fig.alt="Unbiased discrete random walk showing symmetric up and down movements"----
# Unbiased walk (50/50)
discrete_walk(
.num_walks = 10,
.n = 100,
.upper_probability = 0.5
) |> visualize_walks()
## ----discrete_walk_biased, fig.alt="Biased discrete walk showing upward trend with 60% probability"----
# Biased upward (60% up, 40% down)
discrete_walk(
.num_walks = 10,
.n = 100,
.upper_probability = 0.6
) |> visualize_walks()
## ----discrete_walk_gambler, fig.alt="Gambler's ruin simulation showing multiple walks starting at 100"----
# Gambler's ruin simulation
gambler <- discrete_walk(
.num_walks = 100,
.n = 1000,
.upper_bound = 1,
.lower_bound = -1,
.upper_probability = 0.48, # House edge
.initial_value = 100
)
gambler |>
summarize_walks(.value = cum_sum_y, .group_var = walk_number) |>
summarize(
prob_ruin = mean(min_val <= 0),
avg_final = mean(max_val)
)
## ----binomial_walk_example, fig.alt="Binomial random walk with 10 coin flips per step showing symmetric behavior"----
# Fair coin flips (10 per step)
random_binomial_walk(
.num_walks = 10,
.size = 10,
.prob = 0.5
) |> visualize_walks()
## ----binomial_walk_defects, fig.alt="Quality control simulation using binomial distribution"----
# Quality control simulation
defects <- random_binomial_walk(
.num_walks = 50,
.n = 100,
.size = 100, # Batch size
.prob = 0.05 # 5% defect rate
)
defects |>
summarize_walks(.value = y, .group_var = walk_number) |>
summarize(
avg_defects_per_batch = mean(mean_val),
max_defects = max(max_val)
)
## ----geometric_walk_example, fig.alt="Geometric random walk with high probability showing short waiting times"----
# High probability (short waits)
random_geometric_walk(
.num_walks = 10,
.prob = 0.8
) |> visualize_walks()
## ----geometric_walk_conversion, fig.alt="Customer conversion modeling using geometric distribution"----
# Customer conversion modeling
conversion <- random_geometric_walk(
.num_walks = 100,
.n = 50,
.prob = 0.05 # 5% conversion rate
)
conversion |>
summarize_walks(.value = y) |>
pull(mean_val) # Average trials until conversion
## ----hypergeometric_walk_example, fig.alt="Hypergeometric random walk simulating drawing from an urn"----
# Drawing from an urn
random_hypergeometric_walk(
.num_walks = 10,
.m = 50, # 50 white balls
.n = 50, # 50 black balls
.k = 10 # Draw 10 balls
) |> visualize_walks()
## ----hypergeometric_walk_inspection, fig.alt="Quality inspection using hypergeometric distribution"----
# Quality inspection
inspection <- random_hypergeometric_walk(
.num_walks = 100,
.nn = 50,
.m = 5, # 5 defective items
.n = 95, # 95 good items
.k = 10 # Sample 10 items
)
inspection |>
summarize_walks(.value = y) |>
pull(mean_val) # Average defects found per sample
## ----multinomial_walk_example, fig.alt="Multinomial random walk simulating dice rolling outcomes"----
# Dice rolling (6 outcomes)
random_multinomial_walk(
.num_walks = 10,
.n = 100, # Roll 100 times
.size = 1, # One die per roll
.prob = rep(1/6, 100) # Fair die: 6 categories
) |> visualize_walks()
## ----multinomial_walk_market, fig.alt="Market share simulation using multinomial distribution"----
# Market share simulation
market_share <- random_multinomial_walk(
.num_walks = 50,
.n = 52, # Weekly for a year
.size = 1000, # Total customers
.prob = rep(c(0.2, 0.2, 0.35, 0.25), 13) # Four competitors
)
market_share |> visualize_walks()
## ----negbinomial_walk_example, fig.alt="Negative binomial random walk showing overdispersed count data"----
# Standard negative binomial
random_negbinomial_walk(
.num_walks = 10,
.size = 10,
.prob = 0.5
) |> visualize_walks()
## ----negbinomial_walk_claims, fig.alt="Insurance claims modeling using negative binomial distribution"----
# Overdispersed count data
claims <- random_negbinomial_walk(
.num_walks = 100,
.n = 12, # Monthly
.size = 5,
.prob = 0.3
)
claims |>
summarize_walks(.value = y, .group_var = walk_number) |>
summarize(
avg_monthly_claims = mean(mean_val),
sd_monthly_claims = mean(sd)
)
## ----poisson_walk_example, fig.alt="Poisson random walk with low rate showing rare events"----
# Low rate (rare events)
random_poisson_walk(
.num_walks = 10,
.lambda = 0.5
) |> visualize_walks()
## ----poisson_walk_arrivals, fig.alt="Call center arrivals modeled using Poisson distribution"----
# Call center arrivals
arrivals <- random_poisson_walk(
.num_walks = 100,
.n = 24, # Hourly for a day
.lambda = 15 # 15 calls per hour average
)
arrivals |>
summarize_walks(.value = cum_sum_y, .group_var = walk_number) |>
summarize(
avg_daily_calls = mean(max_val),
max_daily_calls = max(max_val),
min_daily_calls = min(max_val)
)
## ----wilcox_walk_example, fig.alt="Wilcoxon rank sum random walk for nonparametric testing"----
random_wilcox_walk(
.num_walks = 10,
.m = 20,
.k = 10
) |> visualize_walks()
## ----wilcoxon_sr_walk_example, fig.alt="Wilcoxon signed rank random walk for paired samples testing"----
random_wilcoxon_sr_walk(
.num_walks = 10,
.n = 20
) |> visualize_walks()
## ----smirnov_walk_example, fig.alt="Smirnov distribution random walk for goodness-of-fit testing"----
random_smirnov_walk(
.num_walks = 10,
.sizes = c(5,10)
) |> visualize_walks()
## ----traffic_example, fig.alt="Website traffic modeling using Poisson distribution"----
# Daily page views (Poisson)
traffic <- random_poisson_walk(
.num_walks = 100,
.n = 365, # Days in year
.lambda = 1000 # Average daily views
)
# Visualize cumulative page views for a sample of walks
traffic |>
dplyr::filter(walk_number %in% levels(traffic$walk_number)[1:10]) |>
visualize_walks(.pluck = "cum_sum_y") +
ggplot2::labs(
title = "Cumulative Website Page Views (Poisson Random Walk)",
x = "Day",
y = "Cumulative Page Views"
)
# Compute total annual views (summary statistic)
traffic |>
summarize_walks(.value = cum_sum_y) |>
dplyr::pull(max_val) |>
mean() # Total annual views
## ----quality_example, fig.alt="Quality control using hypergeometric distribution"----
# Defect sampling (Hypergeometric)
quality <- random_hypergeometric_walk(
.num_walks = 1000,
.nn = 50, # 50 inspections
.m = 10, # 10 defective in lot
.n = 90, # 90 good in lot
.k = 5 # Sample 5 items
)
quality |>
summarize_walks(.value = y, .group_var = walk_number) |>
dplyr::summarize(
prob_find_defect = mean(max_val > 0)
)
## ----customer_service_example, fig.alt="Customer service call resolution using geometric distribution"----
# Calls until resolution (Geometric)
resolution <- random_geometric_walk(
.num_walks = 500,
.n = 100,
.prob = 0.15 # 15% resolution rate per call
)
resolution |>
summarize_walks(.value = y) |>
pull(mean_val) # Average calls until resolution
## ----validation_example, fig.alt="Distribution validation showing mean-variance relationship"----
# Check if distribution fits your expectations
walk <- random_poisson_walk(.num_walks = 1000, .n = 100, .lambda = 5)
walk |>
summarize_walks(.value = y) |>
summarize(
empirical_mean = mean_val,
empirical_var = variance,
ratio = variance / mean_val # Should be ≈ 1 for Poisson
)
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.