刚入手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");
结果输出图片: