Saya mencoba memisahkan dua kelompok nilai dari satu set data. Saya dapat berasumsi bahwa salah satu populasi terdistribusi secara normal dan setidaknya setengah dari ukuran sampel. Nilai yang kedua sama-sama lebih rendah atau lebih tinggi dari nilai dari yang pertama (distribusi tidak diketahui). Yang saya coba lakukan adalah menemukan batas atas dan bawah yang akan menyertakan populasi yang berdistribusi normal dari yang lain.
Asumsi saya memberi saya titik awal:
- semua titik dalam kisaran interkuartil sampel berasal dari populasi yang berdistribusi normal.
Saya mencoba untuk menguji outlier mengambil mereka dari sisa sampel sampai mereka tidak masuk ke dalam 3 st.dev dari populasi yang terdistribusi normal. Yang tidak ideal, tetapi tampaknya menghasilkan hasil yang cukup masuk akal.
Apakah asumsi saya secara statistik masuk akal? Apa cara yang lebih baik untuk melakukan ini?
ps tolong perbaiki tag seseorang.
sumber
Jawaban:
Jika saya mengerti dengan benar, maka Anda bisa memasukkan campuran dua Normals ke data. Ada banyak paket R yang tersedia untuk melakukan ini. Contoh ini menggunakan paket mixtools :
Ini memberi:
Campuran dua Normals http://img294.imageshack.us/img294/4213/kernal.jpg
Paket ini juga berisi metode yang lebih canggih - periksa dokumentasi.
sumber
sumber
Ini mengasumsikan bahwa Anda bahkan tidak tahu apakah distribusi kedua normal atau tidak; Saya pada dasarnya menangani ketidakpastian ini dengan hanya berfokus pada distribusi normal. Ini mungkin atau mungkin bukan pendekatan terbaik.
Jika Anda dapat mengasumsikan bahwa dua populasi benar-benar dipisahkan (yaitu, semua nilai dari distribusi A lebih kecil dari semua nilai dari distribusi B), maka salah satu pendekatan adalah menggunakan fungsi optimisasi () dalam R untuk mencari titik-break yang Menghasilkan estimasi rata-rata dan sd dari distribusi normal yang membuat data paling mungkin:
Jika Anda tidak dapat mengasumsikan pemisahan lengkap, maka saya pikir Anda harus mengasumsikan beberapa distribusi untuk distribusi kedua dan kemudian menggunakan pemodelan campuran. Perhatikan bahwa pemodelan campuran sebenarnya tidak akan memberi label titik data individu, tetapi akan memberi Anda proporsi campuran dan perkiraan parameter dari setiap distribusi (mis. Mean, sd, dll.).
sumber
optimize
membutuhkan dua distribusi untuk berdampingan seperti yang saya mengerti. Dalam kasus saya satu ada di dalam yang lain, yaitu, nilai-nilai dari populasi kedua berada di kedua sisi batas.Saya terkejut tidak ada yang menyarankan solusi yang jelas:
Sekarang untuk penjelasan:
ltsReg
fungsi dalam paketrobustbase
, ketika dipanggil dengan opsimenghasilkan bobot MCD univariat (tepat). (Ini adalah n-vektor 0-1 bobot yang disimpan dalam
$raw.weights
objek. Algoritma untuk mengidentifikasi mereka adalah penaksir MCD (1)).Singkatnya, bobot ini adalah 1 untuk anggota subset darih = ⌈ ( n + 2 ) / 2 ⌉ kebanyakan pengamatan terkonsentrasi.
Dalam dimensi satu, itu dimulai dengan menyortir semua pengamatan kemudian menghitung ukuran semua himpunan bagian yang berdekatanh pengamatan: menunjukkan
x( i ) itu sayat h entri vektor pengamatan diurutkan, itu menghitung ukuran ( x( 1 ), . . . , x( h + 1 )) kemudian ( x( 2 ), . . . , x( h + 2 ))
dan sebagainya ...) lalu simpan yang berukuran lebih kecil.
(misalnya
Algoritma ini mengasumsikan bahwa grup minat Anda merupakan mayoritas ketat dari sampel asli dan memiliki distribusi simetris (tetapi tidak ada hipotesis pada distribusi sisanya).n - h pengamatan).
sumber