AMELIA II - 4. A User's Guide (PART03)


AMELIA II: A Program for Missing Data

James Honaker, Gary King, and Matthew Blackwell

Version 1.7.4
December 5, 2015

Vignettes:
view-source:https://cran.r-project.org/web/packages/Amelia/index.html


4.8 진단 (Diagnostics)

Amelia는 생성된 전가를 조사하는 많은 진단 도구를 현재 제공한다.

4.8.1 밀도 비교 (Comparing Densities)

전가 모델의 타당성을 확인하는 방법 관측된 값의 분포에서 전가된 값의 분포를 점검한다. 분명히 우리는 기대할 수 없다, priori, 이런 분포는 전가된 값은 간측된 값과 체계적으로 다를 수 있으므로 구별 가능할 것이다 - 이것은 시작하기 위해 전가하는 근복적인 이유이다. 이상한 분포를 가지거나 관측 데이터와 너무 동떨어진 전가는 아마도 전가 모델이 적어도 약간의 조사가 필요하고 그리고 약간의 향상 가능성이 있음을 나타낸다.
plot 메서드는 amelia의 결과로 동작한다 그리고, 기본적으로, 전가된 값의 연관된 빈도의 겹칩을 가지고 관측 데이터의 연관된 빈도을 그림으로써 각 변수를 보여준다.
> plot(a.out, which.vars = 3:6)
인수 which.vars는 그림에서 어느 변수인지 나타내는 경우(이 경우에, 우리는 3번째에서 6번째를 취함).
Figure 7: amelia의 결과가 적용된 plot 메서드의 결과. 상단 패널에서, 평균 전가 분포(빨강)은 각 변수에서 관측된 값의 분포(검정)에서 겹쳐진다. 하단 패널은, 결측 값이 없고 그리고 관측된 값의 분포가 단순하게 그려졌다(파랑). 지금 전가된 tariff 비는 관측된 tariff 비와 매우 비슷함에 주목, 그러나 Polity 점수의 전가는 대우 다르다. 이것은 만약 다른 유형의 정권에서 다른 비율로 결측이 있는 경우라면 타당하다.
전가 곡선(빨강)은 m 데이터셋에서 평균(mean) 전가의 밀도를 그린다. 이것은, 변수에서 결측이 있는 각 셀을 위해, 진단(diagnostic)은 각각 m 데이터셋에서 그 셀의 평균을 찾을 것이다 그리고 밀도 플롯에서 그 값을 사용한다. 검은색 분포는 관측된 데이터의 밀도이다. 변수가 완전하게 관측되었을 때, 그들의 분포는 파란색으로 그려진다. 이러한 그래프는 당신이 전가 밀도가 관측된 밀도와 비교하는 방법을 검사도록 허락할 것이다. 이런 그래프에 대한 약간의 논쟁은 Abayomi, Gelman and Levy(2008)에서 찾을 수 있다. 최소한, 이런 그래프는 평균 전가가 알려진 경계 내에 있는지 검사하기 위해 사용할 수 있다, 그런 경계가 어떤 변수 또는 설정에 존재할 때.
우리는 직접적으로 개개의 변수를 생성하기 위한 함수 compare.density를 또한 사용할 수 있다.
> compare.density(a.out, var = "signed")

4.8.2 과전가 (Overimpute)

