Rabu, 11 Januari 2017

Distribusi Peluang Teoritis

1.         Pendahuluan

Titik-titik contoh di dalam Ruang Sampel (S) dapat disajikan dalam bentuk numerik/bilangan.
.
·    Peubah Acak
Fungsi yang mendefinisikan titik-titik contoh dalam ruang contoh sehingga memiliki nilai berupa bilangan nyata  disebut : PEUBAH ACAK = VARIABEL ACAK = RANDOM VARIABLE (beberapa buku juga menyebutnya sebagai STOCHASTIC VARIABLE ) 

·    X dan x
Biasanya PEUBAH ACAK dinotasikan sebagai X (X kapital)
Nilai dalam X dinyatakan sebagai x (huruf kecil x).
Contoh 1 :
Pelemparan sekeping Mata Uang setimbang sebanyak 3 Kali
S : {GGG, GGA, GAG, AGG, GAA, AGA, AAG, AAA}
dimana G = GAMBAR  dan  A = ANGKA
X: setiap satu sisi GAMBAR bernilai satu (G = 1)
S : {GGG, GGA, GAG, AGG, GAA, AGA, AAG, AAA}
          ¯        ¯         ¯       ¯        ¯         ¯        ¯        ¯
          3         2        2        2         1         1        1         0

Perhatikan bahwa X{0,1,2,3}
Nilai x1= 0, x2= 1 x3= 2, x4= 3
·    Kategori Peubah Acak
Peubah Acak dapat dikategorikan menjadi:
a.         Peubah Acak Diskrit  :          
nilainyaberupa bilangan cacah, dapat dihitung dan terhingga.
            ®        untuk hal-hal yang dapat dicacah
                        Misal :             Banyaknya Produk yang rusak = 12 buah
                                                Banyak pegawai yang di-PHK= 5 orang
           
b.         Peubah Acak Kontinyu:       
nilainya berupa selang bilangan, tidak dapat di hitung dan tidak terhingga
(memungkinkan pernyataan dalam bilangan pecahan)
®                untuk hal-hal yang diukur
        (jarak, waktu, berat, volume)
            Misalnya          Jarak Pabrik ke Pasar = 35.57 km
                                    Waktu produksi per unit = 15.07 menit
                                    Berat  bersih produk = 209.69 gram
                                    Volume kemasan = 100.00 cc            

·          Distribusi Peluang Teoritis

Tabel atau Rumus yang mencantumkan semua kemungkinan nilai peubah acak berikut peluangnya.
Berhubungan dengan kategori peubah acak, maka dikenal :
a. Distribusi Peluang Diskrit   : Binomial, Poisson
b. Distribusi Peluang Kontinyu   : Normal*) t, F, c²(chi kuadrat)
2.         Distribusi Peluang Diskrit
2.1         Distribusi Peluang Binomial

·    Percobaan Binomial
Percobaan Binomial adalah percobaan yang mempunyai ciri-ciri sebagai berikut:

1. Percobaan diulang n kali

2. Hasil setiap ulangan hanya dapat dikategorikan ke  dalam 2 kelas;
           Misal:  "BERHASIL" atau  "GAGAL"  
   ("YA" atau "TIDAK";  "SUCCESS" or "FAILED")

3. Peluang keberhasilan = p dan dalam setiap ulangan nilai p tidak berubah.
    Peluang gagal = q = 1- p.

4. Setiap ulangan bersifat bebas satu dengan yang lain.


 Contoh 2 :

Tentukan peluang mendapatkan "MATA 1" muncul 3 kali pada pelemparan 5 kali sebuah dadu setimbang!
Kejadian sukses/berhasil = mendapat "MATA 1"


Contoh 4b:
Peluang seorang mahasiswa membolos adalah 6:10, jika terdapat 5 mahasiswa, berapa peluang terdapat 2 orang mahasiswa yang tidak membolos?

