[Rライブラリ探索]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パッケージ。
こんな感じで見れるみたい。基本的に欠測している観測値にバイアスがないかを、視覚的にチェックできる絵になっている。
- growdotMiss関数
- histMiss関数
- marginplot関数
- mosaicMiss関数
- scattJitt関数
- scattmatrixMiss関数
コードはこちら↓
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) #結果が多いので注意