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 mi
nie 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.
> 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.0
Przepraszam za formatowanie, ale myślę, że to najlepsze, co mogę zrobić w komentarzu.x
/2x
/4x
Odpowiedzi:
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 ).q m q m U¯ q m B
Związek między jakością imputacji, iB U¯
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 γ
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.B r γ γ
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.B df γ
Podsumowując, wyższe wartości wariancji między imputacją wpływają na jakość imputacji na dwa sposoby:B
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.q m q m m q
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.q m
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.
źródło