在r中平滑绘图

在r中平滑绘图,r,plot,R,Plot,我有一个时间序列。如果我画这个时间序列,我有这样一个图表 我的数据: 539 532 531 538 544 554 575 571 543 559 511 525 512 540 535 514 524 527 532 547 564 548 572 564 549 532 519 520 520 543 550 542 528 523 531 548 554 574 575 560 534 518 511 519 527 554 543 527 540 524 523 539 569 55

我有一个时间序列。如果我画这个时间序列,我有这样一个图表

我的数据:

539 532 531 538 544 554 575 571 543 559 511 525 512 540
535 514 524 527 532 547 564 548 572 564 549 532 519 520
520 543 550 542 528 523 531 548 554 574 575 560 534 518
511 519 527 554 543 527 540 524 523 539 569 552 553 540
522 522 492 519 532 527 532 550 535 517 551 548 571 574
539 535 515 512 510 527 533 543 540 533 519 539 555 542
574 543 555 539 507 522 518 519 516 546 523 530 532 539
540 568 554 563 550 526 509 492 525 519 527 526 515 530
531 553 563 562 576 568 539 516 512 500 516 542 522 527
523 531

如何平滑此图,要更清楚地查看sin函数

您可以使用任意R软件包中的平滑函数。基本上,您可以执行类似于ARIMA模型的移动平均函数

这个场景非常容易探索(我希望这对您有所帮助):

#读取数据

cd4Data您可以使用任意R包中的平滑函数。基本上,您可以执行类似于ARIMA模型的移动平均函数

这个场景非常容易探索(我希望这对您有所帮助):

#读取数据

cd4Data以下是一些让您开始学习的内容

df <- data.frame(index=1:length(values),values)
# loess smoothing; note the use of predict(fit)
fit.loess <- loess(values~index,df,span=.1)
plot(df, type="l", col="blue",main="loess")
lines(df$index,predict(fit.loess),col="red")

df以下是一些让您开始学习的东西

df <- data.frame(index=1:length(values),values)
# loess smoothing; note the use of predict(fit)
fit.loess <- loess(values~index,df,span=.1)
plot(df, type="l", col="blue",main="loess")
lines(df$index,predict(fit.loess),col="red")

df谢谢你的回答。我不明白你的代码,但很好的提示。我想使用
平滑
函数,如
lowess
,但输出不是我想要的。我已经更新了我的帖子,你可以看到我的Data@Kaja这就是为什么展示你已经尝试过的东西是一种很好的做法。如果您想使用
lowss
但输出有问题,请尝试提问,我们可以解决您的问题,而不是从头开始。谢谢您的回答。我不明白你的代码,但很好的提示。我想使用
平滑
函数,如
lowess
,但输出不是我想要的。我已经更新了我的帖子,你可以看到我的Data@Kaja这就是为什么展示你已经尝试过的东西是一种很好的做法。如果您想使用
lowess
但输出有问题,请尝试解决问题,我们可以解决您的问题,而不是从头开始。我们是否可以说,原始时间序列由两个频率组成:第一个频率为8 Hz,第二个频率为16 Hz?我们是否可以说,原始时间序列由两个频率组成:第一个频率为8 Hz,第二个频率为16 Hz?
# non-linear regression usign a single sine term
fit.nls <- nls(values~a*sin(b*index+c)+d,df,
           start=c(a=1000,b=pi/10,c=0,d=mean(df$values)))
plot(df, type="l", col="blue",main="sin [1 term]")
lines(df$index,predict(fit.nls),col="red")
# non-linear regression using 2 sine terms
fit.nls <- nls(values~a1*sin(b1*index+c1)+a2*sin(b2*index+c2)+d,df,
               start=c(a1=1000,b1=pi/10,c1=1,
                       a2=1000,b2=pi/2,c2=1,d=mean(df$values)))
plot(df, type="l", col="blue",main="sin [2 terms]")
lines(df$index,predict(fit.nls),col="red")