과전가 (Overimpute)는 우리가 전가 모델의 적합을 판단하기 위해 개발한 기술이다. 결측 데이터 메커니즘의 본질 때문에, 그것는 전가 모델에서 평균 예측이 복구를 시도하는 관측되지 않은 값에 근접한지 아닌지 논함은 불가능하다. 정의에서 결측 데이터는 이 비교를 생성하기 위해서 존재하지 않는다, 그리고 만약 존재한다면 우리는 더이상 전가를 필요로 하지 않을 것이다 또는 그들의 정밀도에 대해 걱정하지 않을 것이다. 어쨌든, 응용 연구자의 자연스러운 질문은 이런 전가된 값은 얼마나 정확한가? 이다.
과전가는 마치 그들이 실제 결측이 있는 것처럼 각 전가한 값에 순차적인 처리를 수행한다. 결국은 각 된측된 값에서 그러면 그 관측된 값에서 수 백 개의 전가 값을 생성한다, 마치 그것이 결측인 것처럼. m = 5 전가는 대부분의 전가 모델에서 충분하지만, 이런 큰 수는 우리에게 전가된 값이 가질 수 있는 어떤 신뢰 구간을 구축하도록 허용한다, 어떤 관측된 데이터가 결측이 되게 함. 우리는 그러면 우리의 관측된 데이터가 그것이 결측된 경우 전가될 경우에 범위 내에 있게 하는 경향인지 아닌지 그래픽으로 점검할 수 있다.
예로, 우리는 다음을 실행함으로써 우리의 데이터에서 과전가 분석을 실행할 수 있다
> overimpute(a.out, var = "tariff")
Figure 8: 과전가 분석 그래프의 예. 여기서 90% 신뢰 구간은 관측 데이터가 그 데이터셋에서 그것이 결측인 경우 전가를 가질 수 있는 경우 명세를 작성하였다, 전가 모델이 주어짐. 점은 평균 전가를 표현한다. 신뢰 구간의 90 퍼센트는 y = x 선에 걸쳐 있다, 실제 관측 값은 이 범위 내에 있음을 의미. 선의 색(범례 코드로써)은 그 관측에서 결측 패턴으로 결측된 관측의 부분을 표현한다.
우리의 과전가 분석은, Figure 8에 보여 줌, 사용자가 선택한 변수에서 모든 관측 값에서 이 절차를 실행한다. 우리는 관측의 실제 값에 대한 각 관측의 추정 그래프를 그릴 수 있다. 이 그래프에서, y = x 선은 완전하게 일치하는 선을 나타낸다; 이것은, 만약 전가 모델이 실제 값의 완전한 예측을 했다면, 모든 전가는 이 선 위에 있을 것이다. 각 관측에서, Amelia는 사용자가 전가 모델의 행동을 육안으로 점검하도록 허용하는 90% 신뢰 구간을 그린다. 얼마나 많은 신뢰 구간이 y = x 선에 걸쳐 있는지 점검함으로써, 우리는 전가 모델이 관측의 실제 값 예측에서 얼마나 자주 신뢰할 수 있는지 말할 수 있다.
때때로, 과전가는 비직관적인 결과를 보일 수 있다. 예로, 다른 관측은 관측된 공변량의 다른 수를 가질 수 있다. 만약 예측에 유용한 공변량 그들 자신이 결측이면, 그러면 이 예측에서 신뢰 구간은 이 너무 크게 된다. 극단적으로, 우리가 과전가를 시도하는 관측된 값이 그 관측에서 유일한 값인 경우에 관측될 수 있다. 그러므로 우리가 그것을 결측으로 가장할 때 가지는 그 관측을 전가하기 위해 어떤것도 남아있지 않는다, 그 변수의 평균과 분산을 제외하고도. 이 경우에, 우리는 매우 큰 신뢰 구간을 기대함이 옳을 것이다.
Figure 9: 과전가 분석 그래프의 다른 예. 빨간 선은 관측에서 작은 공변량을 가지고 그리고 전가 값 전체에서 큰 분산을 가지는 이런 관측임에 주의.
이 그래프의 예는 figure 9에서 보여진다. 이 시뮬레이트된 이변량 데이터셋에서, 하나의 변수는 과전가 되었다 그리고 결과가 보여졌다. 두번째 변수는 관측되거나, 신뢰 구간이 매우 작고 그리고 전가(노랑)는 매우 정밀한 어떤 경우에, 또는 두번째 변수는 단순히 평균과 분산 변수에서 전가되는 이런 변수인 어떤 경우에서 결측이다, 그리고 전가(빨강)은 매우 큰 값을 가지고 그리고 넓게 퍼저있다. 결측의 특별한 경향에서 결측 정보의 량이 증가함으로, 우리는 신뢰 구간의 폭이 증가됨을 기대할 수 있다. 신뢰 구간의 색은 결측의 그 경향에서 관측되는 공변량의 백분률을 반영한다, 바닥에서 길이로 반영.

4.8.3 과산포 시작 값 (Overdispersed Starting Values)