Kejadian yang ditanyakan ® Kejadian SUKSES = TIDAK MEMBOLOS
Yang diketahui peluang MEMBOLOS = q = 6 : 10 = 0.60
p = 1 - q = 1 - 0.60 = 0.40                   x = 2,                           n = 5
b(x = 2; n = 5, p = 0.40) = ....................


  • Tabel Peluang Binomial

Soal-soal peluang peluang binomial dapat diselesaikan dengan bantuan Tabel Distribusi Peluang Binomial (Lihat hal  157-162, Statistika 2)

Cara membaca Tabel tersebut :

Misal :
           n          x          p = 0.10           p = 0.15           p = 0.20   dst
           
            5          0          0.5905             0.4437             0.3277
                        1          0.3280             0.3915             0.4096
                        2          0.0729             0.1382             0.2048
                        3          0.0081             0.0244             0.0512
                        4          0.0004             0.0020             0.0064
                        5          0.0000             0.0001             0.0003
           
Perhatikan Total setiap Kolom p = 1.0000 (atau karena pembulatan, nilainya tidak persis = 1.0000  hanya mendekati 1.0000)

x = 0    n = 5    p = 0.10                                   b(0; 5, 0.10) = 0.5905
x =1     n = 5    p = 0.10                                   b(1; 5, 0.10) = 0.3280
Jika 0 x 2, n = 5 dan p = 0.10 maka b(x; n, p)  =
b(0; 5, 0.10)+ b(1; 5, 0.10)+b(2;5,0.10)
= 0.5905 + 0.3280 +0.0729 = 0.9914

Contoh 5
Suatu perusahaan “pengiriman paket ” terikat perjanjian bahwa keterlambatan paket akan menyebabkan perusahaan harus membayar biaya kompensasi.
Jika Peluang setiap kiriman akan terlambat adalah 0.20  Bila terdapat 5 paket, hitunglah probabilitas :
a. Tidak ada paket yang terlambat, sehingga perusahaan tidak membayar biaya kompensasi?
    (x = 0)
b. Lebih dari 2 paket terlambat? (x >2)
c. Tidak Lebih dari 3 paket yang terlambat?(x £ 3)
d. Ada 2 sampai 4  paket yang terlambat?(2 £  x  £ 4)
e. Paling tidak ada 2 paket yang terlambat?(x ³ 2)
Jawab
a. x = 0  ® b(0; 5, 0.20) = 03277 (lihat di tabel atau dihitung dgn rumus)

