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