現在位置 : 統計WEB | コラム | 2009年1-2月

コラム 『統計備忘録』 バックナンバー

2008年 | 2009年 1-2月|3月4月5月6-7月9-10月11-12月 | 2010年 

第59話 「Excelによる欠損値の扱い」

Excelを統計ソフトとして使う上で問題点の1つとなるのが、欠損値の扱いが一定していないことです。関数によっても異なりますし、同じ統計処理でも関数を使った場合と分析ツールを使った場合でも異なります。

次の例を見てください。シート上には2行目から9行目まで空白や文字の混ざったデータを入力してあります。このデータを使って相関係数(CORREL関数)、t検定(TTEST関数)、回帰分析(LINEST関数)の結果がどうなるか比べてみましょう。

空白や文字列を含むデータ

まず、CORRELとTTESTでは空白や文字列が混ざったデータでも計算してくれるようです。CORRELの場合は V1、V2 と数値データが対で揃っているところだけを使って計算しています。従って、2行目から 9行目までを指定してもデータの揃っていない 7行目以降は除かれ、 2行目から 6行目だけが計算対象のデータとなっています。12行目と 13行目の CORREL関数の結果が一致するのはそのためです。

16行目は TTEST関数による対応のない 2群の t検定の結果です。対応のない t検定ではデータが対になっている必要はないので、V1 は 2行目から 8行目まで、V2では 2行目から 6行目までのデータを使って t検定が行われます。

19行目は TTEST関数による対応のある 2群の t検定の結果です。対応のある t検定ではデータが対になっていなければいけないので、CORREL関数と同じくデータが対になっている 2行目から 6行目までが計算対象となります。

22行目は回帰分析の結果ですが、LINEST関数では指定した範囲に空白や文字列など数値以外が含まれていると、このように"#VALUE"を返します。CORRELでは対になっているデータだけで計算してくれるのですから、LINESTも同じように振舞ってくれればと思います。



また、Excelでは分析ツールからも相関係数の計算や、t検定や回帰分析を行うこと出ができますが、不思議なことに、関数と分析ツールでは欠損値の扱いが異なります。

分析ツールで相関を選択

分析ツールの相関ダイアログ

分析ツールから[相関]を選択し、先ほどと同じデータを[入力範囲]に設定して[OK]ボタンをクリックすると、次のメッセージが表示されます。

相関の警告メッセージ

t検定でも、

t検定の警告メッセージ

回帰分析でも、

回帰分析の警告メッセージ

「数値以外のデータがあります」と、すべて撥ねられてしまいました。分析ツールの方がさらに融通が利かなくなっています。

通常の統計ソフトであれば、欠損値を含む場合、有効なデータだけを使って処理してくれるものです。エクセル統計が使われる理由の1つも欠損値対応があるからでしょう。

観測やアンケートによって得られたデータなら欠損値があるのは、ごく普通のことです。次回は、Excelだけで統計処理をしたいという方のために、欠損値を効率よく消すテクニックをお話したいと思います。

2009.1.26



第60話 「Excelで欠損値を含むデータを除く方法」

Excelだけで統計処理をしたいと思ったら、事前に欠損値を含むデータを除いておく必要があります。私が使う方法の1つは COUNT関数とデータの並べ替えを組み合わせるものです。

COUNT関数は文字通り個数を数える関数です。

A2 から C2 の 1行3列のデータについて、各行ごとに、数値が入力されているセルの個数を数えるなら、

=COUNT(A2:C2)

空白以外のセルの個数を数えるなら、

=COUNTA(A2:C2)

空白のセルの個数を数えるなら、

=COUNTBLANK(A2:C2)

と入力します。

欠損値を含むセルの個数を数える

X,Y,Zとも数値が入力されているデータのセットを作りたいなら、COUNTの結果の列で降順に並び替えをします。

欠損値の個数による並び替え

こうすれば、すべて数値が入力されているデータが上側に全部寄せられますから、分析するときには5行目までを範囲指定すれば良いということになります。

COUNTAとCOUNTBLANKは裏返しの関係になります。空白のセルを含むデータだけを除きたいのなら、COUNTAの結果を使って降順に並べ替えるか、COUNTBLANKの結果を使って昇順に並べ替えるかです。

大昔からコンピュータを使っていた方だと、欠損値に「9」や「999」など特定の値を入力しておき、計算時に除くという事をしていたかと思いますが、この方法はあまり賢くありません。除き忘れると欠損値として入れた数値まで含めて計算してしまいますし、COUNTによる並べ替えも意味を成さなくなります。

なお、エクセル統計を使って欠損値を含むデータをクリーニングする場合は、「サンプル・チェック」の機能を利用すると簡単です。

2009.1.30



第61話 「欠損値が生じる理由」

マーケティング・リサーチの世界では、今や WEB上でのアンケートがすっかり主流になってしまったので、データに欠損が生じることが少なくなりました。紙のアンケートであれば、回答者には出来の悪い質問に対し無回答で対抗するという手段がありましたが、WEB のアンケートでは本意ではない選択肢をチェックするか、ブラウザを閉じてアンケートへの協力を止めてしまうか、どちらかということになります。無回答が生じた理由を考えるというのは、アンケートを分析する上でとても大切なことです。普段、WEBアンケートしかしない方は、質問紙による調査にもチャレンジしてみてください。分析する能力、質問を作る能力を高める良い機会になります。

さて、質問紙によるアンケートでは、「質問の不備」以外にも、データに欠損が生じることがあります。「データ入力時のミス」や「回答者の不注意」によるものです。

