Friday, 10 May 2013

Contoh Program Regresi

import java.util.Scanner;

class Regresi {
    Scanner input = new Scanner(System.in);
    double[] x;
    double[] y;
    double[] x2;
    double[] y2;
    double[] xy;
    int n;
    double a1,a0,b1,b0,r;
   
    public Regresi()    {
        menu(); }
   
    public void menu() {
        System.out.println("------------------");
        System.out.println("| Menu Utama     |");
        System.out.println("| 1. Input       |");
        System.out.println("| 2. Regresi Y-X |");
        System.out.println("| 3. Regresi X-Y |");
           System.out.println("| 4. Korelasi    |");
        System.out.println("| 5. Keluar      |");
        System.out.println("------------------");
        System.out.print("Masukkan Pilihanmu  : " );
        int pil = input.nextInt();
        switch(pil)    {
            case 1:
                clean();
                 try{
                 input();    }
                catch(IndexOutOfBoundsException ex){
                 System.out.println("Ada Kesalahan pada proses IO"); }
                clean();
                menu();
           
           case 2:
               clean();
               regresiYX();
            menu();
           
           case 3:
               clean();
               regresiXY();
               menu();
                        
           case 4:
               clean();
               Korelasi();
               menu();
           
           default:
           System.exit(0);    }
    }
   
     public void clean() {
       for (int i=0;i<=20;i++) {
              System.out.println("\n"); }
    }
    public void input()    {
        System.out.print("masukan jumlah data :");
        n = input.nextInt();
        x= new double[n];
        y= new double[n];
        x2 = new double[n];
        y2=new double[n];
        xy=new double[n];
       
        System.out.print("\nmasukkan data x :\n");
        for(int i=0;i<n;i++)    {
            System.out.print("data ke-"+(i+1)+":");
            x[i]= input.nextInt();    }
       
        System.out.println("\nmasukkan data y :");
        for(int i=0;i<n;i++)    {
            System.out.print("data ke-"+(i+1)+":");
            y[i]= input.nextInt();    }
      
       for(int i=0 ; i<n;i++)   {
           x2[i]=Math.pow(x[i],2);
           y2[i]=Math.pow(y[i],2);
           xy[i]= x[i] * y[i] ;   }
    }

   
    public double sigma(double k[])    {
       double data = 0;
        for(int i=0; i<n;i++)    {
         data = data + k[i]; }
       return(data); }
    
     public void regresiYX() {
     a1 = ((n*sigma(xy)) - (sigma(x) * sigma(y))) / ((n*sigma(x2))-Math.pow(sigma(x),2));
     a0 = ((sigma(y) * sigma(x2)) - (sigma(x) * sigma(xy))) / ((n*sigma(x2))-Math.pow(sigma(x),2));
     System.out.println("Persamaan Regrsi Y terhadap X");
         
     if (a1> 0)
     System.out.println("Y = "+a0+" + "+a1+"x");
     else
     System.out.println("Y = "+a0+a1+ "x"); }
    
     public void regresiXY()  {
      b1 = ((n*sigma(xy)) - (sigma(y) * sigma(x))) / ((n*sigma(y2))-Math.pow(sigma(y),2));
      b0 = ((sigma(x) * sigma(y2)) - sigma(y) * sigma(xy)) / (n* sigma(y2)-Math.pow(sigma(y),2));
      System.out.println("Persamaan Regresi X terhadap Y");
     
      if (b1>0)
      System.out.println("X = "+b0+" + "+b1+"y");
      else
    System.out.println("X = "+b0+b1+"y"); }

     public void Korelasi() {
      r = ((n*(sigma(xy))) - (sigma(x) * sigma(y))) / (Math.sqrt(n*(sigma(x2)))-Math.pow(sigma(x),2))*(Math.sqrt(n*(sigma(y2)))-Math.pow(sigma(y),2));
      System.out.println("Nilai Korelasi adalah ");
      System.out.println("r = "+r+" ");     }   
   
   
    public static void main(String[] args)     {
        new Regresi();     }
    }





LOGIKA PROGRAM:
import java.util.Scanner;
program ini digunakan untuk berinteraksi dengan user, karna akan banyak inputan yang dimasukan user didalam program ini. (Import java untuk fungsi meminta inputan user)

