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(); }
}
|
No comments :
Post a Comment