b. x > 2 ® Lihat tabel dan  lakukan penjumlahan sebagai berikut :
                  b(3; 5, 0.20) + b(4; 5, 0.20) + b(5; 5, 0.20)  =
                  0.0512+ 0.0064 + 0.0003  = 0.0579
            atau .....
            ®  1 - b(x £ 2) = 1 - [b(0; 5, 0.20) +  b(1;  5, 0.20) + b(2; 5, 0.20) = 1 - [0.3277 + 0.4096 + 0.2048)=  1 - 0.9421 = 0.0579 


Rata-rata dan Ragam Distribusi Binomial b(x; n, p) adalah

                                    Rata-rata   = np
                                    Ragam   s ²  = npq
n = ukuran populasi
p = peluang keberhasilan setiap ulangan
q = 1 - p = peluang gagal setiap ulangan
 
2.3       Distribusi Peluang Poisson

Percobaan Poisson memiliki ciri-ciri berikut :
1.         Hasil percobaan pada suatu selang waktu dan tempat tidak tergantung dari hasil    percobaan di selang waktu dan tempat yang lain yang terpisah

2.         Peluang terjadinya suatu hasil percobaan sebanding dengan panjang selang waktu dan       luas tempat percobaan terjadi. Hal ini berlaku hanya untuk selang waktu yang singkat   dan luas daerah yang sempit
3.         Peluang bahwa lebih dari satu hasil percobaan akan terjadi pada satu selang waktu  dan luasan tempat yang sama diabaikan 









Perhatikan rumus yang digunakan! Peluang suatu kejadian Poisson hitung dari rata-rata populasi (m)


·    Tabel Peluang Poisson
Seperti halnya peluang binomial, soal-soal peluang Poisson dapat diselesaikan dengan Tabel Poisson (Statistika 2, hal 163-164)
Cara membaca dan menggunakan Tabel ini tidak jauh berbeda dengan Tabel Binomial
Misal:              x          m = 4.5             m = 5.0
                        0          0.0111             0.0067
                        1          0.0500             0.0337
                        2          0.1125             0.0842
                        3          0.1687             0.1404
                        dst       dst                   dst
                        15        0.0001             0.0002

poisson(2; 4.5) = 0.1125
poisson(x < 3; 4.5) = poisson(0;4.5) + poisson(1; 4.5)+ poisson(2; 4.5)
                               = 0.0111 + 0.0500 + 0.1125 = 0.1736

poisson(x > 2;4.5) = poisson(3; 4.5) + poisson(4; 4.5) +...+ poisson(15;4.5)
                            atau
                            = 1 - poisson(x £ 2)
                            = 1 - [poisson(0;4.5) + poisson(1; 4.5)+ poisson(2; 4.5)]
                            = 1 - [0.0111 + 0.0500 + 0.1125 ] = 1 - 0.1736 = 0.8264
Contoh 6 :
Rata-rata seorang sekretaris baru melakukan 5 kesalahan ketik per halaman.  Berapa peluang bahwa pada halaman berikut ia membuat:
a. tidak ada kesalahan?(x = 0)
b. tidak lebih  dari 3 kesalahan?( x £ 3)
c. lebih dari 3 kesalahan?(x >3)
d. paling tidak ada 3 kesalahan (x ³ 3)

Jawab:
= 5

a. x = 0 dengan rumus?  hitung poisson(0; 5)
                  atau
              dengan Tabel Distribusi Poisson
                  di bawah x:0 dengan  = 5.0 (0; 5.0) = 0.0067

b. x 3 dengan Tabel Distribusi Poisson  hitung
                   poisson(0; 5.0) + poisson(1; 5.0) + poisson(2; 5.0) + poisson(3; 5.0)  =
                   0.0067 + 0.0337 + 0.0842 + 0.1404 = 0.2650

c. x > 3   poisson( x 3; 5.0) = poisson(4; 5.0) + poisson(5; 5.0) + poisson (6; 5.0) +
                                                      poisson(7; 5.0) + ... + poisson(15; 5.0)
                                    atau

                        poisson(x >3) = 1 - poisson(x3)
                                                    = 1 - [poisson(0; 5.0) + poisson(1; 5.0) + poisson(2; 5.0) +                                                             poisson(3; 5.0)]
                                                   =  1 - [0.0067 + 0.0337 + 0.0842 + 0.1404]
                                                   =  1 - 0.2650
                                                   =  0.7350

Pendekatan Poisson untuk Distribusi Binomial :

·         Pendekatan Peluang Poisson untuk Peluang Binomial, dilakukan jika n besar (n > 20) dan p sangat kecil  (p < 0.01) dengan terlebih dahulu menetapkan  p dan kemudian menetapkan  m = n x p 

Contoh 7
Dari 1 000 orang mahasiswa 2 orang mengaku selalu terlambat masuk kuliah setiap hari, jika pada suatu hari terdapat 5 000 mahasiswa, berapa peluang ada lebih dari 3 orang yang terlambat?
Kejadian Sukses : selalu terlambat masuk kuliah

p =       2    
         1000     = 0.002                                           n = 5 000                     x > 3
jika diselesaikan dengan peluang Binomial  ® b(x > 3; 5 000, 0.002)
                                                                          tidak ada di Tabel, jika menggunakan rumus
                                                                          sangat tidak praktis.

p  =   0.002                                          n = 5 000         x>3
m  = n ´ p = 0.002 ´ 5 000 = 10
diselesaikan dengan peluang Poisson ® poisson (x > 3; 10) = 1 - poisson (x £ 3) 
                        = 1 - [poisson (0;10) + poisson(1; 10) + poisson(2;10) + poisson(3; 10)
                        = 1 - [0.0000 +  0.0005 + 0.0023 ] = 1 - 0.0028 = 0.9972

3          Distribusi Peluang Kontinyu

3.1       Distribusi Normal

·         Nilai Peluang peubah acak dalamDistribusi Peluang Normal dinyatakan dalam luas dari di bawah kurva berbentuk genta\lonceng (bell shaped curve). 

·         Kurva maupun persamaan Normal melibatkan nilai x, m dan s. 

·         Keseluruhan kurva akan bernilai 1, ini mengambarkan sifat peluang yang tidak pernah negatif dan maksimal bernilai satu  

Perhatikan gambar di bawah ini:







·         Untuk memudahkan penyelesaian soal-soal peluang Normal, telah disediakan tabel nilai z  (Statistika2, hal 175)

Sabtu, 05 November 2016

Pengolahan Deskriptif

 Pengguna Internet di Indonesia Tahun 2015


Dari table distributive frekuensi yang sudah di buat dapat perhitunga sebagai berikut:

    1.) Rata-rata hitung/ nilai tengah (mean)

Mean dari sekumpulan data adalah jumlah seluruh data dibagi banyaknya data
Rumus Mean :
                                  

X = 52+18,6+7,3+4,2+16,4 /5 
   =98,5 /5
  =19,7

    2.)   Median
