世の中に存在するデータには完全なものの方がむしろ少なくて、観測不能だったり、回答が得られなかったりと、データが欠損していることのほうが当たり前なのかもしれません。
ということで、今回は、「欠損値補完をしてから分析する」 がテーマです。
こちらの記事は、Tableau+R連携で回帰分析をやってみる(重回帰分析)の続きとなります。
さて airquality のデータを全部使って重回帰分析を行おうとすると以下のようなエラーが出てしまいます。
Tableau +R連携では入力の数と出力の数が一致していなければならないというルールがありまして(でないとどこに何を表示していいのか判断がつかないため)、例えば説明変数である、 Temp、Ozone,Solar.Rのデータが全てそろっている9月については重回帰による予測ができるのですが、そのほかについてはデータに欠損があるため、以下のようなエラーが返されます。
airquality のデータ欠損については、Rのmd.pattern を使って一発で確認することができます。
> data <- airquality
> md.pattern(data)
”0”は欠損値が存在するということで、Ozoneだけ欠損しているデータが35個、
Solar.Rが欠損しているデータが5個、OzoneとSolar.R両方欠損しているデータが2個ということになります。
欠損値の数やデータの分布についてはTableauのビンの作成とヒストグラムによる可視化がわかりやすいです。
◆ Rによる欠損値の保管
ではここでRを用いて欠損値の保管をします。
miceをインストールして呼び出します。
> install.packages(“mice”)
Installing package into ‘C:/Users/XXXXX/Documents/R/win-library/3.3’
(as ‘lib’ is unspecified)
trying URL ‘https://cran.rstudio.com/bin/windows/contrib/3.3/mice_2.30.zip‘
Content type ‘application/zip’ length 1476729 bytes (1.4 MB)
downloaded 1.4 MB
package ‘mice’ successfully unpacked and MD5 sums checked
The downloaded binary packages are in
> library(mice)
Warning message:
パッケージ ‘mice’ はバージョン 3.3.3 の R の下で造られました
mice()を使用して補完データを作成します。データセットの候補をいくつ設定するかは-mで設定します。
tempData <- mice(data,
m=10, # refers to the number of imputed datasets. Five is the default value.
maxit=50,
meth=’pmm’, # refers to the imputation method, pmm: predictive mean matching
seed=500)
summary(tempData)
補完したデータを確認するには
tempData$imp$Solar.R とします。
> tempData$imp$Solar.R
行が欠損値のvariable、列が作成した補完データセットの種類です。mice()の-mを10にしておけば10列作成されます。この中から好きなデータを選んでデータをcomplete()でデータを確定させます。
> completedData <- complete(tempData,3) # 選択した番号
補完する前のデータフレームと補完結果をつなげ、CSVファイルに出力します。
> OriginCompletedData <- cbind (airquality,completedData)
> write.table(OriginCompletedData, file=”c:/tmp/origin+completeData.csv”, sep=”,” )
出力されたファイルにTableau から接続し、以下のように可視化を行います。
色の変わっているところが欠損値補完されているところです。
実際には補完されたデータだけ利用すれば良いので、補完されたデータのみをCSVに落とします。
>write.table(completedData, file=”c:/tmp/completedData.csv”, sep=”,” )
Tableau から接続し、補完されていないものとデータソースの置換を行います。
画面左上データソースを右クリックしデータソースの置換で、補完されたデータソースと置き換えるだけです。
これで欠損値のために重回帰分析の結果を返すことができなかった点に関しても予測値が計算できるようになりました。
使用したワークブックはこちらからダウンロードください。