( Ini berkaitan dengan pertanyaan pemrograman saya tentang Stack Overflow : Bell Curve Gaussian Algorithm (Python dan / atau C #) .)
Di Answers.com, saya menemukan contoh sederhana ini:
- Temukan rata-rata aritmatika (rata-rata) => Jumlah semua nilai dalam set, dibagi dengan jumlah elemen dalam set
- Temukan jumlah kuadrat dari semua nilai di set
- Bagi hasil (2) dari jumlah elemen dalam himpunan
- Kurangi kuadrat rata-rata (1) dari output (3)
- Ambil akar kuadrat dari hasil (4)
Contoh: Set A = {1,3,4,5,7}
- (1 + 3 + 4 + 5 + 7) / 5 = 4
- (1 * 1 + 3 * 3 + 4 * 4 + 5 * 5 + 7 * 7) = 1 + 9 + 16 + 25 + 49 = 100
- 100/5 = 20
- 20 - 4 * 4 = 20-16 = 4
- SQRT (4) = 2
(Ini berasal dari posting di wiki.answers.com .)
Sekarang mengingat semua itu, bagaimana saya bisa memasukkan data di atas ke kurva lonceng (seperti skor kredit) mulai dari 200 hingga 800. Jelas angka 5 pada set di atas akan menjadi 500. Tetapi kemudian apa rumus untuk menentukan apa 3 harus pada skala yang sama. Meskipun set asli Set A = {1,3,4,5,7} bukan kurva-lonceng, saya ingin memaksanya menjadi kurva-lonceng.
Bayangkan ini adalah skor 5 orang. Bulan depan skor mungkin berubah sebagai berikut: Set A2={1,2,4,5,9}
(satu orang kehilangan satu poin, dan pria teratas mendapatkan dua poin lagi - yang kaya semakin kaya dan yang miskin semakin miskin). Maka mungkin seorang pria baru masuk ke set: Set A3={1,2,4,5,8,9}
.
sumber
Jawaban:
Rentang skala , seperti 200 hingga 800 (untuk SAT, misalnya ), hanyalah perubahan satuan pengukuran . (Ini berfungsi persis seperti mengubah suhu di Fahrenheit ke yang di Celsius.)
Nilai tengah 500 dimaksudkan untuk sesuai dengan rata-rata data. Rentang ini dimaksudkan untuk sesuai dengan sekitar 99,7% dari data ketika data mengikuti distribusi Normal ("Bell curve"). Hal ini dijamin untuk memasukkan 8/9 dari data ( Chebyshev Ketimpangan ).
Dalam hal ini, rumus 1-5 menghitung standar deviasi data. Ini hanyalah unit pengukuran baru untuk data asli. Perlu sesuai dengan 100 unit dalam skala baru. Karenanya, untuk mengonversi nilai asli ke nilai yang diskalakan,
Kurangi rata-rata.
Membagi dengan deviasi standar.
Kalikan dengan 100.
Tambahkan 500.
Jika hasilnya terletak di luar rentang Anda bisa menggunakannya apa adanya atau "menjepit" ke kisaran dengan membulatkan hingga 200, turun ke 800.[200,800]
Dalam contoh , menggunakan data , rata-rata adalah dan SD adalah . Oleh karena itu, setelah pengubahan ukuran, menjadi . Seluruh dataset yang dihitung ulang, dihitung dengan cara yang sama, adalah .{1,3,4,5,7} 4 2 1 (1−4)/2∗100+500=350 {350,450,500,550,650}
Ketika data asli didistribusikan dengan cara yang tidak normal, Anda perlu pendekatan lain . Anda tidak lagi menghitung rata-rata atau SD. Alih-alih, letakkan semua skor secara berurutan, dari 1 (terkecil) hingga ke (terbesar). Ini adalah peringkat mereka . Mengkonversi peringkat ke nya persentase . (Dalam contoh, dan data sudah dalam urutan peringkat . Oleh karena itu persentase mereka adalah , sering ditulis setara dengan , dll.) Sesuai dengan persentase apa pun (antara dan , tentu saja) adalahn i (i−1/2)/n n=5 i=1,2,3,4,5 1/10,3/10,5/10,7/10,9/10 10%,30% 0 1 kuantil normal . Ini dihitung dengan fungsi kuantil normal , yang terkait erat dengan fungsi kesalahan . ( Perkiraan numerik sederhana langsung ke kode.) Nilai-nilainya, yang biasanya akan antara -3 dan 3, harus diubah kembali (sama seperti sebelumnya) ke kisaran . Lakukan ini dengan terlebih dahulu mengalikan kuantil normal dengan 100 lalu menambahkan 500.[200,800]
Fungsi kuantil normal tersedia di banyak platform komputasi, termasuk spreadsheet ( norma Excel , misalnya). Misalnya, kuantil normal (atau "skor normal") untuk data adalah .{ 372 , 448 , 500 , 552 , 628 }{1,3,4,5,7} {372,448,500,552,628}
Pendekatan " skor normal " ini akan selalu memberikan skor antara 200 dan 800 ketika Anda memiliki nilai 370 atau lebih sedikit. Ketika Anda memiliki 1.111 atau lebih sedikit nilai, semua kecuali yang tertinggi dan terendah akan memiliki skor antara 200 dan 800.
sumber
Anda dapat mencoba pendekatan ini - menormalkan set data Anda untuk berkisar antara nilai -1 dan +1 dengan demikian: Ini akan mengonversi setiap nilai dalam set data Anda menjadi nilai antara -1 dan +1, dengan nilai maksimum dan minimum aktual masing-masing ditetapkan ke +1 dan -1, dan kemudian mengatur ulang nilai +1 dan -1 ini menjadi +0.9999 dan -0.9999 (diperlukan untuk perhitungan berikut.)
Kemudian terapkan Fisher Transformation untuk masing-masing nilai yang dinormalisasi di atas untuk "memaksanya" untuk kira-kira sesuai dengan distribusi normal, dan kemudian "un-normalisasi" masing-masing nilai Fisher Transform ini untuk rentang nilai antara 200 dan 800 dengan demikian: Nilai maksimum Fisher Transform akan disetel tepat 800, nilai minimum Fisher Transform akan ditetapkan hingga tepat 200, dan semua nilai lainnya akan berada di antara kedua ekstrem ini, menurut perkiraan distribusi normal.
Merujuk pertanyaan asli Anda pada SO dan masalah skalabilitas, keuntungan dari pendekatan ini adalah bahwa asalkan titik data baru itu sendiri bukan maksimum atau minimum baru untuk set data secara keseluruhan Anda dapat menerapkan perhitungan di atas untuk titik data baru untuk mendapatkan skor antara 200 dan 800 tanpa memengaruhi skor apa pun yang ada dari kumpulan data asli. Jika titik data baru adalah maksimum atau minimum baru, Anda harus menghitung ulang skor untuk seluruh data yang ditetapkan dengan nilai maksimum atau minimum "normalisasi" baru ini.
sumber