首页 > 解决方案 > R中的随机游走模拟

问题描述

我正在尝试在 R 中绘制多个简单的随机游走,但这样做有问题。

请注意,简单的随机游走是指随机变量的总和,可以是 {-1} 或 {1},每个值具有相同的概率,而不是一些基于白噪声的随机游走。(参见https://en.wikipedia.org/wiki/Random_walk#One-dimensional_random_walk上的定义)

我使用以下代码来绘制随机游走:

set.seed(1)

n <- 200
Random_Walk<- cumsum(sample(c(-1, 1), n, TRUE))

n <- 200
Random_Walk_2 <- cumsum(sample(c(-1, 1), n, TRUE))


ts.plot(Random_Walk, gpars=list(xlab="Length of Random Walk", ylab="Distance from origin",lty=c(1:1)))

这段代码工作正常,但是一旦我尝试在同一个图中绘制两个随机游走,它就会中断。有人可以解释我如何在一个图中绘制它们甚至多个随机游走吗?

此外,我想知道是否有一些工具可以为我提供所有这些随机游走的方差或标准偏差

谢谢大家!!

标签: rmathsimulationprobabilityrandom-walk

解决方案


这是一个可能的解决方案R-base

plot(Random_Walk, type = "l", xlim = c(0, 200), ylim = c(-15, 15), 
     col = "blue", xlab = "n", ylab = "Rw")
par(new=T)
plot(Random_Walk_2, type = "l", xlim = c(0, 200), ylim = c(-15, 15), 
     col = "red", xlab = "n", ylab = "Rw")

这是一个可能的解决方案ggplot2

library(ggplot2)

df_rw <- data.frame(n = 1:200, r1 = Random_Walk, r2 = Random_Walk_2)

ggplot(df_rw) + 
  geom_line(aes(n, r1), col = "blue") + 
  geom_line(aes(n, r2), col = "red") + 
  labs(x = "n", y = "Rw")

这是另一种可能的解决方案ggplot2

library(ggplot2)

df_rw2 <- data.frame(n = c(1:200, 1:200), 
                     rw = c(Random_Walk, Random_Walk_2), 
                     lab = rep(c("Random Walk 1", "Random Walk 2"), each = 200))

ggplot(df_rw2) + 
  geom_line(aes(x = n, y = rw, color = lab)) + 
  scale_color_manual(values = c("red", "blue"))

推荐阅读