Skip to content Skip to sidebar Skip to footer

Distribusi Frekuensi, Mean Data dan Variansi Data pada Matlab

Bagian dari ilmu komputer yang wajib dikuasai oleh mahasiswa teknik informatika adalah ilmu statistika. Saya baru mendapatkan mata kuliah ini di semester V. Materi statistika pertama yang saya dapatkan adalah tentang distribusi frekuensi, mean data, mean data kumulatif (K), variansi data dan variansi data kumulatif. Bagaimana penjelasan teorinya ?

Penjelasan teori masing-masing pembahasan dapat teman-teman cari sendirilah, yang akan saya bahas adalah implementasi masing-masing pembahasan pada matlab. 

Sebelum masuk ke proses pemrogramannya, terlebih dahulu kita menentukan data penelitian yang akan kita ukur. Saya mengambil data gambar "Bakso Ayam" dan "Bakso Sapi" untuk diambil pengukurannya. berikut adalah foto-foto objek yang telah tersedia

Gambar bakso sapi


Gambar bakso ayam 


Perlu diketahui bahwa dikumpulkannya objek berbeda "bakso ayam" dan "bakso sapi" dengan tujuan diambil data pengukurannya dan disimpan dalam suatu database. Hasil pengukuran database tersebut digunakan untuk "Identifikasi Bakso Ayam atau Bakso Sapi" ketika ada suatu bakso diinputkan. 

Disktribusi Frekuensi

Oke, langsung saja. Proses pertama adalah mengukur Distribusi Frekuensi untuk mendapatkan interval, median (m), frekuensi (f), frekuensi relatif (fr), dan frekuensi kumulatif (fk). Source code program matlab untuk membuat distribusi frekuensi seperti dibawah ini :

%Algoritma Distribusi Frekuensi

function [interval, m,f,fr,fk] = TDistribusiFrekuensi(x,k) 

%membuat vektor, ada baris dan kolom 
[n,m] = size(x) ;
n 
m
%input 
%output
%asumsi 

x_min = min(x); 
x_max = max(x); 
R = x_max - x_min ; 
i = (R/k) + 0.000001 ;
i = ceil(i) ; % ceil berfungsi untuk pembulatan keatas

for q = 1:k+1
    interval(q) = x_min + (q-1) * i ;
end

for q = 1:k
   m(q) = interval(q) + 0.5 * i ;
   f(q) = 0 ;
end

for p = 1:n
       for q = 1:k 
           if x(p) >= interval(q) & x(p) < interval(q+1)
               f(q) = f(q)+1 ;
           end
       end
end

%frekuensi relatif
for q = 1:k 
    fr(q) = f(q) /n ;
end

%frekuensi kumulatif
fk(1)=f(1) ;
for q = 2:k 
    fk(q) = fk(q-1) + f(q) ;
end

end
Simpan kode diatas dalam folder directory. Bagaimana menjalankannya? ketikkan kode berikut simpan dengan nama proses, harus satu folder dengan Distribusi Frekuensi
BaksoAyam = strcat('1.JPG');
RGB_BaksoAyam = imread(BaksoAyam) ;
Gray_BaksoAyam = rgb2gray(RGB_BaksoAyam) ;
    
[n,m] = size(Gray_BaksoAyam) ;
imageBA = reshape(Gray_BaksoAyam,n*m,1) ;
imageBA = double(imageBA) ;

[interval, m,f,fr,fk] = TDistribusiFrekuensi(imageBA,5) ;

interval
m
f 
fr
fk

clear 
kode pertama yang berisikan BaksoAyam = strcat('1.JPG'); adalah mengambil gambar bakso ayam yang saya namai 1.jpg, teman-teman dapat menggantinya sesuai dengan data pengamatan masing-masing. Panggil pada command window matlab, dan hasilnya seperti ini



Mean Data
%inputnya = data array x[1....n]
%outputnya = mean  (rata-rata data)

function[mean] = MeanData(x)

jumlah = 0 ;
[n,m] = size(x) ;

for i = 1: n
    jumlah = jumlah+x(i);
end

mean = jumlah / n ;
end
Proses pemanggilan kode Mean diatas sama saja dengan proses pemanggilan DistribusiFrekuensi, tinggal mengganti beberapa baris kode seperti berikut :
BaksoAyam = strcat('1.JPG');

RGB_BaksoAyam = imread(BaksoAyam) ;
Gray_BaksoAyam = rgb2gray(RGB_BaksoAyam) ;
   
