R de eksik veri için tam bilgi maksimum olasılığı


19

Bağlam : Bazı eksik verilerle hiyerarşik regresyon.

Soru : R'deki eksik verileri ele almak için tam bilgi maksimum olabilirlik (FIML) tahminini nasıl kullanabilirim? Tavsiye edeceğiniz bir paket var mı ve tipik adımlar nelerdir? Çevrimiçi kaynaklar ve örnekler de çok yardımcı olacaktır.

Not : Yakın zamanda R'yi kullanmaya başlayan bir sosyal bilimciyim. Çoklu itimat bir seçenek, ancak Mplus gibi programların eksik verileri FIML kullanarak ne kadar zarif bir şekilde ele aldığını gerçekten seviyorum. Ne yazık ki Mplus şu anda hiyerarşik regresyon bağlamında modelleri karşılaştırmıyor gibi görünüyor (lütfen bunu yapmanın bir yolunu biliyorsanız bana bildirin!). R'de benzer bir şey olup olmadığını merak ettim. Çok teşekkürler!


1
Eğer kabul mü WinBugs ? Eksik verileri güzel bir şekilde işler.
Mike Dunlavey

WinBUGS'a bir alternatif OpenBUGS veya STAN'dır. Bunlar daha fazla Mac dostu olmalıdır.
Maxim.K

Yanıtlar:


16

Bu cevabın kredisi, bu soruyu Google + 'daki R ve İstatistik topluluğuna gönderdiğimde harika bir cevap veren @Joshua'ya gidiyor . Cevabını aşağıda yapıştırıyorum.

Koşu regresyonu için (gizli değişken modelleme olmadan), lütfen alıntı yapılan metinden sonra yazdığım notlarımı okuyun.

Tüm mevcut verilerde (FIML olarak adlandırılan) eksik verileri Maksimum Olabilirlikle ele almak çok yararlı bir tekniktir. Bununla birlikte, genel bir şekilde uygulanmasını zorlaştıran bir takım komplikasyonlar vardır. Yaş, cinsiyet ve meslek türünden sürekli sonuç tahmin eden basit bir doğrusal regresyon modelini düşünün. OLS'ta yaş, cinsiyet ve mesleğin dağılımı hakkında endişelenmiyorsunuz, sadece sonuç. Tipik kategorik öngörücüler için kukla kodlanmıştır (0/1). ML'yi kullanmak için eksik olan tüm değişkenler için dağıtımsal varsayımlar gereklidir. Şimdiye kadar en kolay yaklaşım çok değişkenli normaldir (MVN). Değişken türünü (örneğin, kategorik) bildirme yolunuza gitmezseniz, örneğin Mplus varsayılan olarak bunu yapar. Verdiğim basit örnekte, muhtemelen yaş için normal, seks için Bernoulli ve iş türü için multinomal olduğunu varsaymak istersiniz. İkincisi zor çünkü aslında sahip olduğunuz birkaç ikili değişken, ama onları Bernoulli olarak ele almak istemiyorsunuz. Bu, kukla kodlanmış değişkenlerle çalışmak istemediğiniz anlamına gelir, gerçek kategorik değişkenle çalışmanız gerekir, böylece ML tahmincileri çok amaçlı bir şekilde kullanabilir, ancak bu, kukla kodlama işleminin modele yerleştirilmesi gerektiği anlamına gelir. veri değil. Yine hayatı zorlaştırıyor. Ayrıca, sürekli ve kategorik değişkenlerin ortak dağılımı hesaplamak önemsizdir (Mplus'ta böyle sorunlarla karşılaştığımda, oldukça hızlı bir şekilde parçalanmaya ve mücadele etmeye başlar). Son olarak, ideal olarak eksik veri mekanizmasını belirlersiniz. SEM tarzında, FIML, tüm değişkenler esasen diğerlerine koşulludur, ancak bu her zaman doğru değildir. Örneğin, yaş cinsiyet ve meslek türünün değil, etkileşimlerinin bir işlevi olarak belki de eksiktir. Etkileşim odak sonucu için önemli olmayabilir, ancak yaşta eksiklik için önemliyse, o zaman modelde olmalı, mutlaka temel ilgi modeli değil, eksik veri modeli olmalıdır.

lav, MVN için ML kullanacak, ancak şu anda kategorik veri seçeneklerinin sınırlı olduğuna inanıyorum (yine SEM alanından geliyor, bu standart). Birden fazla itimat ilk başta daha az zarif görünüyor çünkü FIML'nin arkasındaki birçok gizli varsayımı açıkça gösteriyor (her değişken için dağıtım varsayımları ve her değişken için eksiklik olduğu varsayılan tahmin modeli gibi). Bununla birlikte, her bir değişkenin dağılımı hakkında çok fazla kontrol ve açıkça düşünmenizi sağlar ve her biri için en uygun eksik veri mekanizması değerlidir.

Bayesian modellerinin eksik verileri ele almanın yolu olduğuna ikna oldum. Bunun nedeni, her bir değişken için dağılımları dahil etme konusunda çok esnek olmaları, birçok farklı dağıtım türüne izin vermeleri ve öngörücülerdeki eksik verilerin getirdiği değişkenliği genel model tahminlerine kolayca dahil edebilmeleridir. sonra bir şekilde sonuçları birleştirmek zorunda). Tabii ki, bu yöntemler en kolay değildir ve çok fazla eğitim ve zaman alabilir.

