アットウィキロゴ

回帰

package var;
 
 
public class pro {
 
    double[] y=new double[1000];
    double[][] x=new double[1000][10];
    int  s,datanumber,number;
     double[] sol=new double[100];
 
 
    public static void main(String[] args) {
       pro test=new pro();
    }
 
 
  pro(){  
 
   datanumber=100;
   number=3;
 
   for(s=1;s<datanumber+1;s++){
   x[s][2]=Math.random();
   x[s][1]=1;
   x[s][3]=Math.random()-0.5;
   y[s]=4*x[s][3]+20*x[s][2]+5*x[s][1]+(Math.random()-0.5);
   }
 
   ols sub=new ols();
   sub.x=x;
   sub.y=y;
   sub.number=number;
   sub.datanumber=datanumber;
   sub.makedata();
   sol=sub.sol;
 
   System.out.println(sol[1]+","+sol[2]+","+sol[3]);
 
 
 
 
 
 
 
  }
}
 
 
 
package var;
 
 
public class ols {
 
    int s,s1,s2;
    int datanumber,number;
    double x1;
    double[][] a=new double[100][100];
     double[] b=new double[100];
     double[] y=new double[1000];
    double[][] x=new double[1000][10];
     double[] sol=new double[100];
 
    void makedata(){
 
 
 
     for(s1=1;s1<number+1;s1++){
    for(s2=1;s2<number+1;s2++){   
     x1=0;   
    for(s=1;s<datanumber+1;s++){
    x1=x1+x[s][s1]*x[s][s2];
    }
    a[s1][s2]=x1;
    }
    }
 
 
 
    for(s1=1;s1<number+1;s1++){
    x1=0;   
    for(s=1;s<datanumber+1;s++){
    x1=x1+x[s][s1]*y[s];
    }
    b[s1]=x1;
    }
 
    double z;
 
   for(s1=1;s1<number+1;s1++){
   for(s2=1;s2<number+1;s2++){   
   z=a[s2][s1]/a[s1][s1];  
   if(s1==s2)z=0;
   for(s=1;s<number+1;s++){
   a[s2][s]=a[s2][s]-z*a[s1][s];
   } 
   b[s2]=b[s2]-z*b[s1];
   }
   }
 
   for(s1=1;s1<number+1;s1++){
   sol[s1]=b[s1]/a[s1][s1];
   }
 
 
 
 
    }
}
 
最終更新:2014年03月01日 06:32