Median adalah nilai tengah dari sekupulan data yang telah diurutkan dari terkecil ke terbesar.

Tentukan median dari data berikut!

52, 18.6, 7.3, 4,2, 16.4
         Jumlah data = 5 (ganjil)
Data diurutkan akan menjadi seperti berikut:
4.2, 7.3, 16.4, 18.6, 52
Nilai 16,4 ada ditengah data yang telah diurutkan, maka 16,4 merupakan median.

 3.)  Modus
Modus adalah nilai data yang paling sering muncul atau nilai data yang frekuensinya paling banyak, modus dinotasikan dengan Mo.
            Tentukan modus dari data berikut !
4.2, 7.3, 16.4, 18.6, 52
    Dari data diatas menyatakan bahwa tidak ada data yang sering muncul, sehingga diambil dari data terbesar yaitu 52.


4.)  Range
Range (wilayah) sekumpulan data beda antara pengamatan terbesar dan terkecil dalam kumpulan data tersebut.
        Tentukan modus dari data berikut !
4.2, 7.3, 16.4, 18.6, 52
Dari data di atas menyatakan 52 – 4.2 = 47,8

     5.)  Ragam 
           Ragam (variance) populasi tertinggi
                                                               
6.)  Simpangan baku (standar deviasi)
Simpangan baku (standar deviasi) adalah ukuran persebaran data. Simpangan ini bisa diartikan jarak antara nilai hasil pengukuran dengan nilai rata-rata.

4.2 + 7.3 + 16.4 + 18.6 + 52
=98,5
Jadi untuk menghitug data sampel ialah:  
                                                           


Selasa, 25 Oktober 2016

Contoh Thread untuk OS

Multithreading Di Android