만약 Amelia에 제공된 데이터가 신통치 않은 우도를 가진다면, EM 알고리즘은 전역 최대 우도 지표를 찾는 문제를 가질 것이고 그리고 시작 값은 효율적인 전가를 시작할 수 있다. EM 알고리즘은 결정론적(deterministic)이기 때문에, 당신이 시작하는 변수 공간에서 점은 마지막에서 영향을 줄 것이다, 비록 이것은 우도가 오로지 하나의 방법을 가질 때 관계가 없을지라도. 어쨌든, 만약 EM 사슬의 시작 값은 지역 최대(또는 부분 최대, local maximum)에 근접한다면, 알고리즘은 이 최대를 찾을 것이다, 전역 최대값에서 멀어지는 것을 알지 못함. 전가가 시작 값에 의존하지 않는 점을 확실히 하기 위하여, 좋은 검증은 EM 알고리즘을 다중으로 실행해야 한다, 분산된 시작 값 그리고 그들의 수렴을 검즘. 잘 동작하는 우도에서, 우리는 모든 이런 연쇄 수렴(all of these chains converging)은 같은 값을 보일 것이다, 그리고 이것은 선호하는 전역 최대가 합리적이라는 결론. 다른 한 편으로, 우리는 EM 연쇄 수렴(our EM chain converging)은 다중 위치(multiple locations)를 보일 것이다. 알고리즘은 또한 완전하게 구별되지 않는 변수 공간의 부분을 탐색할 것이다, 동등한 우도의 리지(ridge) 처럼, 예에서 발생한 것 처럼, 만약 같은 변수가 우연히 전가 모델에서 두번 포함이지만.
Amelia는 추정 최대에서 과분포가 되는 다중 시작 값으로 EM 사슬(EM chain)을 실행하기 위한 진단을 포함한다. 과분포 진단은 각 사슬의 경로 그래프를 보여준다. 그러므로 이런 사슬은 극도로 많은 차원이 있는 공간에서 이동하고 그리고 그래픽으로 보여줄 수 없기 때문에, 진단은 최종 모델이 모달한 가장 큰 주요 요소와 연관된 경로를 보여줌으로써 EM 경로의 차원을 감소한다. 사용자는 2개의 가장 큰 주요 요소가 이동하는 그래프 사이에서 선택할 수 있다, 또는 더 단순하게 x-축으로 시간(반복 번호)을 가지는 가장 큰 차원. EM 사슬의 번호는 또한 조정할 수 있다. 진단이 그래프로 그려지자마자, 사용자는 같은 점으로 모든 체인 수렴하는지 점검하기 위한 결과를 육안으로 조사할 수 있다.
우리의 원본 모델에서, 이것은 단순히 disperse를 호출한다:
> disperse(a.out, dims = 1, m = 5)
> disperse(a.out, dims = 2, m = 5)
m은 EM 사슬이 시작하는 장소의 수를 나태내고 그리고 dims 보여줄 주요 요소의 차원의 수인 경우.
Figure 10: 모든 EM 사슬이 같은 방식으로 수렴하는 경우에 과분산 분석의 그림. 왼쪽에서, y 축은 (매우 높은 차원의) 변수 공간에서 이동을 표현한다, 그리고 x-축은 사슬의 반복 수를 표현한다. 오른쪽에서, 우리는 EM 사슬의 끝 점의 처음 두개 주요 요소를 사용하여 2 차원으로 변수 공간을 시각화했다. 반복 수는 y 축에 더이상 표현하지 않는다, 비록 반복 간에 거리는 각 체인에서 화살표-머리 사이 거리로 표시되지만.
하나의 차원에서, 진단은 y-축에 사슬의 이동을 그린고 그리고 시간, 반복 수의 형상, x-축으로. Figure 10은 2개의 예제에서 그림을 보여준다. 첫번째는 잘 동작하는 우도를 보여준다, 시작 값은 모든 수렴은 같은 점으로 수렴하므로. 검은 수평 선은 Amelia는 시작 값을 선택하기 위해 기본 메서드를 사용할 때 수렴하는 점이다. 진단은 가능한 최대값으로 이 사슬의 끝 점을 가진다 그리고 만약 사슬이 다른 방식(mode)로 끝난다면 확인하기 위해 시작값은 그것에서 멀리 흩어진다.

4.8.4 시계-열 그림 (Time-series plots)

