이 다중 대치의 품질이 낮은 이유는 무엇입니까?


9

다음 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

보시다시피 데이터를 대략적으로 설계했습니다 c = 2*b = 4*a. 따라서 누락 된 값이 주위에있을 것으로 기대합니다 a=1, b=2, c=12. 그래서 분석을 수행했습니다.

> 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 )

그리고 마지막으로 완성 된 데이터 세트를 관찰했습니다.

> 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

보시다시피 대치 된 값은 내가 기대 한 것이 아닙니다. 실제로 는 결 측값이 인접 레코드에서 가져온 것처럼 단일 대치 의 결과처럼 보입니다.

내가 무엇을 놓치고 있습니까?

통계의 "지식"은 ~ 14 년 전의 입문 과정에서 내가 막연하게 기억하는 것으로 제한되어 있다는 점에 유의해야합니다. 누락 된 값을 대치하는 간단한 방법을 찾고 있습니다. 가장 최적화 된 값 일 필요는 없지만 일종의 의미가 있어야합니다 (이 결과를 만들 수는 없습니다). mi내가 원하는 것을 달성하기위한 올바른 접근법이 아닌 경우가 있을 있습니다 (아마도 대신 예측을 사용해야합니다).

또한와 비슷한 접근법을 시도 mice하여 비슷한 결과를 얻었습니다.

업데이트 Amelia기본적으로 훌륭하게 작동합니다. 그래도 mi / mouse로 누락 된 것을 아는 것이 여전히 흥미 롭습니다.


1
일반적으로 다중 대치로 무엇을하려고합니까? 좀 더 문맥이 없으면이 질문에 대답하기가 어렵습니다. [또한 3 개의 변수와 6 개의 레코드로 작업하고 있다는 점을 고려할 때 대치의 품질이 낮다는 사실은 놀랍지 않습니다.]
Patrick S. Forscher

@ PatrickS.Forscher 당신이 옳았습니다. 방금 100 개의 레코드로 비슷한 테스트를 시도했으며 결과는 예상대로였습니다. 받아 들일 수 있도록 답변을 작성하십시오. 성공적인 대치에 대한 야구장 최소값을 지정할 수 있으면 좋을 것입니다.
t0x1n

다음 결과에 대해 무엇을 말 하시겠습니까? > 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형식에 대해 죄송하지만 주석에서 할 수있는 최선이라고 생각합니다.
Aleksandr Blekh

Amelia II는 단면 시간 시리즈 (일명 패널 연구)의 다중 대치에 사용됩니다. MICE는 비단면 시계열 데이터를위한 것입니다 (또는 적어도 MICE는 이러한 시계열에 대해 불량한 대치를 생성합니다. Honaker, J. and King, G. (2010) 참조) 시계열 간 결 측값에 대한 조치 -섹션 데이터 : American Journal of Political Science , 54 (2) : 561–581.)
Alexis

@AleksandrBlekh 나는 가까이에 뭔가를 기대, 그들도 좋아하지 않아 x/ 2x/4x
t0x1n

답변:


13

6 개의 사례 (레코드)와 3 개의 변수를 사용하는 경우 대치의 품질이 상당히 떨어집니다.

이것이 왜 발생하는지 알아 보려면 결측 가능한 값으로 결 측값을 채워 다중 대치가 작동한다는 점을 기억하십시오. 이러한 대치 된 값은 개의 개별 데이터 세트 로 계산됩니다 (이 대변 값은이 답변 후반부에서 파생되는 방법으로 돌아갑니다). 대치 된 값은 데이터 집합마다 약간 다릅니다.m

따라서, 통계적으로 관심있는 양이 주어지면 q (예 : 평균, 회귀 계수 등) m 에 대한 평균 표준 오차를 추정하기위한 데이터 세트 qm 데이터 세트 (내부 측정 편차라고 부르는 수량 또는 U¯) 정도q 에 따라 다릅니다 m 데이터 세트 (간 측정 분산이라고 부르는 수량 또는 B).