Pada program yang saya buat di artikel Belajar Memakai Implicit Intent Di Android, sistem operasi Android akan terlihat seperti hang bila saya membaca file dengan ukuran besar. Tombol yang ada di perangkat keras juga tidak bisa dipakai, misalnya saya tidak membatalkan proses dan tidak bisa kembali ke menu utama. Mengapa demikian? Hal ini berkaitan dengan threading (concurrency). Setiap aplikasi Android dimulai dengan sebuah thread tunggal yang diberi nama ‘main’. Semua operasi yang berkaitan dengan UI seperti event ditangani oleh thread ini. Pada Swing, thread ini memiliki fungsi yang sama seperti event dispatch thread (EDT). Bedanya, di Swing, aplikasi tidak langsung mulai dari EDT melainkan thread non-UI (pengguna memakai SwingUtilities.invokeLater() atauSwingUtilities.invokeAndWait() untuk mengerjakan kode program di EDT). Bila saya mengerjakan sebuah proses yang sangat lama di thread UI, maka ia tidak bisa bekerja menangani event UI. Ia akan menunggu hingga proses lama ini selesai baru bisa lanjut bekerja. Ini yang membuat aplikasi menjadi tidak responsif.
Bila pada aplikasi Java, saya menggunakan JVisualVM (bawaan JDK) untuk memantau thread yang ada di sebuah aplikasi, maka untuk Android, saya dapat menggunakan Android Device Monitor (bawaan Android SDK). Sebagai contoh, bila saya memilih aplikasi dan men-klik icon Update Threads, saya dapat melihat tampilan seperti pada gambar berikut ini di tab Threads:
Melihat thread di aplikasi Android
Walaupun ada banyak thread yang dibuat, satu-satunya thread yang menjalankan kode program aplikasi saya saat ini adalah thread 1 dengan nama ‘main’. Thread lainnya adalah bawaan Android, misalnya thread ‘GC’ untuk membebaskan memori yang tidak dipakai lagi, thread ‘JDWP’ untuk keperluan debugging, dan sebagainya.
Sekarang, saya akan melakukan perubahan pada kode program di method tampilkan() agar ia mengerjakan tugasnya di thread terpisah:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
private void tampilkan(Intent data) {
    Thread.start('ProsesFile') {
        TextView output = (TextView) findViewById(OUTPUT_VIEW_ID)
        Uri uri = data.getData()
        byte[] bytes = getContentResolver().openInputStream(uri).bytes
        StringBuilder hexdump = new StringBuilder()
        StringBuilder ascii = new StringBuilder()
        int i
        for (i = 0; i < bytes.length; i++) {
            hexdump.append(String.format("%02x", bytes[i]))
            hexdump.append(' ')
            ascii.append(Character.isLetterOrDigit(bytes[i]) ? (char) bytes[i] : '.')
            if ((i > 0) && (((i + 1) % 8) == 0)) {
                hexdump.append(ascii.toString())
                hexdump.append('n')
                ascii = new StringBuilder()
            }
 
            output.post({
                output.setText("Memproses byte $i dari ${bytes.length}")
            } as Runnable)
 
            Thread.sleep(1)
        }
        if (ascii) {
            (1..(8 - ((i - 1) % 8))).each { hexdump.append('   ') }
            hexdump.append(ascii.toString())
        }
 
        output.post({
            output.setText(hexdump.toString())
            Intent sendIntent = new Intent(Intent.ACTION_SEND)
            sendIntent.putExtra(Intent.EXTRA_TEXT, hexdump.toString())
            sendIntent.setType('text/plain')
            shareActionProvider.setShareIntent(sendIntent)
        } as Runnable)
 
    }
}  
Pada kode program di atas, saya memakai Thread.start() dari Groovy untuk membuat sebuah thread baru dengan nama ‘ProsesFile’. Selama berada di dalam thread baru ini, saya tidak boleh mengerjakan method yang berhubungan dengan UI secara langsung. Hal ini karena method pada UI tidak thread-safe. Oleh sebab itu, untuk menjadwalkan kode program agar dikerjakan oleh thread ‘Main’ (yang menangani UI), saya menggunakan post().
Bila saya menjalankan aplikasi, ia akan lebih responsif. Saya juga akan menemukan sebuah thread baru dengan nama ‘ProsesFile’ bila memantau aplikasi melalui Android Device Monitor, seperti yang terlihat pada gambar berikut ini:
Membuat thread baru
Masalah lain yang saya hadapi adalah penggunaan memori yang besar karena memproses isi file sekaligus. Oleh sebab itu, saya akan menggunakan seek bar sehingga saya bisa menampilkan isi file per kilobyte sesuai dengan posisi seek bar. Agar lebih mudah dalam merancang UI, saya akan menggunakan designer bawaan Android Studio. Untuk itu, saya membuat folder baru bernama layout di lokasi src/main/res. Setelah itu, saya men-klik kanan pada folder layout dan memilih New, Layout Reource Folder. Saya mengisi dialog yang muncul denganmainscreen pada File name dan RelativeLayout pada Root element. Saya kemudian merancang UI sehingga terlihat seperti berikut ini:
Merancang UI secara visual
Saya perlu mengubah method onCreate() untuk membaca layout dari XML sehingga isinya menjadi seperti:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class MainActivity extends Activity implements SeekBar.OnSeekBarChangeListener {
 
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.mainscreen)
    ((SeekBar) findViewById(R.id.posisi)).onSeekBarChangeListener = this
    if (intent.data) {
        tampilkan(intent)
    }
  }
 
  ...
 
  @Override
  void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {}
 
  @Override
  void onStartTrackingTouch(SeekBar seekBar) {}
 
  @Override
  void onStopTrackingTouch(SeekBar seekBar) {}
 
}
Kali ini saya perlu men-share variabel bytes yang berisi data lengkap yang sudah dibaca agar dapat diakses dari thread berbeda. Karena ia bytes hanya ditulis sekali, setelah itu dibaca oleh beberapa thread berbeda, saya boleh saja men-share variabel ini dengan cara yang tidak thread-safe. Akan tetapi, agar lebih aman, saya akan menggunakan ReadWriteLock sehingga pada saat variabel ini ditulis oleh sebuah thread, maka thread lain yang ingin membaca harus menunggu sampai penulisan selesai. Groovy menyediakan AST transformation@WithWriteLock dan @WithReadLock untuk keperluan tersebut. Sebagai contoh, saya bisa menambahkannya seperti:
1
2
3
4
5
6
7
8
9
10
11
12
13
public class MainActivity extends Activity implements SeekBar.OnSeekBarChangeListener {
 
