设为首页收藏本站获取积分奖励

R语言中文网

 找回密码
 立即注册
查看: 8265|回复: 5

[实例投稿提交] 自适应过滤法R语言程序

[复制链接]
发表于 2014-4-27 20:21:43 | 显示全部楼层 |阅读模式
  1. weight<-function(x,p,k,times,mse=0.05){
  2.     biaozhun<-function(x,p){    ##标准化函数
  3.        n<-length(x)
  4.        a=b=rep(NA,n)
  5.        y=matrix(data=NA,nrow=n,ncol=p+1)
  6.           for(t in (p+1):n){
  7.              a[t]=sum(x[(t-1):(t-p)]^2)
  8.              b[t]=(a[t])^(1/2)
  9.                 for(j in 0:p){
  10.                    y[t,j+1]=x[t-j]/b[t]
  11.                 }
  12.           }
  13.       out<-data.frame(x,a,b,y)
  14.       return(out)
  15.     }
  16.    y=biaozhun(x,2)[4:6]    ##提取标准化后值
  17.    mse1<-function(x,y){     ##计算mse函数
  18.       e=NA;
  19.       e=x-y
  20.       mse=mean(e^2,na.rm=TRUE)
  21.       return(mse)
  22.      }
  23.     a=rep(1/p,p)           ##总函数参数初始化
  24.     if (k=='NA' ){k=ceiling(1/sum(sort(-y[,1])[1:p]^2))}
  25.     MSE=5
  26.     n=proc1=0  
  27.     mm=list()
  28.     proc=e=matrix(NA,nrow=nrow(y))     
  29.     while(MSE >= mse){
  30.        for(t in (p+1):nrow(y)){
  31.             proc[t]=sum(a[1:p]*y[t,2:(p+1)])
  32.             e[t]=y[t,1]-proc[t]
  33.             for(j in 1:p){
  34.              a[j]=a[j]+2*k*e[t]*y[t,j+1]
  35.                }
  36.             }
  37.          n=n+1
  38.          MSE=mse1(y[,1],proc)
  39.          mm[[n]]=data.frame(y,proc,e,rep(MSE,nrow(y)))
  40.          names(mm)=paste(rep("第",n),1:n,rep("次迭代",n))
  41.        }
  42.     proc1=sum(a[1:p]*x[length(x):(length(x)-p+1)])
  43.     m=list(mm,a,k,n,proc1)
  44.     names(m)=c('迭代摘要','fai参数值','k值','迭代次数','下期预测值')
  45.     return(m)
  46.   }
复制代码
使用示例:
  1. x<-c(3.21,2.65,4.12,4.30,4.72,4.19,3.85,2.52,3.91,3.36)
  2. weight(x,2,k=0.5,mse=0.03)
复制代码
回复

使用道具 举报

发表于 2014-10-24 10:57:21 | 显示全部楼层
很好很强大,谢谢作者的无私奉献
回复 支持 反对

使用道具 举报

发表于 2015-3-10 14:41:17 | 显示全部楼层
很强大啊,厉害
回复 支持 反对

使用道具 举报

发表于 2015-3-26 17:00:41 | 显示全部楼层
楼主能解释一下吗?
回复 支持 反对

使用道具 举报

发表于 2016-3-25 16:53:17 | 显示全部楼层
为什么第25行要定义MSE为5?还有那个均方误差公式应该错了,应该还要除以自由度n-p,您再看一哈书呢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Archiver|R语言中文网    

GMT+8, 2024-5-1 14:57 , Processed in 0.043837 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表