データファイルが作成されてまず最初にしなければならないのは,原データが正確に入力されているかどうかの確認である。カルテ調査などの場合には,カルテからチェックリストに転記する際にも,誤りが生じる可能性がある。また,キーボードからの入力時にもさまざまな入力ミスが生じる可能性がある。
データファイルが正確に作成されているかどうかの最も完全なチェックは,データファイルの各変数の一覧表を出力し,原データと比較することである。この場合にも,一人で行うのではなく,二人で読み合せをするほうがチェックもれは少なくなるであろう。
★データファイルの一覧表示をするプログラムによるデータ一覧出力例 記号: 変数名 A: Check B: Year C: Seq_Y D: Jinkou E: Shibou F: IsiSuu G: Jumyou_M H: Jumyou_F ( ? means missing value, * means overflow ) 出力中に「*」が表示される変数は印字桁数を大きくしてやる必要がある。 Case No. A B C D E F G H 1: 2 1920 -5 55963053 2541.1 ? ? ? → 欠損値は「?」で示される 2: 2 1921 -4 56665900 2274.0 ? ? ? 3: 2 1922 -3 57390100 2242.4 ? ? ? 4: 2 1923 -2 58119200 2292.7 ? ? ? 5: 2 1924 -1 58875600 2131.5 ? ? ? 6: 2 1925 0 59736822 2026.7 ? ? ? : 途中省略 : 62: 3 1981 56 117204000 614.5 138.2 73.79 79.13 63: 3 1982 57 118008000 603.2 141.5 74.22 79.66 64: 3 1983 58 118786000 623.0 ? 74.20 79.78 65: 3 1984 59 119523000 619.3 150.6 74.54 80.18 66: 3 1985 60 120265700 625.5 ? 74.78 80.48 67: 3 1986 61 120946000 620.6 157.3 75.23 80.93 68: 3 1987 62 121535000 618.1 ? 75.61 81.39
各変数の取り得る値はわかっているので,各変数の度数分布をとることによって,あり得ない値の存在が発見できる。連続変数について度数分布をとる場合には,適切な階級幅の設定が必要である。しかしこの方法では,変数が取り得る値の範囲内にある誤入力はチェックできない。例えば身長について,156.5cm が誤って 165.5cm と入力されていてもこの方法では検出できない。
各変数について,データファイル中に存在する欠損値を含む全ての値の出現頻度と,指定した範囲外の値や欠損値を持つケースのリストを作成するようなプログラムもある。
データファイル中に存在する欠損値を含む全ての値の出現頻度は,連続変数を対象とした場合には,ケース数が多いと若干繁雑な出力が得られる。しかし,異常値を発見できる可能性が高いので注意深くチェックする必要がある。例えば,整数値しか取らないはずなのに小数点以下の桁を持つデータがまじっているとか,ケース番号が重複してつけられているのを発見できる。値の小さいほうと大きいほうに注目して,事前に設定したチェック範囲が妥当でなければ,チェック範囲を変えて再分析する必要がある。
欠損値を持つケースのリストは,データの補完作業を行う場合に便利であろう。
★ プログラム使用例 変数 正常とみなせる値の範囲 欠損値 School 1,2 33E33 (=33×1033) Height 145〜170 33E33 ***** データファイル中のデータチェック ***** ------------------------------------------------------------------------------ Summary of appeared data value of School Value N 1: 1.000000 234 2: 1.100000 1 → 範囲内であるが,この変数は1と2の値しか取らないので 3: 2.000000 223 誤入力である。変数の値の頻度表は,正常範囲内の異常 値を発見するために注意してチェックすべきである。 ------------------------------------------------------------------------------ List of outliers or missing values of Height Case ID. Value 32 143.0000 ケース番号 32 は指定した範囲外の値をとる 73 144.0000 75 143.1000 139 0.3300000E+35 ケース番号 139 は欠損値(0.33×1035 = 33×1033)を持つ 149 171.0000 : 以下略 ------------------------------------------------------------------------------ Summary of appeared data value of Height データファイル中に出現した値の頻度 データの小さいほうと大きいほうのケースに注目! 正常とみなす値を再設定してチェックすることが必要になる場合もある。 Value N Value N Value N 1: 142.600000 1 57: 154.900000 1 113: 161.000000 7 2: 143.000000 1 58: 155.000000 12 114: 161.100000 1 3: 143.100000 1 59: 155.100000 2 115: 161.200000 2 4: 144.000000 1 60: 155.200000 4 116: 161.300000 2 5: 146.000000 2 61: 155.300000 1 117: 161.400000 3 6: 146.700000 1 62: 155.400000 1 118: 161.500000 6 7: 147.200000 2 63: 155.500000 3 119: 161.600000 4 : 途中省略 : 51: 154.200000 2 107: 160.300000 4 163: 168.700000 1 52: 154.300000 1 108: 160.470000*注 1 164: 169.500000 1 53: 154.400000 1 109: 160.500000 4 165: 169.700000 1 54: 154.500000 3 110: 160.700000 2 166: 170.800000 1 55: 154.700000 3 111: 160.800000 3 167: 171.000000 1 56: 154.800000 1 112: 160.90000 4 168: 0.330000E+35 32 余分な桁? 欠損値が32ケース
1変数ごとには異常がチェックできなくても,いくつかの変数を組合せて初めて入力誤りを検出できる場合がある。例えば,性別と職業のクロス集計によって,男性が主婦となっていれば変である。別の例では,枝分れ式のアンケート調査などで,主質問に答えなかったのに副質問に答えているなどがある。
2変数間の論理的な矛盾をチェックするためには,クロス集計プログラムや散布図作成プログラムなどが使用できる。クロス集計をするプログラムをデータチェックに用いる場合には,標準オプションではなく,欠損値を含めた集計表の作成を指定したほうがよい。
★ クロス集計によるデータチェックの例 身長(Height)と体重(Weight)のクロス集計を行う。身長が低いのに体重が重い者, 逆に身長が高いのに体重が軽い者はデータを確認する必要があるかもしれない。 ** Contingency table ** Height(row) by Weight(column) ---------------------------------------------------------------------------- 35 40 45 50 55 60 65 70 75 80 85 95 0.33E+35 Total ---------------------------------------------------------------------------- 142.5 0 2 1 0 0 0 0 0 1* 0 0 0 0 4 145.0 0 1 4 0 0 0 0 0 0 0 0 0 0 5 147.5 0 2 6 5 0 1 0 0 0 0 0 0 0 14 150.0 3 2 16 11 2 1 2 0 0 0 0 0 0 37 152.5 0 8 18 13 3 4 2 0 1 0 0 0 0 49 155.0 0 6 17 31 20 5 4 0 0 0 0 1 0 84 157.5 0 3 22 30 23 8 4 1 0 1 1 0 0 93 160.0 0 0 6 17 33 14 2 3 3 1 0 0 0 79 162.5 0 0 2 5 11 2 2 2 1 0 1 0 0 26 165.0 0 0 2 4 12 4 2 1 0 0 0 0 0 25 167.5 0 0 0 1 2 2 2 1 0 0 0 0 0 8 170.0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 0.33E+35 0 0 0 1** 0 0 0 0 0 0 0 0 31 32 ---------------------------------------------------------------------------- Total 3 24 94 118 108 41 20 8 6 2 2 1 31 458 ---------------------------------------------------------------------------- 注 *の例は身長の割に体重が重過ぎないか? 誤入力? **の例は身長はなぜ欠損値なのか? 入力もれ?
データ解析は本来データチェックが終ってから行われるべきである。しかし,完全な誤入力のチェックは実際には難しいため,データ解析をしている最中に誤入力を発見する機会も少なくない。前述の,単純集計,クロス集計によるデータチェックも,「単純集計」,「クロス集計」という分析結果を精査することで誤入力を検出したわけである。あらゆる解析結果は注意深くチェックする必要がある。
★ 重回帰分析の途中で発見された誤入力の例 47都道府県の男子の平均寿命を,10個の死因別死亡率を用いて予測するために, ステップワイズ重回帰分析を行った。 Dependent variable ........ JumyouM Independent Variables ..... Gan Ichouen Kekkaku Furyo Rousui Haien Sin ------------------------------------------------------------------------------ b SE(b) t( 39) p beta ------------------------------------------------------------------------------ Gan -0.1270130E-01 0.5648500E-02 2.248614 0.03026 -0.4352043 Ichouen 0.4145462 0.1359878 3.048408 0.00412 0.4578325 Kekkaku -0.1351705 0.9498805E-01 1.423027 0.16268 -0.2012284 Furyo -0.6209332E-01 0.2807974E-01 2.211321 0.03294 -0.4411092 Rousui 0.2852727E-01 0.1094922E-01 2.605416 0.01292 0.4096976 Haien 0.2190691E-01 0.1205149E-01 1.817776 0.07679 0.3849421 Sin -0.1403263E-01 0.9293945E-02 1.509868 0.13914 -0.4640456 Constant 78.27488 0.6294707 124.3503 0.00000 ------------------------------------------------------------------------------ -------------------------------------------------------------- 平均寿命 予測値 残差 標準化残差 No. Observed Predicted Obs.-Pred. Stand. Resid. -------------------------------------------------------------- 1 74.50000 74.21879 0.2812145 0.6358144 2 73.05000 74.41079 -1.360787 -2.841727 → 注意! 3 74.42000 74.27471 0.1452876 0.3333043 4 75.11000 75.09279 0.1720668E-01 0.3585082E-01 5 74.12000 74.55552 -0.4355221 -0.9356728 6 74.99000 75.04290 -0.5289881E-01 -0.1138619 7 74.38000 74.64100 -0.2609973 -0.5348390 8 74.35000 75.12312 -0.7731219 -1.684990 9 74.36000 74.85761 -0.4976100 -1.033711 10 76.11000 75.20094 0.9090636 1.871283 → 注意! 11 75.20000 75.81259 -0.6125950 -1.327508 12 75.27000 75.35002 -0.8002243E-01 -0.1694236 : 途中省略 : 41 74.32000 74.11581 0.2041946 0.4638041 42 74.09000 74.57417 -0.4841745 -1.081876 43 75.24000 74.28751 0.9524936 2.002083 → 注意! 44 74.82000 74.20467 0.6153301 1.288494 45 74.39000 74.62919 -0.2391859 -0.4990101 46 74.09000 74.83382 -0.7438185 -1.596199 47 76.34000 76.22292 0.1170836 0.2931493 -------------------------------------------------------------- 2:青森県,10:群馬県,43:熊本県の残差(標準化残差)が他と比べて大きい。 このうち,群馬県のデータは,75.11 を誤って 76.11 と入力したものであった。