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");

结果输出图片:
R语言水文序列突变点检验之滑动平均差法

上一篇:西瓜书笔记--第三章 线性模型


下一篇:C++多线程编程(互斥锁、条件变量)