class Regresi {
    Scanner input = new Scanner(System.in);
    double[] x;
    double[] y;
    double[] x2;
    double[] y2;
    double[] xy;
    int n;

Perintah diatas merupakan kelas yang diberi nama Regresi, dan terdapat pendeklarasian variable yang akan digunakan dalam program yang bertipe data double dan integer. Didalamnya juga terdapat method dimana didalamnya akan memanggil fungsi menu.


double a1,a0,b1,b0,r;      
  public Regresi()               {
                  menu(); }
   Penggalan program ini digunakan untuk membuat pengulangan pada variabel dan membuat subclass regresi dan didalam nya terdapat Didalamnya juga terdapat method dimana didalamnya akan memanggil fungsi menu.    





public void menu() {
            System.out.println("------------------");
System.out.println("| Menu Utama     |");
System.out.println("| 1. Input       |");
System.out.println("| 2. Regresi Y-X |");
System.out.println("| 3. Regresi X-Y |");
System.out.println("| 4. Korelasi    |");
System.out.println("| 5. Keluar      |");
System.out.println("------------------");
System.out.print("Masukkan Pilihanmu  : " );
Duganakan untuk menampilakan program agar dapat berinteraksi dengan si pengguna dengan menampilkan beberapa outputan, yaitu menu utama, input, Regresi X-y, Regresi Y-X, korelasi dan kelaur. Jika si user memilih salah satu dari menu tersebut inputan akan dimasukan dan disimpan pada variabel menu dengan selanjutnya akan diproses oleh program.

int pil = input.nextInt();
                switch(pil)         {
   Membuat variable baru dengan nama “nilai” bertipe integer digunakan untuk menampung data masukan dari keyboard. SWITCH tidakdapat membandingkan syarat-syarat lain seperti <, >, =, != dsb. yang bisa di bandingkan adalah langsung kedalam konstanta yang ada. misalnya didalam SWITCH tersimpan variabel A maka yang menjadi konstanta juga A dalam penggalan program diatas switch berisi pilihan.






case 1:
                clean();
try{

                input();                }
                                catch(IndexOutOfBoundsException ex){
                System.out.println("Ada Kesalahan pada proses IO"); }
                clean();
                menu();
Case 1 digunakan untuk menjalankan program menu yang pertama, di case1 ini fungsi clean digunakan untuk membersihkan layar saat program dijalankan kemudian memanggil fungsi input, di dalam case ini pun terdapat blok try catch yang dimana akan mendeteksi kesalahan jika ada, jika program menemukan keselahan maka akan tercetak “Kesalahan pada proses IO” kemudian memanggil fungsi clean lagi dan menjalankan fungsi menu untuk menampilkan menu pilihan kembali                                  
                   case 2:
                                clean();
                                regresiYX();
                    menu();
Case 2 digunakan untuk menjalankan menu pilihan yang kedua dimana didalamnya terdapat fungsi clean dan memanggil fungsi RegresiYX , kemudian menjalankan fungsi menu lagi.                          
                   case 3:
                                clean();
                                regresiXY();
                                menu();
 case 3 digunakan untuk menjalankan menu pilihan yang ketiga sama dengan penggalan program sebelumnya program akan melakukan pengosongan layar dan akan memanggil fungsi dari regresiXY, setelahnya akan kembali ke menu.
                                      
                    case 4:
                                 clean();
                                 Korelasi();
                                 menu();
Case 4 ini digunakan untuk menjalankan menu pilihan yang ke empat dimana didalamnya terdapat fungsi clean dan memanggil fungsi hitungan Korelasi, kemudian menjalankan fungsi menu lagi.
                                               
                     default:
     System.exit(0);             }
  }
Program ini digunakan untuk keluar program jika si user salah melakukan masukan.