대치 품질과의 관계 B, U¯

내부-내 편차를 사용할 수 있습니다 U¯ 그리고 측정 간 차이 B통계량의 추정 된 추정치가 정보 누락에 의해 영향을받는 정도의 추정치를 도출하기 위해. 물론 더 많은 정보를 잃을수록 대치의 질이 떨어집니다. 정보 손실에 대한 추정치는 표시되어 있습니다 γ다음 공식으로 제공됩니다.

γ=r+2df+3r+1

r 이 공식에서 측정 값 사이의 분산 비율입니다 B 측정 범위 내에서 U¯:

r=(1+1m)BU¯

따라서 높은 값 B 가치가 높다 r결과적으로 높은 값을 얻습니다. γ. 높은 가치γ결과적으로 데이터 누락 및 품질 대치 불량으로 인해 더 많은 정보가 손실됨을 나타냅니다.

df 에 대한 공식에서 γ 또한 기능입니다 BU¯. 구체적으로 특별히,df ~에 의해 추정된다

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

따라서, 측정 간 편차 대 측정 내 분산의 비율을 높이는 것 외에도 B 또한 감소 df. 이것은 더 높은 값을 초래할 것입니다γ누락 및 품질 대치 불량으로 인해 더 많은 정보가 손실됨을 나타냅니다.

요약하면, 측정 간 편차의 높은 값 B 두 가지 방식으로 대치 품질에 영향을줍니다.

  1. 더 높은 가치 B 대치들 사이의 분산 대 대치들 내의 분산의 비율을 증가시켜, 대치 품질을 감소시킨다
  2. 더 높은 가치 B 가용 자유도 감소, 대치 품질 감소

사례 수와의 관계 B

다른 두 개의 유사한 데이터 세트가 주어지면 사례 수가 적은 데이터 세트는 측정 간 편차가 더 큽니다. B.

위에서 설명한 바와 같이, 관심있는 통계량을 계산하여 입력 간 편차를 계산하기 때문에 이런 일이 발생합니다. q 각각의 m 대치 된 데이터 세트 및 계산 정도 q 각각에 따라 다릅니다 m데이터 세트. 주어진 데이터 세트의 케이스 수가 많지만 결 측값이 다른 경우와 비슷할 경우, 더 작은 값의 비율은m 대치 된 데이터 세트. q 전가 된 데이터 세트에서

따라서 일반적으로 사례 수를 늘리면 (보다 정확하게는 결 측값의 비율을 낮추면) 대치 품질이 향상됩니다.

변수 개수와 B

다른 두 개의 유사한 데이터 세트가 주어지면, 더 많은 수의 변수를 가진 데이터 세트는 측정 간 편차가 더 작습니다. B추가 변수가 결 측값에 대한 정보를 제공하는 한.

이는 일반적으로 주어진 변수에 대한 결 측값이 다른 변수의 정보를 사용하여 결 측값에 대한 추정치를 생성하여 "채워져"발생하기 때문에 발생합니다 (이 추정값이 생성되는 방법에 대한 특정 세부 사항은 MI 구현에 따라 다름). 사용하고 있습니다). 추가 변수 형태의 정보가 많을수록 대치 된 값이 더 안정되어 통계적 관심 량의 변동이 적습니다.q 각각에 걸쳐 m 대치 된 데이터 세트.

따라서 일반적으로 추가 변수가 결 측값에 대해 정보를 제공하는 한 데이터 세트에서 사용 가능한 변수 수를 늘리면 대치 품질이 향상됩니다.

참고 문헌

Rubin, DB (1996). 18 세 이후의 여러 대치. 미국 통계 협회 저널 , 91, 473-489.

Schafer, JL (1999). 다중 대치 : 프라이머. 의학 연구의 통계 방법 , 8, 3-15.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.