Dlaczego ta wielokrotna kalkulacja jest niskiej jakości?

9

Rozważ następujący kod R:

> data <- data.frame(
            a=c(NA,2,3,4,5,6),b=c(2.2,NA,6.1,8.3,10.2,12.13),c=c(4.2,7.9,NA,16.1,19.9,23))
> data
   a     b    c
1 NA  2.20  4.2
2  2    NA  7.9
3  3  6.10   NA
4  4  8.30 16.1
5  5 10.20 19.9
6  6 12.13 23.0

Jak widać, opracowałem te dane z grubsza c = 2*b = 4*a. Jako taki, oczekiwałbym, że brakujące wartości będą w pobliżu a=1, b=2, c=12. Więc przeprowadziłem analizę:

> imp <- mi(data)
Beginning Multiple Imputation ( Sat Oct 18 03:02:41 2014 ):
Iteration 1 
 Chain 1 : a*  b*  c*  
 Chain 2 : a*  b*  c*  
 Chain 3 : a*  b*  c*  
Iteration 2 
 Chain 1 : a*  b   c   
 Chain 2 : a*  b*  c*  
 Chain 3 : a   b*  c   
Iteration 3 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a*  b*  c*  
Iteration 4 
 Chain 1 : a   b   c   
 Chain 2 : a   b*  c   
 Chain 3 : a*  b   c   
Iteration 5 
 Chain 1 : a   b   c*  
 Chain 2 : a   b*  c   
 Chain 3 : a   b*  c   
Iteration 6 
 Chain 1 : a*  b   c*  
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 7 
 Chain 1 : a   b   c   
 Chain 2 : a   b*  c   
 Chain 3 : a   b   c*  
Iteration 8 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b*  c*  
Iteration 9 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c*  
 Chain 3 : a   b   c   
Iteration 10 
 Chain 1 : a   b*  c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 11 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 12 
 Chain 1 : a   b   c   
 Chain 2 : a*  b   c   
 Chain 3 : a   b   c   
Iteration 13 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c*  
 Chain 3 : a   b   c*  
Iteration 14 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 15 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c*  
Iteration 16 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b*  c   
Iteration 17 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 18 
 Chain 1 : a   b   c*  
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 19 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c*  
Iteration 20 
 Chain 1 : a   b   c*  
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 21 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 22 
 Chain 1 : a   b   c*  
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 23 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 24 
 Chain 1 : a   b   c*  
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 25 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 26 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 27 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 28 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 29 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
mi converged ( Sat Oct 18 03:02:45 2014 )
Run 20 more iterations to mitigate the influence of the noise...
Beginning Multiple Imputation ( Sat Oct 18 03:02:45 2014 ):
Iteration 1 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 2 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 3 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 4 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 5 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 6 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 7 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 8 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 9 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 10 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 11 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 12 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 13 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 14 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 15 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 16 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 17 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 18 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 19 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Iteration 20 
 Chain 1 : a   b   c   
 Chain 2 : a   b   c   
 Chain 3 : a   b   c   
Reached the maximum iteration, mi did not converge ( Sat Oct 18 03:02:48 2014 )

I w końcu zaobserwował kompletny zestaw danych:

> mi.completed(imp)
[[1]]
  a     b    c
1 2  2.20  4.2
2 2  2.20  7.9
3 3  6.10 16.1
4 4  8.30 16.1
5 5 10.20 19.9
6 6 12.13 23.0

[[2]]
  a     b    c
1 2  2.20  4.2
2 2  6.10  7.9
3 3  6.10  7.9
4 4  8.30 16.1
5 5 10.20 19.9
6 6 12.13 23.0

[[3]]
  a     b    c
1 2  2.20  4.2
2 2  2.20  7.9
3 3  6.10  7.9
4 4  8.30 16.1
5 5 10.20 19.9
6 6 12.13 23.0

Jak widać, przypisane wartości nie są tym, czego się spodziewałem. W rzeczywistości wyglądają jak wynik pojedynczej imputacji, ponieważ pozornie brakujące wartości zostały pozyskane z sąsiednich rekordów.

czego mi brakuje?

