アットウィキロゴ

時系列4

package arima;
 
import tool.*;
 
 
public class pro {
 
int s,datanumber,sx;
      String[] data=new String[50000];
    int[] point=new int[500];
      int[] month=new int[500];
    String file;
    int n;
      double[][] x=new double[500][13];
      double[] y=new double[500];
     double[] y1=new double[500];
      int number;
     double[] trend=new double[500];
        double[] e=new double[500];
 
 
     double[] sol=new double[20];
      double[] season=new double[20];
 
    public static void main(String[] args) {
       pro test=new pro();
    }
 
    pro(){
 
        file="data.csv";
 
    readfile sub=new readfile();
      sub.makedata(file,"UTF-8");
      data=sub.data;
      datanumber=sub.datanumber;
 
      int m1;
 
    m1=12;  
    for(s=2;s<datanumber+1;s++){
     String[] x=data[s].split(","); 
    n=Integer.parseInt(x[1]);
    point[s-1]=n;
    m1=m1+1;
    if(m1>12)m1=1;
    month[s-1]=m1;
    }
 
    datanumber=datanumber-1;
 
    for(s=1;s<13;s++){
    season[s]=0;
    }
 
    int page;
 
 
    for(page=1;page<100;page++){
 
    for(s=1;s<datanumber+1;s++){
    m1=month[s];
   y[s]=point[s]-season[m1];
    }
 
    int s1;
 
   for(s=1;s<datanumber-11;s++){
   for(sx=1;sx<13;sx++){
  s1=s-sx; 
  if(s1<1)s1=1;
  x[s][sx]=y[s1];
   }  
   }
 
    ols sub2=new ols();
    sub2.x=x;
    sub2.y=y;
    sub2.datanumber=datanumber;
    sub2.makedata();
    sol=sub2.sol;
 
  for(s=1;s<datanumber+1;s++){
  trend[s]=f(s);
  }
 
  for(s=1;s<datanumber+1;s++){
  e[s]=point[s]-trend[s];
  }
 
  int x1;
  double x2;
 
   for(m1=1;m1<13;m1++){
  x1=0;
  x2=0;
  for(s=1;s<datanumber+1;s++){   
  if(month[s]==m1)x1=x1+1;
   if(month[s]==m1)x2=x2+e[s];
   }
   season[m1]=x2/x1;  
   }
 
   x2=0;
   for(m1=1;m1<13;m1++){
   x2=x2+season[m1];
   }
 
 x2=x2/12;
   for(m1=1;m1<13;m1++){
   season[m1]=season[m1]-x2;
   }
 
   System.out.println(season[6]);
 
 
    }
 
 double p1;
 
    for(s=1;s<datanumber+1;s++){
    m1=month[s];
    p1=point[s];
    System.out.println(p1-season[m1]);
    }
 
 
 
 
 
 
 
    }
double f(int s){
int sx,s1;
double f1;
    f1=0;
for(sx=1;sx<13;sx++){
s1=s-sx;
if(s1<1)s1=1;
f1=f1+sol[sx]*y[s1];    
}
return f1;
}
 
}
 
最終更新:2014年02月24日 13:25