全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
5198 6
2019-04-07

以前上课的时候老师讲过,现在写论文需要用, 为了预测下一时刻数据的数值


rm(list=ls())

filter.self <-function(x,p,q,iter.max=10){

n<-length(x); phi <- rep(1/p,p) ; # 权数初值

x.max <- sum(x[1:p]^2) # 计算学习常数

for(i in 2:(n-p+1)){

temp<- sum(x[i:(i+p-1)]^2)

if(x.max<temp) x.max <- temp

}

k<- 1/x.max; cat("\nLearning constant:",k,"\n")

x.hat <- e <- numeric(n); iter <- 0;cri <- 1; mse <- 0

while(cri>1e-4 &&iter<iter.max){

cat("\n-----------------",iter+1,"th","--------------------------\n")

for(t in p:(n-1)){

x.hat[t+1] <- sum(x[t:(t-p+1)]*phi) # 预测

e[t+1]<- x[t+1]-x.hat[t+1] # 误差

phi<- phi + 2*k*e[t+1]*x[t:(t-p+1)]; cat(“phi:”,phi,“\n”) #更新权数值

}

iter<- iter + 1

cri<- abs(mse - sum(e[-(1:p)]^2)/(n-p)) # 检验mse变化大小

mse<- sum(e[-(1:p)]^2)/(n-p); cat("MSE:",cri,"\n")

}

x<- c(x,rep(0,q))

for(t in n:(n+q-1)){

x[t+1] <- sum(x[t:(t-p+1)]*phi) #预测未来

}

return(x)

}


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2019-4-7 14:21:21
能用spss或者matlab做出来也行
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-4-7 15:02:01
帮你顶一下哈
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-4-7 15:08:19
jiangbeilu 发表于 2019-4-7 15:02
帮你顶一下哈
谢谢老哥
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-4-7 15:48:57
jiangbeilu 发表于 2019-4-7 15:02
帮你顶一下哈
谢谢老哥
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-4-7 22:07:12
湛湛湛 发表于 2019-4-7 15:48
谢谢老哥
你可以把问题补充更详细一点么?

1. 比如你贴出的代码,是干嘛的?

2. 你目前遇到的什么问题?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群