위 논의에서, 시간에 대한 정보 경향 그리고 고정된 효과는 더 나은 전가를 생성하는데 도움을 줄 수 있다. 우리 전가 모델의 타당성을 점검하는 하나의 방법은 그것이 시계 열에서 결측 값을 어떻게 예측하는지 보아야 한다. 만약 말레시아 관세 비율에서 전가는 1989년 또는 1991년에 관측된 값 보다 1990년에 놀랍게 더 높다, 우리는 전가 모델에서 문제가 있는지 걱정할 것이다. 이런 시계 열 점검은 tscsPlot 명령어로 쉽게 할 수 있다. 각 결측 시간 구간에서 전가된 값의 분포에 따라 관측된 시계-열을 그리기 위해 단순히 변수(var 인수를 가짐)와 횡단면(cs 인수를 가짐) 선택해라. 예로, 우리는 다음을 실행한다:
> tscsPlot(a.out.time, cs = "Malaysia", main = "Malaysia (with time settings)",
+          var = "tariff", ylim = c(-10, 60))
figure 11의 그림을 얻기 위함. 여기서, 검정 점은 1980에서 2000까지 말레시아에서 관측된 관세 비율이다. 빨간 점은 각 결측 값에서 평균 전가이다, 그들을 95%의 신뢰 폭을 가짐. 우리는 그 관측에서 전가 분포를 얻기 위해 각 결측 값의 100 회 전가함으로써 이런 폭을 그린다.

Figure 11: 말레시아에서 관세 비율. tscsPlot 함수의 예, 검은색 점은 시계 열에서 관측된 값이다 그리고 빨간 점은 전가 분포의 평균이다. 빨간 선은 전가 분포의 95% 신뢰 폭을 표현한다.
Figure 11 에서, 우리는 전가된 1990년 관세 비율이 그것의 범위 값을 가지는 근접한 선에 있다. 또한 시작하는 값 그리고 시계 열의 끝은 높은 전가 변동을 가짐에 주목. 이것은 전가 모델에서 시간 다항식의 적합은 시계 열의 시작과 끝에서 높은 변동을 가지기 때문이다. 이것은 비직관적이다 왜냐하면 이러한 점은 예측 능력을 동인하는 소수의 이웃을 가지기 때문이다.
순서대로 당부하는 말이 있다. 전가와 관측된 값의 히스토그램(histogram)을 비교함으로써, 결측 값은 관측된 시계 열 보다 시스템적으로 다름이 타당할 것이다. 예로, 만약 1990년에 말레시아의 중요한 금융 위기는 정부가 무역을 닫는 원인이었다면, 그러면 우리는 결측 관세 비율은 관측된 시계 열 보다 상당히 다른게 될 것이라 기대할 것이다. 만약 우리의 전가 모델에 이 정보를 가지면, 우리는 이것들의 시계-열 그림에서 선-밖에 있는 전가가 보이기를 기대할 것이다. 만약, 다른 한 편으로, 우리가 이런 정보를 가지지 않는다면, 우리는 MAR 추정의 이런 위반을 지적하기 위해 실패하는 "좋은" 시계-열 그림을 볼 것이다. 우리의 전가 모델은 결측 값의 부정확한 추정을 만들 것이다 그러므로 그것은 결측 그리고 실제 관측되지 않은 관세 비율 모두 다른 변수에 의존한다고 인지하지 못할 것이다. 그러므로, tscsPlot은 전가 모델 그리고 다양한 전가 모델의 효율 비교로 분명한 문제를 찾기 위해 유용하다, 그러나 그것은 MAR의 검증 불가능한 추정을 말하지 않을 것이다.

4.8.5 결측 지도 (Missingness maps)

데이터셋에서 결측을 탐색하는 하나의 유용한 툴은 결측 지도(missingness map)이다. 이것은 결측 상태의 데이터셋 그리드와 컬러 그리드를 시각화하는 지도이다. 그리드의 열은 변수이다 그리고 행은 관측이다, 여느 스트레드시트 프로그램 처럼. 이 풀은 데이터에서 결측 패턴의 빠른 요약을 가능하게 한다.
만약 우리가 amelia의 출력에 missmap 함수를 단순히 호출하면,
> missmap(a.out)
우리는 figure 12그림을 얻는다. missmap 함수는 컬럼을 정열한다 그래서 변수는 왼쪽에서 오른쪽으로 결측의 감소 순서이다. 만약 cs 인수를 amelia 함수에 설정하면, 행의 표기는 각 횡-단면이 시작하는 위치를 가리킬 것이다.