Powinienem zauważyć, że moja „wiedza” w statystyce jest głównie ograniczona do tego, co niejasno pamiętam z kursu wprowadzającego, który odbyłem około 14 lat temu. Po prostu szukam prostego sposobu na przypisanie brakujących wartości, nie musi to być najbardziej zoptymalizowana, ale musi mieć jakiś sens (czego nie mogę zrozumieć na podstawie tych wyników). Może się zdarzyć, że minie jest to właściwe podejście do osiągnięcia tego, czego chcę (być może przewiduję, że zamiast tego należy zastosować), więc jestem otwarty na sugestie.

Próbowałem też z podobnym podejściem mice, które doprowadziło do podobnych wyników.

AKTUALIZACJA Amelia działa świetnie po wyjęciu z pudełka. Byłoby jednak interesujące wiedzieć, czego brakuje mi w przypadku myszy mi / myszy.

t0x1n
źródło
1
Co ogólnie próbujesz zrobić z wielokrotnym przypisaniem? Trudno mi odpowiedzieć na to pytanie bez większego kontekstu. [Nie wydaje mi się również zaskakujące, że jakość przypisania była niska, biorąc pod uwagę, że pracujesz tylko z trzema zmiennymi i sześcioma rekordami]
Patrick S. Forscher
@ PatrickS.Forscher miałeś rację. Właśnie wypróbowałem podobny test ze 100 rekordami i wyniki były zgodne z oczekiwaniami. Proszę udzielić tej odpowiedzi, abym mógł ją zaakceptować, a jeśli mógłbyś podać pewne minimalne kryteria dla pomyślnego przypisania, byłoby świetnie.
t0x1n
Co powiesz na następujące wyniki? > mi.completed(imp) [[1]] a b c 1 0.289 2.20 4.2 2 2.000 2.57 7.9 3 3.000 6.10 12.7 4 4.000 8.30 16.1 5 5.000 10.20 19.9 6 6.000 12.13 23.0 [[2]] a b c 1 0.603 2.20 4.2 2 2.000 5.82 7.9 3 3.000 6.10 13.4 4 4.000 8.30 16.1 5 5.000 10.20 19.9 6 6.000 12.13 23.0 [[3]] a b c 1 1.05 2.20 4.2 2 2.00 4.18 7.9 3 3.00 6.10 12.0 4 4.00 8.30 16.1 5 5.00 10.20 19.9 6 6.00 12.13 23.0Przepraszam za formatowanie, ale myślę, że to najlepsze, co mogę zrobić w komentarzu.
Aleksandr Blekh
Amelia II jest wyraźnie przeznaczona do wielokrotnego przypisania szeregów czasowych przekrojów (aka panelowe). MICE jest dla danych nie przekrojowych szeregów czasowych (lub przynajmniej MICE produkuje słabe imputacje dla takich szeregów czasowych, patrz Honaker, J. i King, G. (2010). Co zrobić z brakującymi wartościami w szeregach czasowych dane przekroju American Journal of Political Science , 54 (2): 561–581.)
Alexis
@AleksandrBlekh Też ich nie lubię, oczekiwałbym czegoś bliższego x/ 2x/4x
t0x1n

Odpowiedzi:

13

Biorąc pod uwagę, że używasz sześciu przypadków [rekordów] i trzech zmiennych, jakość imputacji będzie dość niska.

Aby zobaczyć, dlaczego tak się stanie, pamiętaj, że wielokrotne przypisanie działa poprzez wypełnienie brakujących wartości prawdopodobnymi przypisanymi wartościami. Te kalkulowane wartości są obliczane w osobnych zestawach danych (powrócę do sposobu, w jaki te kalkulowane wartości są uzyskiwane w dalszej części tej odpowiedzi). Wartości przypisane będą się nieznacznie różnić w zależności od zestawu danych.m

Tak więc, biorąc pod uwagę statystyczną wielkość zainteresowania (np. Średnią , współczynnik regresji itp.), Można użyć zestawów danych do oszacowania średniego błędu standardowego dla w obrębie zestawów danych (ilość, którą nazywam wewnątrz- wariancja imputacji lub ) i stopień, w jakim zmienia się w zestawach danych (ilość, którą nazywam wariancją między imputacją lub ).qmqmU¯qmB

