我试图绘制一条平滑的曲线R.我有以下简单的玩具数据:
> x
[1] 1 2 3 4 5 6 7 8 9 10
> y
[1] 2 4 6 8 7 12 14 16 18 20
Run Code Online (Sandbox Code Playgroud)
现在,当我使用标准命令绘制它时,它看起来很崎岖和前卫,当然:
> plot(x,y, type='l', lwd=2, col='red')
Run Code Online (Sandbox Code Playgroud)
如何使曲线平滑,以便使用估计值对3条边进行舍入?我知道有很多方法可以拟合平滑曲线,但我不确定哪种方法最适合这种类型的曲线以及如何编写它R.
我是R的初学者,我试图在没有找到任何内容的情况下找到有关以下内容的信息.
图中的绿色图由红色和黄色图组成.但是,假设我只有绿色图形的数据点.如何使用低通/高通滤波器提取低/高频率(即大约红/黄图)?

更新:图表是使用生成的
number_of_cycles = 2
max_y = 40
x = 1:500
a = number_of_cycles * 2*pi/length(x)
y = max_y * sin(x*a)
noise1 = max_y * 1/10 * sin(x*a*10)
plot(x, y, type="l", col="red", ylim=range(-1.5*max_y,1.5*max_y,5))
points(x, y + noise1, col="green", pch=20)
points(x, noise1, col="yellow", pch=20)
Run Code Online (Sandbox Code Playgroud)
更新2:使用signal包中的Butterworth过滤器建议我得到以下内容:

library(signal)
bf <- butter(2, 1/50, type="low")
b <- filter(bf, y+noise1)
points(x, b, col="black", pch=20)
bf <- butter(2, 1/25, type="high")
b <- filter(bf, y+noise1)
points(x, b, col="black", pch=20) …Run Code Online (Sandbox Code Playgroud)