Figure 12: freetrade 데이터의 결측 지도. 결측 값은 황갈색이디 그리고 관측된 값은 붉은 색이다.
Figure 12에서, 관세 비율은 데이터에서 대부분 결측 변수이고 그리고 어떤 관측은 덩어리로 결측이 있는 경향임이 명백하다. 총 국제 준비금(intresmi) 그리고 금융 개방성(fivop), 다른 한 편으로, 각 횡-단명의 끝에 대부분 결측된다. 이것은 병합에 의한 결측으로 추정된다, 다른 시간 수렴을 가지는 변수가 하나의 데이터셋으로 생성하기 위해 병합할 때. 때때로 결측의 이런 종류는 데이터가 병합될 때 인공의 날짜이다 그리고 연구자는 그것은 연관된 변수의 갱신된 버전에서 해결할 수 있다.
결측 지도는 데이터에서 결측 패턴을 이해하기 위한 중요한 툴이다 그리고 전가 모델 또는 데이터 수집 과정을 향상하는 가능한 방법임을 종종 나타낸다.

4.9 사후-전가 변환 (Post-imputation Transformations)

많은 경우에, 그것은 미래의 분석에 사용하기 위한 전가 변수의 변환을 생성하는데 유용하다. 예로, 하나는 2개의 변수 간에 상호작용 생성을 원할 것이다 또는 전가된 데이터에 로그-변환을 수행하기를 원할 것이다. 이것을 수행하기 위해, Amelia는 amelia 출력에 각 전가된 데이터셋에 변수를 추가하거나 덮어 쓰기 위한 transform 함수를 가진다. 예로, 만약 우리가 gdp.pc 변수의 로그-변환 생성을 원한다면, 우리는 따라오는 명령어를 사용할 수 있다:
> a.out <- transform(a.out, lgdp = log(gdp.pc))
> head(a.out$imputations[[1]][,c("country", "year","gdp.pc", "lgdp")])

    country  year  gdp.pc   lgdp
1  SriLanka  1981   461.0  6.133
2  SriLanka  1982   473.8  6.161
3  SriLanka  1983   489.2  6.193
4  SriLanka  1984   508.2  6.231
5  SriLanka  1985   525.6  6.264
6  SriLanka  1986   538.9  6.290
두 개의 변수 간에 상호작용을 생성하기 위해, 우리는 단순히 다음을 사용할 것이다:
> a.out <- transform(a.out, pol_gdp = polity * gdp.pc)
각 변환이 기록되고 그리고 summary 명령어는 수행된 각 변환을 출력한다:
> summary(a.out)

Amelia output with 5 imputed datasets.
Return code: 1
Message: Normal EM convergence.

Chain Lengths:
--------------
Imputation 1: 14
Imputation 2: 15
Imputation 3: 9
Imputation 4: 14
Imputation 5: 10
Rows after Listwise Deletion: 96
Rows after Imputation: 171
Patterns of missingness in the data: 8

Fraction Missing for original variables:
-----------------------------------------

         Fraction Missing
year              0.00000
country           0.00000
tariff            0.33918
polity            0.01170
pop               0.00000
gdp.pc            0.00000
intresmi          0.07602
signed            0.01754
fiveop            0.10526
usheg             0.00000
lgdp              0.00000
pol_gdp           0.01170

Post-imputation transformed variables:
-----------------------------------------

          Transformations
lgdp =        log(gdp.pc)
pol_gdp = polity * gdp.pc
갱신된 결과는 새로운 amelia 결로로써 거의 정확하게 일치함에 주목. 당신은 변환된 결과를 amelia에 역으로 전달할 수 있다 그리고 그것을 전가 모델에 추가할 것이고 그리고 당신이 수행한 변환을 가지고 이러한 전가를 갱신할 것이다.

4.10 분석 모델 (Analysis Models)

전가는 최종 모델과는 달리 대부분은 데이터 처리 단계이다. 마지막에, amelia의 결과를 다른 함수로 전달하기 쉽다. 분석 모델을 실행하기 위한 가장 쉽고 통합된 방법은 Zelig 패키지의 zelig 함수로 결과를 전달이다. 예로, Milner and Kubota (2005) 에서, 종속 변수는 관세 비율이다. 우리는 실행함으로써 단순히 원본 데이터를 그들의 분석에서 나온 table 5.1을 복제할 수 있다
> require(Zelig)
> z5 <- zls$new()
> z5$zelig(tariff ~ polity + pop + gdp.pc + year + country, data = freetrade)

> z5

Model:

Call:
z5$zelig(formula = tariff ~ polity + pop + gdp.pc + year + country,
data = freetrade)

Residuals:
    Min     1Q  Median     3Q     Max
-30.764  -3.259  0.087  2.598  18.310

