R tips : 欠測の補完

人間はよく、ぽっかり空いた穴を埋めたくなるものだと思います。心にぽっかり空いた穴、マイクラでクリーパーに吹き飛ばされた穴、そしてデータに潜む欠測の穴...。今日は欠測の補完に役に立つR言語のパッケージ : simputationの紹介です。

以下のcsvファイルには、東京または大阪の男女計10名に月収をインタビューしたときの値がレコードされています。変数列には
・性別
・地域
・月収(万円)
があり、無回答の項目は空白にしています。

問題 : 以下のようにデータを確認してもらうと、5行目の東京・男性の月収が無回答であったことが確認できます。この欠測部分に東京・男性の中央値を補完するスクリプトを書いてみてください。

# 必要なパッケージのロード
library(readr)
library(dplyr)
library(simputation)    # install.pacakges("simputation")でインストールしておく。

# データの読み込み
# 東京・男性のデータは1行目・3行目・5行目
impute_demo <- read_csv("impute_demo.csv",
                        locale = locale(encoding = "cp932"))
impute_demo

解答例 : simputationパッケージのimpute_median関数を用いる。impute_median関数の使い方は、次の通りです。

impute_median(dat = 対象のデータフレーム, formula = 欠測補完のモデル)

今回であれば以下のようなスクリプトで補完できるでしょう。

# 欠測補完
# 欠測でない1行目と3行目の中央値で、5行目を補完する。
# -> 5行目が、(28.6 + 30.9)/2 = 29.75で補完されていればよい。
impute_demo %>% impute_median(formula = 月収 ~ 地域 + 性別)

なお、Tokyo.R 第65回ではgepuroさんによるsimputationパッケージの紹介が行われていたようで、とても分かりやすい資料がslideshareにアップロードされています。

なお今回の記事は、欠測の補完に便利なパッケージをさらっと紹介しましたが、本来の欠測の補完では「欠測のメカニズム」を考えることがとても重要になります。ぜひ調べてみてください。

おわりに

今回はRのクイズ形式で記事を書いてみました。短めの記事を心掛けたのですが、楽しんでいただけたでしょうか。この記事をきっかけに
・欠測データの面白さ
・R言語の頼もしさ
を一層感じて頂けていたら、僕はとても嬉しいです。それではまた次回。

サポートをいただいた場合、新たに記事を書く際に勉強する書籍や筆記用具などを買うお金に使おうと思いますm(_ _)m