Związek między jakością imputacji, iBU¯

Można użyć wariancji wewnątrz imputacji i wariancji między imputacją, aby uzyskać oszacowanie stopnia, w jakim brakująca informacja wpłynęła na oszacowaną wielkość statystyczną. Oczywiście im więcej informacji zostało utraconych, tym gorsza jest jakość przypisania. Oszacowanie informacji utraconych z powodu zaginięcia jest oznaczone etykietą i jest określone następującą formułą:U¯Bγ

γ=r+2df+3r+1

r w tym wzorze jest stosunkiem wariancji między imputacją do wariancji wewnątrz imputacji :BU¯

r=(1+1m)BU¯

Zatem wysokie wartości skutkują wysokimi wartościami , co z kolei spowoduje wysokie wartości . Z kolei wysoka wartość oznacza więcej informacji utraconych z powodu brakujących danych i gorszej jakości.Brγγ

df we wzorze na jest również funkcją i . W szczególności, jest szacowane przezγBU¯df

df=(m1)(1+mU¯(m+1)B)2

Zatem oprócz zwiększenia stosunku wariancji między imputacją do wariancji wewnątrz imputacji, zwiększenie również zmniejsza . Spowoduje to wyższą wartość , wskazując więcej informacji utraconych z powodu zaginięcia i gorszej jakości.Bdfγ

Podsumowując, wyższe wartości wariancji między imputacją wpływają na jakość imputacji na dwa sposoby:B

  1. Wyższe wartości zwiększają stosunek wariancji między imputacjami do wariancji w ramach imputacji, obniżając jakość imputacjiB
  2. Wyższe wartości zmniejszają dostępne stopnie swobody, obniżając jakość imputacjiB

Zależność między liczbą przypadków aB

Biorąc pod uwagę dwa podobne zestawy danych, zestaw danych z mniejszą liczbą przypadków będzie miał większą wariancję imputacji .B

Stanie się tak, ponieważ, jak opisałem powyżej, wariancja między imputacją jest obliczana przez obliczenie statystycznej ilości zainteresowania w każdym z przypisanych zestawów danych i obliczenie stopnia, w jakim zmienia się w każdym z zestawów danych. Jeśli dany zestaw danych ma większą liczbę przypadków, ale podobną liczbę brakujących wartości jak inny, mniejsza część wartości będzie mogła zmieniać się w każdym z przypisanych zestawów danych, co oznacza, że ​​ogólna zmienność będzie mniejsza w całym przypisane zestawy danych.qmqmmq

Zatem ogólnie zwiększenie liczby przypadków (lub ściślej zmniejszenie odsetka brakujących wartości) zwiększy jakość imputacji.

Zależność między liczbą zmiennych aB

Biorąc pod uwagę dwa podobne zestawy danych, zestaw danych z większą liczbą zmiennych będzie miał mniejszą wariancję między imputacją , o ile te dodatkowe zmienne informują o brakujących wartościach.B

Stanie się tak, ponieważ na ogół brakujące wartości dla danej zmiennej są „wypełniane” przy użyciu informacji z innych zmiennych w celu wygenerowania wiarygodnych oszacowań brakujących wartości (szczegółowe szczegóły dotyczące sposobu generowania tych oszacowań będą się różnić w zależności od implementacji MI używasz). Więcej informacji w postaci dodatkowych zmiennych spowoduje, że wartości imputowane będą bardziej stabilne, co skutkuje mniejszą zmiennością statystycznej wielkości zainteresowania w każdym z przypisanych zbiorów danych.qm

Zatem ogólnie zwiększenie liczby zmiennych dostępnych w zbiorze danych zwiększy jakość imputacji, o ile te dodatkowe zmienne będą informować o brakujących wartościach.

Bibliografia

Rubin, DB (1996). Wielokrotne przypisanie po 18+ latach. Journal of the American Statistics Association , 91, 473–489.

Schafer, JL (1999). Wielokrotna imputacja: podkład. Metody statystyczne w badaniach medycznych , 8, 3-15.

Patrick S. Forscher
źródło