Coefficients:
                     Estimate  Std. Error  t value   Pr(>|t|)
(Intercept)          1.97e+03    4.02e+02     4.91   3.6e-06
polity              -1.37e-01    1.82e-01    -0.75      0.45
pop                 -2.02e-07    2.54e-08    -7.95   3.2e-12
gdp.pc               6.10e-04    7.44e-04     0.82      0.41
year                -8.71e-01    2.08e-01    -4.18   6.4e-05
countryIndonesia    -1.82e+02    1.86e+01    -9.82   3.0e-16
countryKorea        -2.20e+02    2.08e+01    -10.61  < 2e-16
countryMalaysia     -2.25e+02    2.17e+01    -10.34  < 2e-16
countryNepal        -2.16e+02    2.25e+01    -9.63   7.7e-16
countryPakistan     -1.55e+02    1.98e+01    -7.84   5.6e-12
countryPhilippines  -2.04e+02    2.09e+01    -9.77   3.7e-16
countrySriLanka     -2.09e+02    2.21e+01    -9.46   1.8e-15
countryThailand     -1.96e+02    2.10e+01    -9.36   3.0e-15

Residual standard error: 6.22 on 98 degrees of freedom
  (60 observations deleted due to missingness)
Multiple R-squared: 0.925,        Adjusted R-squared: 0.915
F-statistic: 100 on 12 and 98 DF,  p-value: <2e-16