[n,m] = size(Gray_BaksoAyam) ;
imageBA = reshape(Gray_BaksoAyam,n*m,1) ;
imageBA = double(imageBA) ;

MeanData(imageBA)
Ketika dijalankan, Hasilnya dapat dilihat seperti berikut,



Mean Data K
%input = Array (m[1..k],f[1..k],fk[k])
%output : mean (rata-rata)

function mean = MeanDataK(m,f,fk,k)

jumlah = 0 ;
for i = 1 : k
    jumlah = jumlah + m(i)*f(i);
end
mean = jumlah/fk(k) ;

end

Silakan berusaha sendiri bagaimana cara menjalankan programnya... (^_^), lihat inputan parameter untuk menjalankan Mean Data K, yang dibutuhkan adalah m,f,fr,fk yang semuanya dapat diperoleh dengan Distribusi Frekuensi. Silakan dicoba !

Variansi Data
function variansi = VariansiData(x)

mean = MeanData(x)
jumlah = 0 ;
[n,m] = size(x);
for i = 1 : n
    jumlah = jumlah + (x(i)^2);
end
variansi = (jumlah - n*(mean^2))/(n-1);

end
Silakan dicoba sendiri cara runningnya.... (^_^)

Variansi Data K
function variansi = VariansiDataK(m,f,fk,k)

mean = MeanDataK(m,f,fk,k) ;
jumlah = 0 ;
for p = 1: k
    jumlah = jumlah + f(p) * (m(p)^2) ;
end
    variansi = (jumlah-fk(k)*(mean^2))/(fk(k)-1) ;

end

Pasti udah bisa cara running kan?

Saya harap, dari sekian banyak source code yang saya contohkan, sebisa mungkin jangan mengcopy-paste begitu saja, pasti teman-teman gak bakalan tahu bagaimana alur programnya. Harus ketik sendiri ya? Programmer harus terbiasa ngetik biar tangannya keriting, hehehe

Implementasi pada program

Berikut ini saya contohkan bagaimana menerapkan distribusi frekuensi, mean data, mean data K, variansi data dan variansi data K pada program berbasis GUI menggunakan Matlab. Tampilan berikut adalah main utama program ketika dijalankan. 






















Pertama, kita akan memilih foto bakso yang akan kita identifikasi. Kita klik button "ambil" yang berada di panel input. Setelah diklik akan keluar tab baru untuk memilih, lalu pilih bakso yang berada pada direktori, maka muncullah gambar bakso sesuai dengan apa yang kita pilih:




Selanjutnya kita klik  button distribusi frekuensi, untuk menghitung nilai k, m, f, fr, dan fk. Saat kita klik button tersebut, maka akan keluar kotak input dialog yang berfungsi untuk memasukkan nilai K (interval) nya. Silahkan isi input dialog tersebut dengan nilai sesuai dengan keinginan teman-teman (direkomendasikan nilai = 5). Lihat gambar di bawah



kami menggunakan angka 5 sebagai nilai K intervalnya. Maka akan muncul nilai seperti gambar dibawah ini





Berikutnya yaitu menghitung nilai Mean Datanya. Oleh karenanya silahkan klik button Mean data. Maka hasil dari perhitungan tersebut akan keluar di form panel mean data. Begitu seterusnya hingga button Variasi data K, yang nilainya akan muncul sesuai dengan button yang dipilih. Lihat gambar di bawah ini




Kelanjutan dari program diatas adalah menentukan hasil identifikasi dari gambar bakso yang diinputkan apakah termasuk dalam kategori bakso ayam atau bakso sapi menggunakan metode bayesian dan metode diskriminan, saya jelaskan pada posting berikut : Identifikasi Bakso Ayam dan Bakso Sapi yang juga saya tambahkan untuk link download programnya.

Saya mengharapkan agar program dan metode-metodenya dapat dikembangkan secara bebas oleh teman-teman untuk kemajuan ilmu pengetahuan yang memberikan manfaat bagi masyarakat.

Sekian dulu apa yang dapat saya berikan untuk teman-teman, semoga bermanfaat dan menambah wawasan kita semua. Amin


Written By 


3 comments for "Distribusi Frekuensi, Mean Data dan Variansi Data pada Matlab"

  1. Kakk kalau kita mau memasukkan data berupa angka" secara manual gimana ya??

    ReplyDelete