Saya tidak pernah mengikuti kursus statistik, jadi saya harap saya bertanya di tempat yang tepat di sini.
Misalkan saya hanya memiliki dua data yang menggambarkan distribusi normal: mean dan varians σ 2 . Saya ingin menggunakan komputer untuk secara acak mengambil sampel dari distribusi ini sehingga saya menghormati dua statistik ini.
Sudah cukup jelas bahwa saya dapat menangani mean dengan hanya menormalkan sekitar 0: cukup tambahkan untuk setiap sampel sebelum mengeluarkan sampel. Tapi saya tidak melihat bagaimana pemrograman menghasilkan sampel untuk menghormati σ 2 .
Program saya akan menggunakan bahasa pemrograman konvensional; Saya tidak memiliki akses ke paket statistik apa pun.
Jawaban:
Jika Anda dapat sampel dari distribusi tertentu dengan rata-rata 0 dan varians 1, maka Anda dapat dengan mudah sampel dari transformasi skala-lokasi distribusi tersebut, yang memiliki mean dan varians σ 2 . Jika x adalah sampel dari rata-rata 0 dan varian 1 distribusi maka σ x + μ adalah sampel dengan rata-rata μ dan varians σ 2 . Jadi, yang harus Anda lakukan adalah menskalakan variabel dengan standar deviasi σ (akar kuadrat dari varians) sebelum menambahkan mean μ .μ σ2 x
Bagaimana Anda benar-benar mendapatkan simulasi dari distribusi normal dengan mean 0 dan varian 1 adalah cerita yang berbeda. Sangat menyenangkan dan menarik untuk mengetahui bagaimana menerapkan hal-hal seperti itu, tetapi apakah Anda menggunakan paket statistik atau bahasa pemrograman atau tidak, saya akan merekomendasikan agar Anda memperoleh dan menggunakan fungsi atau perpustakaan yang sesuai untuk pembuatan angka acak. Jika Anda ingin saran tentang perpustakaan apa yang akan digunakan, Anda mungkin ingin menambahkan informasi spesifik tentang bahasa pemrograman yang Anda gunakan.
Sunting: Dalam terang komentar, beberapa jawaban lain dan fakta bahwa Fixee menerima jawaban ini, saya akan memberikan beberapa rincian lebih lanjut tentang bagaimana seseorang dapat menggunakan transformasi variabel seragam untuk menghasilkan variabel normal.
Pada akhirnya, metode yang diimplementasikan dengan benar tidak lebih baik daripada generator nomor acak semu yang digunakan. Secara pribadi, saya lebih suka mengandalkan perpustakaan tujuan khusus yang saya percaya dapat dipercaya. Saya hampir selalu mengandalkan metode yang diterapkan dalam R baik secara langsung di R atau melalui API di C / C ++. Jelas, ini bukan solusi untuk semua orang, tetapi saya tidak cukup akrab dengan perpustakaan lain untuk merekomendasikan alternatif.
sumber
Ini benar-benar komentar tentang jawaban Michael Lew dan komentar Fixee, tetapi diposting sebagai jawaban karena saya tidak memiliki reputasi di situs ini untuk berkomentar.
sumber
Selain jawaban oleh NRH, jika Anda masih tidak memiliki cara untuk menghasilkan sampel acak dari "distribusi normal standar" N (0,1), di bawah ini adalah cara yang baik dan sederhana (karena Anda menyebutkan Anda tidak memiliki statistik paket, fungsi-fungsi di bawah ini harus tersedia dalam sebagian besar bahasa pemrograman standar).
1. Hasilkan u dan v sebagai dua angka acak yang terdistribusi secara merata dalam kisaran dari -1 hingga 1 oleh
u = 2 r1 - 1
danv = 2 r2 - 1
2. hitung
w = u^2 + v^2
jika w> 1 kembali ke 13. mengembalikan u * z dan y = v * z dengan
z= sqrt(-2ln(w)/w)
kode sampel akan terlihat seperti ini:kemudian gunakan apa yang disarankan MHR di atas untuk mendapatkan penyimpangan acak
N(mu, sigma^2)
.sumber
Distribusi normal muncul ketika seseorang menambahkan bersama-sama banyak nilai acak dari distribusi yang sama (mirip satu sama lain, maksud saya). Jika Anda menambahkan bersama-sama sepuluh atau lebih nilai acak yang terdistribusi secara merata, maka jumlahnya hampir terdistribusi secara normal. (Tambahkan lebih dari sepuluh jika Anda menginginkannya menjadi lebih normal, tetapi sepuluh sudah cukup untuk hampir semua tujuan.)
Katakanlah bahwa nilai acak seragam Anda terdistribusi secara seragam antara 0 dan 1. Jumlahnya kemudian akan antara 0 dan 10. Kurangi 5 dari jumlah dan rata-rata dari distribusi yang dihasilkan adalah 0. Sekarang Anda membagi hasilnya dengan standar deviasi dari distribusi normal (dekat) dan gandakan hasilnya dengan standar deviasi yang diinginkan. Sayangnya saya tidak yakin apa standar deviasi dari jumlah sepuluh penyimpangan acak seragam itu, tetapi jika kita beruntung seseorang akan memberi tahu kita dalam komentar!
Saya lebih suka berbicara dengan siswa tentang distribusi normal dalam istilah ini karena utilitas asumsi distribusi normal dalam banyak sistem sepenuhnya berasal dari properti bahwa jumlah banyak pengaruh acak mengarah ke distribusi normal.
sumber