其他分享
首页 > 其他分享> > R语言水文序列突变点检验之滑动平均差法

R语言水文序列突变点检验之滑动平均差法

作者:互联网

刚入手R语言,代码有些无脑,仅做参考。

下面展示一些 内联代码片

#滑动平均差法
Q <- read.csv("D:/1Study/Thesis/program/hydata.csv")
n <- length(Q$Runoff)
p <- 22 #假定时间序列周期
Moavse <- function(Q,n,p){
  MU <- vector(length=n-1)
  MD <- vector(length=n-1)
  detaM <- vector(length=n-1)
  k <- 0
  for(i in 2:n){
    if(p>=i-1){
      k <- i-1
    }else(k <- p)
    MU[i] <- 1/k*(sum(Q[c((i-k):(i-1))]))#正向滑动序列
    if(p>=n-i+1){
      k <- n-i+1
    }else(k <- p)
    MD[i] <- 1/k*(sum(Q[c(i:(i+k-1))]))#逆向滑动序列
  }
  detaM <- abs(MU-MD)
  results <- cbind(MU,MD,detaM)
  return(results)
}
detaQr <- Moavse(Q$Runoff,n,p)
par(mfrow=c(1,1))
plot(x=Q$year,y=detaQr[,2],lty=2,lwd=2,xlab = "时间",ylab="检测值",type="l")
lines(Q$year,detaQr[,1],col="black",lty=2,lwd=2)
lines(Q$year,detaQr[,3],col="red",lwd=2,type="b");

结果输出图片:
在这里插入图片描述

标签:语言,代码,平均差,MU,无脑,滑动,突变
来源: https://blog.csdn.net/weixin_46777141/article/details/114630026