R 中的随机游走和高斯(正态)分布
Random Walks and Gaussian (Normal) Distribution in R
我对 R 编码(一般编码)还很陌生。我在以下代码中使用随机游走创建了一个分布:
set.seed(124)
norm <- rnorm(1000)
mean(norm)
mean(norm)^2
sd(norm)
d <- density(norm)
plot(d)
现在我想使用上述分布创建一个 n 步函数。该函数根据从中心向左或向右移动 n 步的概率计算期望值。我不知道从哪里开始。
任何方向将不胜感激。
谢谢
如果每个正态分布变量都是您的步长(正向右移动,负向左移动),那么您随机抽取的累积总和代表您当前的位置。您可以使用 R:
中的 cumsum
函数计算它
set.seed(144)
pos <- cumsum(rnorm(1000))
plot(seq_along(pos), pos, xlab="Step Number", ylab="Current Position")
使用replicate
和逻辑运算,您可以模拟任意数量的关于随机游走的不同问题。例如 "with what probability does the value of the random walk exceed 100 within the first 1000 steps" 可以模拟为:
set.seed(144)
exceed.100 <- replicate(100000, any(cumsum(rnorm(1000)) >= 100))
mean(exceed.100)
# [1] 0.00173
从这 100k 次重复中,看起来随机游走在前 1000 步中超过 100 的概率约为 0.17%。
我对 R 编码(一般编码)还很陌生。我在以下代码中使用随机游走创建了一个分布:
set.seed(124)
norm <- rnorm(1000)
mean(norm)
mean(norm)^2
sd(norm)
d <- density(norm)
plot(d)
现在我想使用上述分布创建一个 n 步函数。该函数根据从中心向左或向右移动 n 步的概率计算期望值。我不知道从哪里开始。
任何方向将不胜感激。
谢谢
如果每个正态分布变量都是您的步长(正向右移动,负向左移动),那么您随机抽取的累积总和代表您当前的位置。您可以使用 R:
中的cumsum
函数计算它
set.seed(144)
pos <- cumsum(rnorm(1000))
plot(seq_along(pos), pos, xlab="Step Number", ylab="Current Position")
使用replicate
和逻辑运算,您可以模拟任意数量的关于随机游走的不同问题。例如 "with what probability does the value of the random walk exceed 100 within the first 1000 steps" 可以模拟为:
set.seed(144)
exceed.100 <- replicate(100000, any(cumsum(rnorm(1000)) >= 100))
mean(exceed.100)
# [1] 0.00173
从这 100k 次重复中,看起来随机游走在前 1000 步中超过 100 的概率约为 0.17%。