首页 > 解决方案 > 如何生成两个遵循相似(但不相等)正弦形式的随机数序列?

问题描述

我想创建一个模拟图,其中我代表两个设备,它们随着时间的推移测量水中不同深度的温度。假设dev.1(记录 10 米深度的水温)和dev.2(记录 30 米深度的水温)。因为它是一个模拟(我的目标是说明一些在这里无关紧要的东西),我想生成一个数据框,它允许我制作这样一个图:

在此处输入图像描述

正如您在草稿中看到的那样,我想创建两个变量 (dev.1dev.2),其温度(在图中将是value)随时间以正弦方式振荡。如您所见,在这两种设备中,温度变化相似但不相等(这很重要)。

有谁知道我怎么能创建这个数据框?

标签: r

解决方案


library(dplyr)
library(tidyr)
library(ggplot2)

set.seed(1)
t=seq(0,10,0.1)

noise_level = 0.25

dev.1 = sin(t) + 20 + runif(length(t), -noise_level, noise_level)
dev.2 = sin(t) + 25 + runif(length(t), -noise_level, noise_level)

df <- data.frame(t=t, dev.1 = dev.1, dev.2 = dev.2)

df %>% 
  pivot_longer(cols = c(dev.1, dev.2)) %>% 
  ggplot(aes(x = t, y = value, color = name)) +
  geom_line()

您可以更改噪声级别以在正弦波周围实现或多或少的噪声。


推荐阅读