   public void clean() {
  for (int i=0;i<=20;i++) {
                  System.out.println("\n"); }
  }
Blok perintah diatas merupakan method dari fungsi clean yang digunakan untuk menghapus layar saat program sedang dijalankan, dalam perintah diatas akan mencetak spasi sebanyak 20 baris dengan melakukan perulangan yang ada.
                public void input()         {
                                System.out.print("masukan jumlah data :");
                                n = input.nextInt();
                                x= new double[n];
Blok perintah diatas merupakan method dari fungsi input yang digunakan untuk mengiput data yang diperlukan dalam program. Pertama menginputkan banyaknya data dengan menggunakan perintah n = input.nextInt. Kemudian program akan meminta untuk menginputkan data untuk variable X dengan menggunakan perulangan nilai X yang diinputkan sama dengan banyaknya data yang telah diinputkan,
y= new double[n];
x2 = new double[n];
y2=new double[n];
xy=new double[n];
Untuk dapat diinputkan digunakan perintah x[i] = input.nextDouble(). Setelah nilai X diinputkan maka program akan meminta untuk menginputkan nilai Y dengan menggunakan perulangan nilai Y yang diinputkan sama dengan banyaknya data yang telah diinputkan, untuk dapat diinputkan digunakan perintah y[i] = input.nextDouble(). Untuk mendapatkan nilai X2 dan Y2 tinggal dipangkatkan dari jumlah nilai X dan Y, sedangkan untuk mencari nilai XY didapatkan dari hasil perkalian nilai X dengan nilai Y.
System.out.print("\nmasukkan data x :\n");
for(int i=0;i<n;i++)        {
                System.out.print("data ke-"+(i+1)+":");
                x[i]= input.nextInt();     }
Di sana akan diminta memasukan data . dan aka nada penyusunan library secara sederhana untuk menampilkan data ke- dengan niali variabel I sama seperti yang sebelumnya telah tersimpan di variabel I yang ada pada program sebelumnya.
                System.out.println("\nmasukkan data y :");
                for(int i=0;i<n;i++)        {
                                System.out.print("data ke-"+(i+1)+":");
                                y[i]= input.nextInt();     }
Di sana akan diminta memasukan data . dan aka nada penyusunan library secara sederhana untuk menampilkan data ke- dengan niali variabel y sama seperti yang sebelumnya telah tersimpan di variabel I pada program sebelumnya.
 for(int i=0 ; i<n;i++)   {
                x2[i]=Math.pow(x[i],2);
                y2[i]=Math.pow(y[i],2);
akan ada penyusunan library secara sederhana disana, dan untuk mencari x hanya tinggal dipangkatkan dari variabel yang telah dimasukan. Dan sama dengan method y aka nada pemangkatan pula.                            
public double sigma(double k[])             {
   double data = 0;
  for(int i=0; i<n;i++)    {
data = data + k[i]; }
 return(data);
}
Blok perintah diatas merupakan method dari fungsi sigma. Dimana method ini harus dibuat terlebih dulu agar bisa digunakan dalam rumus yang akan dipakai dalam program ini.

    public void regresiYX() {
    a1 = ((n*sigma(xy)) - (sigma(x) * sigma(y))) / ((n*sigma(x2))-Math.pow(sigma(x),2));
    a0 = ((sigma(y) * sigma(x2)) - (sigma(x) * sigma(xy))) / ((n*sigma(x2))-Math.pow(sigma(x),2));
    System.out.println("Persamaan Regrsi Y terhadap X");
        
    if (a1> 0)
    System.out.println("Y = "+a0+" + "+a1+"x");
    else
    System.out.println("Y = "+a0+a1+ "x"); }
  
Blok perintah diatas merupakan method dari fungsi Regresi YX dan fungsi Regresi XY. Didalam perintah ini terdapat rumus untuk menghitung regresiYX dan XY. Jika nilai-nilai yang telah diinputkan selesai diproses maka akan tercetak hasilnya. Didalam blok ini juga ada pengkondisian jika hasil lebih besar dari 0 maka akan tercetak “Persamaan Regrsi Y terhadap X”, jika hasil lebih kecil dari 0 maka akan tercetak “Persamaan Regresi X terhadap Y”.


          
     public void regresiXY()  {
      b1 = ((n*sigma(xy)) - (sigma(y) * sigma(x))) / ((n*sigma(y2))-Math.pow(sigma(y),2));
      b0 = ((sigma(x) * sigma(y2)) - sigma(y) * sigma(xy)) / (n* sigma(y2)-Math.pow(sigma(y),2));
      System.out.println("Persamaan Regresi X terhadap Y");
     
      if (b1>0)
      System.out.println("X = "+b0+" + "+b1+"y");
      else
    System.out.println("X = "+b0+b1+"y");
}
Blok perintah diatas merupakan method dari fungsi Regresi YX dan fungsi Regresi XY. Didalam perintah ini terdapat rumus untuk menghitung regresiYX dan XY. Jika nilai-nilai yang telah diinputkan selesai diproses maka akan tercetak hasilnya. Didalam blok ini juga ada pengkondisian jika hasil lebih besar dari 0 maka akan tercetak “Persamaan Regrsi Y terhadap X”, jika hasil lebih kecil dari 0 maka akan tercetak “Persamaan Regresi X terhadap Y”.
    public void Korelasi() {
     r = ((n*(sigma(xy))) - (sigma(x) * sigma(y))) / (Math.sqrt(n*(sigma(x2)))-Math.pow(sigma(x),2))*(Math.sqrt(n*(sigma(y2)))-Math.pow(sigma(y),2));     System.out.println("Nilai Korelasi adalah ");
                 System.out.println("r = "+r+" ");     }   
Masuk ke dalam method yang merupakan dari fungsi korelasi dengan program yang telah dibuat dan akan mengolah data dari variabel-variabel yang telah ditetapkan sebelumnya.         

            public static void main(String[] args)    {
                            new Regresi();                 }
            }
Blok perintah diatas merupakan method dari fungsi utama dimana digunakan untuk menjalankan program dengan memanggil method fungsi Regresi.

No comments :

Post a Comment