データの入力ミスを少なくする方法としてダブルパンチ( double punch )があります。ダブルパンチとは2度データを入力することです(データ入力のことを、なぜ、punch 穴を穿つ というのかは、Wikipedia でパンチーカードタビュレーティングマシンの解説を読むと分かります)。ダブルパンチが終わったら2つの入力結果を照合します。2つの入力結果が異なればどちらかが入力ミスをしていることになりますから、そのときは質問紙の回答内容を調べて入力ミスを正します。ダブルパンチをする場合、できれば1度目と2度目で人を換えて入力します。同じ人が2度入力すると、2度目も同じようにミスをする可能性があるからです。また、入力ミスを正すことをベリファイと言います。秀吉のように、2度目の入力をする時、質問ごとに1度目に入力された値と比較し、値が違っているとその場で警告してくれるソフトもあります。手元に入力中の質問紙がありますから、どちらが正しいかすぐに確認できます。

ベリファイ後も残っている欠損値は、回答者の不注意による見落としか、回答者が意図的に回答しなかったのかどちらかということになります。一人ひとりの回答傾向をみればおおよその見当はつきますが、完全に見極めるのは不可能です。見落としがおきやすいのは、質問のレイアウトが悪かったり、同じような回答形式の質問が延々と続いていたり、特定の人にだけ答えさせるようなろ過条件付きの質問があったりするときです。質問が性別、年齢、年収など、回答者のプライバシーに関わる質問になると回答を拒否する人が出てきます。このどちらにもあてはまらない質問で欠損値が多かったとすると、質問の出来が悪かったからでしょう。回答者によるデータの欠損を少なくするには、アンケートのプリテストを行います。試作したアンケートを10人ぐらいに答えてもらい、回答後、どの質問が回答しづらかったかを確認し、本番用のアンケートを手直しすれば良いのです。

こうした手間を掛けても、なお残る欠損値に対しどう対処できるかは、次回、書きたいと思います。

2009.2.10



第62話 「欠損値の対処法」

欠損値は misshing value の訳です。欠測値という言い方もします。今回は欠損値があった場合にどのような対処があるか触れておきます。

欠損値があった場合の対処には、次のような幾つかの方法が考えられています。
1.欠損値を放置
2.欠損値を含むケースをリストごと削除
3.欠損値に平均値を代入
4.欠損値を含む人と属性の似ている人の値を代入( hot-deck imputation )
5.重回帰式などによって値を推計して代入( cold-deck imputation )
6.前回の観測値を代入( LOCF, LVCF )
7.多重代入法により代入( multiple imputation )



1.欠損値を放置

第59話に書いたようにExcelは欠損値の対応が完全ではないので注意が必要ですが、大概の統計ソフトでは、データの中に欠損値があっても放置しておいて大丈夫です。自動的に欠損値を除いて計算してくれます(統計手法によっては欠損値が認められないケースもありますが)。

2.欠損値を含むケースをケースごと削除

これは第60話で書いたように、欠損値を含むケースをケース(行)ごと削除(casewise deletion、listwise deletion)します。1つ1つの変数の中では欠損値が少なくとも、変数によって欠損値のあるケースが異なると、削除してみたら、ほとんど有効ケースが残っていなかったということもあります。統計ソフトで多変量解析を行うと、大概は、自動的にケースワイズ削除の機能が働きます。

3.欠損値に平均値を代入

欠損値の箇所に欠損値を含まないデータから計算した平均値を代入します。この方法であれば代入後に平均値を計算しなおしても平均値は変化しません。ただし、分散、標準偏差は小さくなるので、検定結果に強く影響します。

4.欠損値を含む人と属性の似ている人の値を代入(hot-deck imputation)

ホットデック法、ホットデック代入法と呼ばれています。例えば、欠損値を含む人65歳の女性であれば、残りの有効なデータの中から同じ65歳女性を探し出して、その人の値を欠損値に代入します。同じ属性の人が複数いる場合は、複数の中から無作為に1件を選択して代入します。

5.重回帰式などによって値を推定して代入(cold-deck imputation)

コールドデック法、コールドデック代入法と呼ばれています。欠損値がある変数を目的変数に、属性など目的変数に影響しそうな変数を説明変数にして重回帰分析などにより目的変数を推定するモデル式を作成します。続いて、欠損値がある人について、モデル式を利用し推定値を算出、代入します。

6.前回の観測値を代入(LOCF,LVCF)

同じ人を追跡調査している場合、前回の調査で得られた値を代入します。前の3つの代入法よりも確実な方法と言えます。英語では、last observation carried forward(LOCF)、もしくは、last value carried forward(LVCF) と言います。

7.多重代入法により代入(multiple imputation)

Rubinが1987年に発表した比較的新しい方法です。SAS(SAS9から正規版とのこと)やSPSS(SPSS Missing Valuesオプションの機能)など幾つかの統計ソフトに搭載されているようです。私自身はまだ使ったことがないので詳しいことは分かりません。



上記以外にも対処法があるようですが、まだまだ勉強不足なので、今回は、このあたりで筆を置きます。

2009.2.17




欠損を含むデータの解析について解説している書籍

統計学大系シリーズ 『不完全データの統計解析』 岩崎 学 著 エコノミスト社(2002)
シリーズ確率と情報の科学 『調査観察データの統計科学―因果推論・選択バイアス・データ融合』 星野 崇宏著 岩波書店(2009)

変更追記 2012.1.17


次のコラムへ 最新のコラムへ

統計WEB

主催:BellCurve