Informasi lengkap kemungkinan maksimum untuk data yang hilang di R

18

Konteks : Regresi hierarkis dengan beberapa data yang hilang.

Pertanyaan : Bagaimana cara saya menggunakan estimasi kemungkinan maksimum informasi penuh (FIML) untuk mengatasi data yang hilang dalam R? Apakah ada paket yang akan Anda rekomendasikan, dan apa langkah-langkah khasnya? Sumber dan contoh online akan sangat membantu juga.

PS : Saya seorang ilmuwan sosial yang baru-baru ini mulai menggunakan R. Beberapa imputasi adalah sebuah pilihan, tapi saya sangat suka betapa elegannya program-program seperti Mplus menangani data yang hilang menggunakan FIML. Sayangnya Mplus tampaknya tidak membandingkan model dalam konteks regresi hierarkis saat ini (tolong beri tahu saya jika Anda tahu cara melakukannya!). Saya bertanya-tanya apakah ada yang serupa di R? Terimakasih banyak!

Sootica
sumber
1
Sudahkah Anda mempertimbangkan WinBugs ? Ini menangani data yang hilang dengan cara alami yang indah.
Mike Dunlavey
Alternatif untuk WinBUGS adalah OpenBUGS atau STAN. Ini harus lebih ramah Mac.
Maxim.K

Jawaban:

15

Penghargaan untuk jawaban ini diberikan kepada @ Yosua yang memberikan jawaban yang bagus ketika saya memposting pertanyaan ini ke komunitas R dan Statistik di Google+. Saya hanya menempelkan jawabannya di bawah.

Untuk menjalankan regresi (tanpa pemodelan variabel laten), harap baca catatan saya yang diketik setelah teks yang dikutip.

Menangani data yang hilang dengan Kemungkinan Maksimum pada semua data yang tersedia (disebut FIML) adalah teknik yang sangat berguna. Namun, ada sejumlah komplikasi yang membuatnya sulit untuk diimplementasikan secara umum. Pertimbangkan model regresi linier sederhana, yang memprediksi beberapa hasil terus menerus dari usia, jenis kelamin, dan jenis pekerjaan. Dalam OLS, Anda tidak perlu khawatir tentang distribusi usia, jenis kelamin, dan pekerjaan, hanya hasilnya. Biasanya untuk prediktor kategori, mereka diberi kode dummy (0/1). Untuk menggunakan ML, asumsi distribusi diperlukan untuk semua variabel dengan ketiadaan. Sejauh ini pendekatan termudah adalah multivariate normal (MVN). Inilah yang misalnya, Mplus akan lakukan secara default jika Anda tidak mencari cara untuk mendeklarasikan tipe variabel (misalnya, kategori). Dalam contoh sederhana yang saya berikan, Anda mungkin ingin berasumsi, normal untuk usia, Bernoulli untuk jenis kelamin, dan multinomal untuk jenis pekerjaan. Yang terakhir ini rumit karena apa yang sebenarnya Anda miliki adalah beberapa variabel biner, tetapi Anda tidak ingin memperlakukannya sebagai Bernoulli. Ini berarti Anda tidak ingin bekerja dengan variabel kode dummy, Anda harus bekerja dengan variabel kategorikal yang sebenarnya sehingga estimator ML dapat menggunakan multinomial dengan benar, tetapi ini pada gilirannya berarti bahwa proses pengkodean boneka perlu dibangun ke dalam model , bukan data. Lagi-lagi menyulitkan hidup. Lebih jauh lagi, distribusi bersama variabel kontinu dan kategoris adalah nontrivial untuk dikomputasi (ketika saya mengalami masalah seperti ini di Mplus, itu cukup cepat mulai rusak dan berjuang). Akhirnya, Anda benar-benar menentukan mekanisme data yang hilang. Dalam gaya SEM, FIML, semua variabel pada dasarnya dikondisikan pada yang lain, tetapi ini belum tentu benar. Sebagai contoh, mungkin usia hilang sebagai fungsi bukan dari jenis kelamin dan jenis pekerjaan, tetapi interaksi mereka. Interaksi mungkin tidak penting untuk hasil akhir, tetapi jika penting untuk ketiadaan usia, maka itu juga harus dalam model, tidak harus model yang menarik, tetapi model data yang hilang.

lavaan akan menggunakan ML untuk MVN, tetapi saat ini saya percaya opsi data kategorikal terbatas (sekali lagi berasal dari bidang SEM, ini standar). Beberapa imputasi pada awalnya tampak kurang elegan karena membuat banyak asumsi tersembunyi di balik FIML (seperti asumsi distribusi untuk setiap variabel dan model prediktif yang diasumsikan hilang pada setiap variabel). Namun, ini memberi Anda banyak kontrol dan secara eksplisit berpikir tentang distribusi masing-masing variabel, dan mekanisme data hilang yang optimal untuk masing-masing bernilai.

Saya menjadi semakin yakin bahwa model Bayesian adalah cara untuk menangani data yang hilang. Alasannya adalah mereka sangat fleksibel dalam memasukkan distribusi untuk setiap variabel, memungkinkan berbagai jenis distribusi, dan dapat dengan mudah memasukkan variabilitas yang diperkenalkan oleh data yang hilang pada prediktor, ke dalam perkiraan model keseluruhan (yang merupakan trik dengan imputasi berganda di mana Anda maka harus entah bagaimana menggabungkan hasil). Tentu saja, metode ini bukan yang termudah dan dapat mengambil banyak pelatihan dan waktu untuk digunakan.