  private byte[] bytes
 
  ...
 
  @Override @WithReadLock
  void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {}
 
  @WithWriteLock
  private void tampilkan(Intent data) { ... }
 
}
Sekarang, fungsi dari kode program tampilkan() hanya untuk membaca isi file saja:
1
2
3
4
5
6
7
8
9
10
11
@WithWriteLock
private void tampilkan(Intent data) {
    Thread.start('BacaFile') {
        Uri uri = data.getData()
        byte[] bytes = getContentResolver().openInputStream(uri).bytes
        SeekBar seekBar = (SeekBar) findViewById(R.id.posisi)
        seekBar.post({
            seekBar.max = bytes.length / 1024
        })
    }
}
Kode program di onProgressChanged akan dikerjakan setiap kali pengguna menggeser seek bar. Karena proses untuk menghasilkan hexdump cukup lama, maka saya akan mengerjakannya pada sebuah thread terpisah, misalnya:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
@Override @WithReadLock
void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    Thread.start('ProsesHexdump') {
        TextView output = (TextView) findViewById(R.id.output)
        StringBuilder hexdump = new StringBuilder()
        StringBuilder ascii = new StringBuilder()
        int i = progress * 1024
        int max = Math.min(i + 1024, bytes.length)
        for (; i < max; i++) {
            hexdump.append(String.format("%02x ", bytes[i]))
            ascii.append(Character.isLetterOrDigit(bytes[i]) ? (char) bytes[i] : '.')
            if ((i > 0) && (((i + 1) % 8) == 0)) {
                hexdump.append(ascii.toString())
                hexdump.append('n')
                ascii = new StringBuilder()
            }
        }
        if (ascii) {
            (1..(8 - (i % 8))).each { hexdump.append('   ') }
            hexdump.append(ascii.toString())
        }
 
        output.post({
            String hasil = hexdump.toString()
            output.setText(hasil)
            Intent sendIntent = new Intent(Intent.ACTION_SEND)
            sendIntent.putExtra(Intent.EXTRA_TEXT, hasil)
            sendIntent.setType('text/plain')
            shareActionProvider.setShareIntent(sendIntent)
        } as Runnable)
    }
}
Sekarang, setiap kali membaca file, thread ‘BacaFile’ akan dibuat. Setiap kali seek bar digeser, thread‘ProsesHexDump’ akan tercipta. Thread baru ini juga akan menunggu hingga ‘BacaFile’ selesai dikerjakan bila thread tersebut masih bekerja.