[]Rライブラリの探索6(欠測データ)

欠測データに対しては取り除くか補完するかで対処するけど、補完はMultiple Imputation(MI)で行うことが多い。

Task ViewではMultivariateのグループにMissing Dataの項目があった。

ちなみにRubin先生は欠測メカニズムを次のように分類している。

  • Missing Completely at Random (MCAR)
  • Missing at Random (MAR)
  • Missing not at Random (MNAR)

MCARとMARの場合はMIしても大丈夫だけど、MNARのときはバイアスが入る。

MNARの場合はそもそもデータにバイアスが入っているので、事前知識が重要になってきます。

Rの場合はライブラリmiceでimputationができる。

mice関数で欠測値を推定→complete関数で欠測部分に埋め込むという流れです。

Chained Equationを使っているらしいけど、ここのPDFをみる限り、MCMCと似たような式なんだけどなぁ。

mitoolsで使われているsmiというデータは、imputationを5回行ったデータをひとまとめにしたものみたい。

mice→completeでいくつかデータを作って、smiのようなデータ形式にして、with等を使ってパラメータ推定をするみたい。

だけど、smiのようなデータ形式をどうやって作るのかがちょっと分からない。。

今調査中。

あとおまけで、欠測情報を視覚化するVIMパッケージ。

こんな感じで見れるみたい。基本的に欠測している観測値にバイアスがないかを、視覚的にチェックできる絵になっている。

f:id:isseing333:20100531221120j:image

f:id:isseing333:20100531221139j:image

f:id:isseing333:20100531221157j:image

f:id:isseing333:20100531221216j:image

f:id:isseing333:20100531221037j:image

f:id:isseing333:20100531221356j:image


コードはこちら↓

library(mitools)
data(smi)
models<-with(smi, glm(drinkreg~wave*sex,family=binomial()))
summary(MIcombine(models))
betas<-MIextract(models,fun=coef)
vars<-MIextract(models, fun=vcov)
summary(MIcombine(betas,vars))

library(mice)		#Multivariate Imputation by Chained Equations
imp <- mice(nhanes)
imp$imp$bmi
complete(imp, action=1)
complete(imp, action=2)

library(mvnmle)
data(apple)
mlest(apple)
data(missvals)
mlest(missvals, iterlim=400)

library(VIM)
example(aggr)
example(barMiss)
example(growdotMiss)
example(histMiss)
example(mapMiss)
example(marginmatrix)
example(marginplot)
example(mosaicMiss)
example(parcoordMiss)
example(pbox)		#結果が多いので注意(クリックする場所によって動作が違うみたい)
example(scattJitt)
example(scattmatrixMiss)
example(scattMiss)
example(spineMiss)	#結果が多いので注意

ページTOPへ