データファイルのチェック     Last modified: May 05, 2004

 データファイルが作成されてまず最初にしなければならないのは,原データが正確に入力されているかどうかの確認である。カルテ調査などの場合には,カルテからチェックリストに転記する際にも,誤りが生じる可能性がある。また,キーボードからの入力時にもさまざまな入力ミスが生じる可能性がある。

  1. 読み合せによるデータチェック

     データファイルが正確に作成されているかどうかの最も完全なチェックは,データファイルの各変数の一覧表を出力し,原データと比較することである。この場合にも,一人で行うのではなく,二人で読み合せをするほうがチェックもれは少なくなるであろう。

    ★データファイルの一覧表示をするプログラムによるデータ一覧出力例
     
     記号:   変数名  
        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
  2. 単純集計によるデータチェック

     各変数の取り得る値はわかっているので,各変数の度数分布をとることによって,あり得ない値の存在が発見できる。連続変数について度数分布をとる場合には,適切な階級幅の設定が必要である。しかしこの方法では,変数が取り得る値の範囲内にある誤入力はチェックできない。例えば身長について,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ケース 
    
  3. クロス集計によるデータチェック

     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
    ----------------------------------------------------------------------------
         注  *の例は身長の割に体重が重過ぎないか? 誤入力?
         **の例は身長はなぜ欠損値なのか?    入力もれ?
    
  4. データ解析過程でのデータチェック

     データ解析は本来データチェックが終ってから行われるべきである。しかし,完全な誤入力のチェックは実際には難しいため,データ解析をしている最中に誤入力を発見する機会も少なくない。前述の,単純集計,クロス集計によるデータチェックも,「単純集計」,「クロス集計」という分析結果を精査することで誤入力を検出したわけである。あらゆる解析結果は注意深くチェックする必要がある。

    ★ 重回帰分析の途中で発見された誤入力の例
    
     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 と入力したものであった。
    


・ 直前のページへ戻る  ・ E-mail to Shigenobu AOKI