Jadi itu tidak benar-benar menjawab pertanyaan Anda, tetapi menjelaskan sedikit mengapa kerangka kerja yang sepenuhnya umum untuk mengatasi ketiadaan rumit. Dalam paket semutils saya untuk matriks kovarians, saya menggunakan lavaan di bawahnya untuk menggunakan ML. Saya melakukan itu karena saya berasumsi untuk matriks kovarians varians bahwa Anda menggunakan variabel kontinu sehingga saya menganggap pengguna saya sudah mengasumsikan MVN untuk data mereka.

Ini berarti bahwa jika semua variabel dengan yang hilang adalah kontinu, lavaan , paket pemodelan persamaan struktural (SEM) adalah paket yang bagus untuk digunakan untuk FIML di R.

Sekarang kembali ke pertanyaan awal saya. Niat saya adalah memiliki perbaikan ajaib untuk hilangnya ketika menjalankan regresi linier. Semua variabel saya dengan yang hilang bagus dan berkelanjutan. Jadi saya melanjutkan untuk menjalankan analisis saya dalam dua gaya:

  • Cara biasa dengan beberapa imputasi
  • Dalam gaya SEM dengan lavaan menggunakan FIML.

Saya kehilangan banyak hal dengan melakukan regresi dalam gaya SEM. Kedua gaya memberikan koefisien yang sama dan kuadrat R, tetapi dalam gaya SEM saya tidak mendapatkan pengujian signifikansi regresi (nilai-nilai F khas dengan df), sebaliknya saya mendapatkan indeks kecocokan yang tidak membantu karena saya telah menggunakan semua gelar saya. kebebasan. Juga ketika satu model memiliki R2 lebih besar dari yang lain, saya tidak bisa menemukan cara untuk membandingkan apakah perbedaannya signifikan. Selain itu, melakukan regresi dengan cara biasa memberikan akses ke sekelompok pengujian untuk asumsi regresi yang sangat berharga. Untuk jawaban yang lebih terperinci tentang masalah ini, lihat pertanyaan saya yang lain yang dijawab dengan baik oleh @StasK .

Jadi kesimpulannya sepertinya lavaan adalah paket yang layak untuk FIML dalam R, namun penggunaan FIML tergantung pada asumsi statistik dan jenis analisis yang dilakukan. Sejauh regresi (tanpa pemodelan variabel laten) berjalan, menjaganya agar tidak keluar dari program SEM dan menggunakan beberapa imputasi mungkin merupakan langkah yang bijaksana.

Sootica
sumber
1

Sehubungan dengan pertanyaan FIML Anda, saya pikir saya akan membagikan makalah SAS yang luar biasa ini oleh Paul Allison http://www.statributionhorizons.com/wp-content/uploads/MissingDataByML.pdf

Mengingat komentar yang dibuat oleh Paul Allison, orang dapat dengan mudah menerapkan prosedur yang sama dalam R menggunakan lme atau nlmer.

Abu
sumber
-3

ada 2 cara utama menangani data / catatan yang hilang. Anda dapat menghapus seluruh baris pengamatan yang memiliki nilai yang hilang, atau Anda menemukan cara untuk menghasilkan nilai yang hilang ini. Jika Anda mengambil pendekatan pertama, maka Anda mungkin akan kehilangan banyak data. Dalam pendekatan kedua, Anda harus menemukan cara "pintar" untuk menghasilkan data yang hilang ini, sedemikian rupa sehingga perkiraan parameter dari kumpulan data baru, tidak jauh berbeda dari perkiraan paramaters dari kumpulan data yang diamati.

Pendekatan kedua ini disebut Data imputasi, dan ada beberapa paket R yang melakukan itu. Salah satunya disebut mclust, dan fungsi yang Anda butuhkan disebut imputeData. Fungsi ini menggunakan algoritma EM (ekspektasi maksimisasi) untuk memperkirakan parameter dari bagian data yang tidak teramati, mengingat bagian yang diamati. Setelah parameter ditemukan, titik data baru dihasilkan. Asumsi distribusi dari data yang hilang, data yang diamati, dan seluruh set data diasumsikan Gaussian.

Semoga penjelasan ini membantu Anda mencapai apa yang Anda coba lakukan

Lalas
sumber
Terima kasih. Saya mengetahui paket untuk imputasi berganda, tetapi ingin melihat apakah ada cara yang relatif sederhana untuk melakukan estimasi kemungkinan maksimum.
Sootica
Fungsi kemungkinan tidak ditentukan saat sampel, x, hilang. JADI saya pikir Anda mungkin mencari sesuatu yang tidak ada.
Lalas
2
Lihat makalah ini untuk penjelasan tentang penggunaan pendekatan kemungkinan maksimum untuk data yang hilang ( Allison, 2012 ). Apa yang OP jelaskan ada.
Andy W
2
Dan ada sesuatu dari SAS tentang itu. support.sas.com/documentation/cdl/en/statug/63347/HTML/default/… Saya tidak pernah melihat apa pun di R.
Jeremy Miles
Terima kasih @JeremyMiles, saya baru saja memposting apa yang telah membantu saya dalam menjawab pertanyaan ini, berpikir orang lain mungkin merasa terbantu juga. PS. Buku R yang Anda tulis dengan Andy Field is awesome !! : D
Sootica