Statistical Warning: The GIM test suggests this model is misspecified
 (based on comparisons between classical and robust SE's; see http://j.mp/GIMtest).
 We suggest you run diagnostics to ascertain the cause, respecify the model
 and run it again.

Next step: Use 'setx' method
전가 데이터로 같은 모델로 실행하면 대부분 구별이 된다. 단순히 amelia 출력을 가지고 원본데이터 셋을 대체한다:
> z5 <- zls$new()
> z5$zelig(tariff ~ polity + pop + gdp.pc + year + country, data = a.out)

> z5

Model: Combined Imputations
                     Estimate  Std.Error  z value  Pr(>|z|)
(Intercept)          2.58e+03  6.00e+02     4.305  1.67e-05 ***
polity               3.29e-01  3.04e-01     1.084  2.78e-01
pop                 -1.07e-07  4.26e-08    -2.521  1.17e-02 .
gdp.pc              -2.30e-04  1.26e-03    -0.182  8.55e-01
year                -1.22e+00  3.12e-01    -3.923  8.75e-05 ***
countryIndonesia    -1.03e+02  3.10e+01    -3.308  9.41e-04 **
countryKorea        -1.28e+02  3.65e+01    -3.508  4.52e-04 **
countryMalaysia     -1.30e+02  3.76e+01    -3.452  5.56e-04 **
countryNepal        -1.24e+02  3.84e+01    -3.231  1.23e-03 *
countryPakistan     -8.05e+01  3.35e+01    -2.399  1.64e-02 .
countryPhilippines  -1.20e+02  3.55e+01    -3.381  7.22e-04 **
countrySriLanka     -1.20e+02  3.66e+01    -3.275  1.06e-03 *
countryThailand     -1.14e+02  3.51e+01    -3.258  1.12e-03 *
---
Signif. codes: '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

For results from individual imputed datasets, use summary(x, subset = i:j)
Next step: Use 'setx' method
Zelig는 전가 데이터에 분석 모델을 실행하는 하나의 방법이다, 그러나 확실히 유일한 방법은 아니다. amelia 결과에서 imputations 목록은 각 전가 데이터셋을 포함한다. 그러므로, 사용자는 전가 수 많큼 반복을 단순하게 프로그램할 수 있다 그리고 각 전가 데이터셋에 분석을 실행하고 그리고 King et al. (2001) 과 Schafer (1997)이 설명한 규칙을 이용하여 결과를 묶는다.게다가, 사용자는 4.2.1에 설명된 write.amelia 함수를 사용하여 그들의 전가를 쉽게 내보낼 수 있다 그리고 분석 모델을 위한 R 보단 다른 통계 패키지를 사용한다.
Amelia는 또한 mi.meld 함수를 사용하여 임의의 모델에서 나온 관심사를 결합하는 능력을 가졌다. 이 명령어는 량 그리고 각 전가 데이터셋에서 표준 에러를 위한 열을 가지는 행렬을 가진다. 그러면 다중 전가를 결합하여 전체 추정 수량을 생성하는 표준 규칙을 사용한다.
> b.out<-NULL
> se.out<-NULL
> for(i in 1:a.out$m) {
+    ols.out <- lm(tariff ~ polity + pop + gdp.pc, data = a.out$imputations[[i]])
+    b.out <- rbind(b.out, ols.out$coef)
+    se.out <- rbind(se.out, coef(summary(ols.out))[,2])
+ }
> combined.results <- mi.meld(q = b.out, se = se.out)
> combined.results

$q.mi
      (Intercept)    polity        pop     gdp.pc
[1,]        31.86  -0.01699  3.345e-08  -0.002591

$se.mi
      (Intercept)  polity        pop     gdp.pc
[1,]        2.338  0.2699  6.394e-09  0.0006314
R에서 사용 가능한 자원을 추가하기 위해, 사용자는 그들의 분석 모델을 구현하기 위해 Stata에서 할 수 있다. 번전 11에서, Stata는 다중 전가 데이터셋을 처리하는 내장된 기능을 가진다. 이 기능을 이용하기 위해, 단순히 write.amelia 함수를 사용하여 "stacked" 전가를 내보내라:
> write.amelia(a.out, separate = FALSE, file.stem = "outdata", format = "dta")
이 쌓여진 데이터셋을 Stata에서 열자마자, 당신은 Stata에게 mi import flong 명령어를 사용하여 전가 데이터셋이라고 말해야 한다:
mi import flong, m(imp) id(year country) imp(tariff-usheg)
명령어는 몇 가지 옵션을 가진다: m은 전가 변수를 나타낸다 (write.amelia에서 impvar로 설정), id는 식별 변수를 설정한다 그리고 imp는 전가된(또는 전가에 포함된) 변수를 설정한다. tariff-ushegStata는 전가된 것으로 tariffusheg 사이의 변수의 구간으로 처리해야 한다고 나타낸다. 우리가 전가된 것으로 데이터셋을 설정하자마자, 우리는 데이터를 분석하기 위해 내장된 mi 명령어를 사용할 수 있다:
. mi estimate: reg tariff polity pop gdp_pc

Multiple-imputation estimates              Imputations     =          5
Linear regression                          Number of obs   =        171
                                           Average RVI     =     1.4114
                                           Complete DF     =        167
DF adjustment:    Small sample             DF:     min     =      10.36
                                                   avg     =      18.81
                                                   max     =      37.62
Model F test:        Equal FMI             F( 2, 10.4)     =      15.50
Within VCE type:           OLS             Prob > F        =     0.0008

---------------------------------------------------------------------------
      tariff |      Coef.  Std. Err.     t  P>|t|  [95% Conf. Interval]
-------------+-------------------------------------------------------------
      polity |  -.2058115  .3911049  -0.53  0.610  -1.072968   .6613452
         pop |   3.21e-08  8.72e-09   3.68  0.004   1.27e-08   5.14e-08
      gdp_pc |  -.0027561   .000644  -4.28  0.000  -.0040602  -.0014519
       _cons |   32.70461  2.660091  12.29  0.000   27.08917   38.32005
---------------------------------------------------------------------------

4.11 The amelia class

amelia 함수의 출력은 S3 클래스 "amelia"의 인스턴스이다. amelia 클래스의 인스턴스는 단순히 전가 데이터셋 보다 더 많은 것을 포함한다. 클래스의 mu 객체는 사후 작업은 완전한 데이터의 평균을 가진다. covMatrices는 완전한 데이터의 공분산 행렬(covariance matrices)을 가진다. 이것들을 EM 알고리즘에 전달하는 변수에 해당함에 주의해라. 즉, 그들은 변환된 후에 변수를 언급한다, 중앙화와 척도화 변환.
iterHist 객체는 m의 3-열 행렬의 목록이다. 각 행의 행은 EM 알고리즘 반복에 해당한다. 첫번째 열은 얼마나 많는 변수가 그 반복에서 수렴했는지 가리킨다. 두번째 컬럼은 만약 EM 알고리즘이 수렴된 변수의 수가 감소하는 단계가 있으면 가리킨다. 3번째 컬럼은 반복에서 공분산 행렬이 단수형(singular)인지 아인지 나타낸다. 분명히, 마지막 2개의 열은 EM 알고지즘이 변수 공간에서 문제가 있는 부분으로 언제 들어갔느지 나타낸다.

댓글 없음:

댓글 쓰기