Bu, sorunuza gerçekten cevap vermiyor, ancak eksiklikle başa çıkmak için tamamen genel çerçevelerin neden zor olduğunu biraz açıklıyor. Kovaryans matrisleri için semutils paketimde, ML kullanmak için altında lav kullanıyorum. Bunu yaptığım için sürekli değişkenleri kullandığınız bir varyans kovaryans matrisi için varsayıyorum, böylece kullanıcılarımın zaten verileri için MVN olduğunu varsayalım.

Bu, eksik olan tüm değişkenlerin sürekli olması durumunda, lav , yapısal bir denklem modelleme (SEM) paketinin R'deki FIML için kullanılması güzel bir paket olduğu anlamına gelir.

Şimdi ilk soruma geri döneceğim. Niyetim, doğrusal regresyon yaparken eksiklik için sihirli bir düzeltme yapmaktı. Eksik olan tüm değişkenlerim güzel ve süreklidir. Bu yüzden analizlerimi iki tarzda yürütmeye devam ettim:

  • Birden fazla empoze ile olağan yol
  • FIML kullanarak lav ile SEM tarzında.

SEM tarzında gerileme yaparak birçok şeyi kaçırıyordum. Her iki stil de benzer katsayılar ve R kareleri verdi, ancak SEM stilinde regresyonun (df ile tipik F değerleri) önem testini alamadım, bunun yerine tüm derecelerimi kullandığım için yardımcı olmayan uygun indeksler aldım özgürlük. Ayrıca bir modelin diğerinden daha büyük bir R2'si olduğunda, farkın önemli olup olmadığını karşılaştırmanın bir yolunu bulamadım. Ek olarak, regresyonun olağan şekilde yapılması, paha biçilmez regresyon varsayımları için bir grup teste erişim sağlar. Bu konuda daha ayrıntılı bir cevap için @StasK tarafından güzelce cevaplanan diğer soruma bakın .

Sonuç olarak, lavın R'de FIML için iyi bir paket olduğu görülüyor, ancak FIML kullanımı istatistiksel varsayımlara ve yürüttüğü analiz türüne bağlıdır. Regresyon (gizli değişken modelleme olmadan) söz konusu olduğunda, onu SEM programlarından uzak tutmak ve çoklu impütasyon kullanmak muhtemelen akıllıca bir harekettir.



-3

eksik verileri / kayıtları işlemenin 2 ana yolu vardır. U ya eksik değeri olan tüm gözlem satırını siler ya da bu eksik değeri üretmenin bir yolunu bulursunuz. İlk yaklaşımı alırsanız, çok fazla veri kaybedebilirsiniz. İkinci yaklaşımda, yeni veri kümesinin parametre tahminleri, gözlemlenen veri kümesinin paramatör tahminlerinden çok farklı olmayacak şekilde, bu eksik verileri oluşturmak için "akıllı" bir yol bulmak zorundasınız.

Bu ikinci yaklaşıma Veri yerleştirme denir ve bunu yapan birkaç R paketi vardır. Bunlardan birine mclust ve ihtiyacınız olan işleve imputeData denir. Bu fonksiyon, gözlemlenen kısım göz önüne alındığında, veri setinin gözlemlenmeyen kısmının parametrelerini tahmin etmek için EM (beklenti maksimizasyonu) algoritmasını kullanır. Parametreler bulunduğunda, yeni veri noktası oluşturulur. Eksik verilerin, gözlemlenen verilerin ve tüm veri kümesinin dağıtım varsayımının Gauss olduğu varsayılır.

Umarım bu açıklama u yapmaya çalıştığın şeyi başarmana yardımcı olur


Teşekkürler. Çoklu ithalata yönelik paketlerin farkındayım, ancak maksimum olasılık tahmini yapmanın nispeten basit bir yolu olup olmadığını görmek istiyorum.
Sootica

Olabilirlik işlevi, örnek x, eksik olduğunda tanımlanmaz. Yani ben var olmayan bir şey arıyor olabilir düşünüyorum.
Lalas

2
Eksik verilere maksimum olabilirlik yaklaşımlarının kullanılmasının açıklaması için bu makaleye bakınız ( Allison, 2012 ). OP'nin açıkladığı şey var.
Andy W

2
Ve burada SAS'tan bir şey var. support.sas.com/documentation/cdl/tr/statug/63347/HTML/default/… R'de hiç bir şey görmedim.
Jeremy Miles

Teşekkürler @ JeremyMiles, bu soruyu yanıtlamamda bana yardımcı olanları gönderdim, başkalarının da faydalı bulabileceğini düşündüm. PS. Andy Field ile yazdığınız R kitap 's awesome! : D
Sootica
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.