
Stataは医療統計や社会調査の解析現場で広く使われており、解析の前段階にあたるデータの整え方が、最終的な結果の信頼性を大きく左右します。
しかし、コマンドの実行順序やオプションの指定を一つ誤るだけで、本来残すべきレコードまで失ってしまうことも珍しくないのが実情です。
本記事ではStataでデータクリーニングを進める具体的な手順とコマンド、そして実務でつまずきやすい落とし穴を順を追って解説しますので、自社の解析フローを見直す際の参考にしてください。
目次
Stataのデータクリーニングとは
まずはStataにおけるデータクリーニングの基本的な考え方と、なぜ解析の前段階でこの工程が欠かせないのかを整理します。あわせて、Stataというツールがクリーニングに向いている理由と、実務で対応すべき代表的なデータの問題についても見ていきましょう。
データクリーニングが解析結果の信頼性を左右する理由
データクリーニングとは、収集した生データに含まれる欠損や重複、表記の不統一などを取り除き、解析に耐えうる状態へ整える作業を指します。どれほど高度な統計モデルを用いても、入力されるデータが汚れていれば導かれる結論は歪んでしまうのです。
とりわけ論文や行政報告のように結果が外部に公開される場面では、前処理の質がそのまま研究全体の説得力に直結します。解析手法の選定に時間をかける前に、まず手元のデータがどのような状態なのかを丁寧に確認する姿勢が欠かせません。
データ品質とは?品質評価項目や品質を向上させるための実務的対策を解説
Stataがデータクリーニングに適している理由:コマンド操作と再現性
Stataの大きな特徴は、すべての処理をコマンドとして記述できる点にあります。マウス操作中心のツールと異なり、実行した内容が文字列として残るため、第三者が同じ処理を後から再実行できるのです。
この再現性の高さは、データクリーニングにおいて決定的な価値を持ちます。一連の手順をdo-fileと呼ばれるスクリプトにまとめておけば、同じ結果を誰でも何度でも再現できる状態を保てます。手作業による修正では避けられない属人化を、コードによって根本から防げる点が強みです。
R言語とは?Rの利点/弱点、Pythonとの違い、特徴を一気に解説
クリーニングで対応する主なデータの問題:欠損値・重複・表記ゆれ・外れ値
実務でクリーニングの対象となるデータの問題は、おおむね次の4種類に整理できます。それぞれ発生する原因も対処に用いるコマンドも異なるため、まずは全体像を押さえておくと作業の見通しが立てやすくなります。
- 欠損値:未回答やシステム不具合などで値が記録されていない状態
- 重複データ:同一の対象が複数行にわたって登録されている状態
- 表記ゆれ:「株式会社」と「(株)」のように同じ意味が異なる表現で混在する状態
- 外れ値・論理矛盾:年齢に負の値が入るなど、現実にはありえない値が含まれる状態
なかでも欠損値はStata特有の挙動が絡むため注意が必要です。欠損値は内部的に「非常に大きな数」として扱われる仕様があり、条件式の誤作動を招く原因になります。この点は後ほど失敗パターンとして詳しく取り上げます。
データクレンジングとは?意味と代表手法を解説!
Stataのデータクリーニングで押さえるべき処理の順序
データクリーニングは、闇雲にコマンドを打てばよいわけではありません。ここでは作業全体を安全に進めるための処理順序と、その背景にある考え方を解説します。順序を意識するだけで、取り返しのつかない失敗を大きく減らせます。
「構造確認→個別クリーニング→重複削除」の順で進める理由
クリーニングの基本動線は、最初にデータ全体の構造を把握し、次に変数ごとの個別処理を行い、最後に重複を削除するという流れです。いきなり個別の値を書き換え始めると、全体像を見誤ったまま作業を進めてしまう危険があるのです。
とくに重複削除を先に行うと、本来は表記ゆれを統一してから判定すべき行を、別レコードとして残してしまいかねません。構造の理解を起点に据えることで、後工程の判断ミスを未然に防げます。急がば回れの発想が、結果的には最短の道筋になるのです。
destring・recodeを実行する前に確認すべきこと
文字列を数値に変換するdestringや、値を別の値へ置き換えるrecodeは便利な反面、前提を確認せずに実行するとエラーや意図しない変換を引き起こします。実行前には対象変数の中身を必ず点検しておきましょう。
具体的には、数値化したい変数に全角数字や単位の文字が混ざっていないか、欠損値がどのコードで表現されているかを事前に把握します。codebookコマンドで値の分布を眺めてから着手すると、変換時のトラブルを避けやすくなるでしょう。
破壊的な処理を後工程に回す考え方
replaceやdropのように、一度実行すると元の値が失われる操作を破壊的な処理と呼びます。これらは取り消しが難しいため、作業フローのなるべく後半に配置するのが鉄則です。
前半では描画や集計といった非破壊的な確認作業に徹し、データの状態を十分に理解してから書き換えに進みます。破壊的な処理を後ろに回すほど、誤操作によるデータ消失のリスクは小さくなります。元データのバックアップを別名で保存しておく習慣も、あわせて身につけておくと安心です。
Stataでデータクリーニングを進める手順
ここからは実際のコマンドを交えながら、読み込みから保存までの6つのステップを順番に解説します。各ステップで使う代表的なコマンドを押さえれば、初めての解析でも迷わず手を動かせるようになります。
STEP1.データを読み込み全体構造を把握する:describe・summarize・codebook
最初のステップは、データの全体像をつかむことです。describeで変数名や型の一覧を確認し、summarizeで平均や最小・最大値などの基本統計量を眺め、codebookで各変数の値の分布や欠損状況を細かく点検します。
この段階では一切値を書き換えず、あくまで観察に徹するのがポイントです。最大値や最小値に不自然な数字がないか、想定より欠損が多い変数はないかをここで洗い出しておくと、後続のクリーニング方針がぐっと立てやすくなります。
STEP2.欠損値を確認・処理する:misstable・mvdecode
次に欠損値の状況を整理しましょう。misstableコマンドを使えば、どの変数にどれだけ欠損があるかを一覧で把握できます。さらに欠損のパターンを可視化すると、単純な未回答なのか、特定条件下でのみ生じているのかを見極めやすくなるはずです。
調査票で「9999」や「-1」のように特定の数値を欠損の代用としている場合は、mvdecodeコマンドで正式な欠損値へ変換します。この処理を怠ると、本来は欠損であるべき値が集計に紛れ込み、平均値などを大きく歪めてしまいます。
STEP3.重複データを検出・削除する:duplicates report・duplicates drop
重複は、削除する前に状況を把握することが先決です。duplicates reportで重複行が何件あるかを確認し、duplicates listで具体的にどのレコードが重なっているかを目視します。いきなり削除へ進まないことが、安全な進め方の基本といえるでしょう。
内容を確認したうえでduplicates dropを実行すれば、完全に一致する行を一括で削除できます。ただし「完全一致」の定義は変数の組み合わせ次第で変わるため、どの変数を基準に重複と見なすかを必ず明示してから削除に進みましょう。
名寄せとは?正確な顧客データ管理の方法と活用ポイントを徹底解説
STEP4.表記ゆれ・全角文字を統一し型を変換する:replace・recode・destring
続いて表記の統一と型変換を行います。replaceで文字列の表記を揃え、recodeでカテゴリ値をコード化し、destringで数値型へ変換するのが基本の流れです。文字列のまま放置すると、集計や統計処理が正しく動かない場面が出てきます。
3つのコマンドは役割が似て見えますが、得意とする処理は異なります。混同すると思わぬエラーにつながるため、用途を整理しておきましょう。
コマンド | 主な用途 | 使う場面の例 |
|---|---|---|
replace | 既存の値を条件付きで書き換える | 「(株)」を「株式会社」に統一する |
recode | 数値カテゴリを別のコードへ変換する | 回答1〜5を3区分に再分類する |
destring | 文字列型の変数を数値型へ変換する | 「123」という文字列を数値に直す |
STEP5.外れ値・論理的矛盾をチェックする:ロジカルチェックの実務
数値が整ったら、現実的にありえない値が残っていないかを検証します。この検証作業こそがロジカルチェックです。たとえば「年齢が150歳」「来院日が生年月日より前」といった矛盾を、条件式で機械的に洗い出していきます。
外れ値の把握には、要約統計量に加えて箱ひげ図やヒストグラムによる可視化が有効です。数値だけを眺めるより、図に起こすほうが異常の発見は格段に速くなります。発見した矛盾は安易に削除せず、原因を記録したうえで対応方針を決める姿勢が求められます。
箱ひげ図とは?外れ値の見方やExcelでの作成方法まで徹底解説
STEP6.クリーニング後のデータを保存し記録する
最後に、整え終えたデータを保存します。元データは決して上書きせず、saveコマンドで別名のファイルとして書き出すのが原則です。クリーニング前後のファイルを分けておけば、問題が起きたときにいつでも元へ戻せます。
あわせて、どのような処理を施したのかをdo-fileやログとして残しておきます。保存とセットで記録を残す習慣が、後々の検証や引き継ぎを大きく助けてくれるでしょう。
Stataのデータクリーニングでよくある失敗パターンと回避策
ここでは、実務で繰り返し見られる5つの失敗を取り上げ、それぞれの原因と回避策を整理します。先に典型例を知っておくだけで、同じつまずきを避けられる確率は大きく高まります。
よくある失敗 | 主な原因 | 回避策 |
|---|---|---|
条件式が意図せず欠損行を拾う | 欠損が大きな数として扱われる | 条件に「& 変数 < .」を加える |
元データを失う | replaceの破壊的な上書き | 別名保存とバックアップを徹底する |
型変換でエラーが出る | 文字列に文字が混入している | destring前に中身を点検する |
必要な行まで消える | forceオプションの乱用 | 基準変数を明示してから削除する |
欠損値が「大きな数」として扱われ条件式が誤作動する
Stataでは欠損値が内部的にきわめて大きな数として処理されます。そのため「変数 > 100」という条件を書くと、本来は除外したい欠損行まで条件に合致してしまいます。これは初学者がほぼ必ず一度は経験する落とし穴です。
回避策はシンプルで、条件式に「& 変数 < .」を加えて欠損を明示的に除外することです。この一手間を習慣化するだけで、集計値のずれという厄介なバグを根本から防げます。
replaceの破壊的な上書きで元データを失う
replaceは対象の値を直接書き換えるため、実行した瞬間に元の値が消えます。条件指定を誤ったまま実行すると、想定外の範囲まで上書きされ、取り返しがつかなくなる事態も起こり得るのです。
対策として、replaceの前に必ず元データを別名で保存し、書き換え後はsummarizeなどで結果が想定どおりかを確認します。いきなり全件を書き換えず、まず少数の条件で試す慎重さも有効でしょう。
destring実行時に文字列混入で型エラーが発生する
数値に見える変数でも、全角スペースや単位記号が一文字混ざっているだけでdestringはエラーを返します。「数値のはずなのに変換できない」という相談の多くは、この混入が原因です。
まずはcodebookで実際の文字を確認し、不要な文字をreplaceで除去してから変換に進みます。どうしても残る場合はforceオプションもありますが、安易に使うと本来数値だった値まで欠損になるため注意が必要です。
duplicates dropのforceオプションで必要なデータまで削除する
duplicates dropは便利ですが、forceオプションを付けると判定条件を緩めて削除を強行します。深く考えずに付与すると、別人の記録を重複と誤認して消してしまう事故が起こりえます。
基本姿勢として、forceに頼る前にduplicates reportで重複の中身を必ず確認することが欠かせません。どの変数を基準に同一とみなすかを明示し、削除前のデータを保存しておけば、誤削除のダメージを最小限に抑えられます。
日本語・スペースを含む変数名で処理が止まる
変数名に日本語やスペースが含まれていると、コマンドが正しく解釈されず処理が止まることがあります。外部から取り込んだExcelデータでは、こうした変数名が紛れ込みやすい点に注意しましょう。
対策は、renameコマンドで英数字とアンダースコアのみの命名へ統一することです。読み込み直後に変数名を整える工程をフローへ組み込んでおくと、後続の処理が安定して動くようになります。
再現性を担保するStataのデータクリーニング運用
一度きれいにして終わりではなく、誰がやっても同じ結果に至る運用を築くことこそが、解析業務を継続させる鍵です。ここでは再現性を支える3つの実務的な工夫を紹介します。
do-fileでクリーニング手順をコード化する
手作業での修正は、その場では早くても再現できないという致命的な弱点を抱えています。一連のクリーニング処理をdo-fileに記述しておけば、同じデータに対して何度でも同一の結果を再現できるのです。
新しいデータが届いたときも、do-fileを実行するだけで一気に整形が完了します。処理をコード化しておくことが、再現性と作業効率を同時に高める最短の手段です。属人化の解消にも直結する取り組みといえるでしょう。
logファイルで処理過程を記録する
logコマンドを使うと、実行したコマンドとその出力をファイルとして自動的に記録できます。どの段階で何件のデータが削除されたのかが残るため、後から処理を振り返る際の確かな証跡になります。
とくに研究や監査の場面では、結果に至るまでの過程を示せることが信頼の前提です。do-fileが「何をするか」を、ログが「実際に何が起きたか」を示す関係と捉えると整理しやすくなります。
コメントとデータ定義書で属人化を防ぐ
コードだけでは、なぜその処理を選んだのかという意図までは伝わりません。do-file内にコメントを添え、「この欠損は未回答として扱う」といった判断の根拠を言葉で残しておきましょう。
さらに、変数の意味や取りうる値をまとめたデータ定義書を整備すると、担当者が変わっても解析の前提が共有されます。コメントと定義書の両輪が、属人化を防ぎチーム全体の解析品質を底上げします。
メタデータとは?具体例を用いてわかりやすく意味を解説
Stataのデータクリーニング活用事例
最後に、これまで解説した考え方が実際の現場でどう活きるのかを、2つの事例から見ていきます。医療研究と社会調査という異なる領域から、クリーニングがもたらす効果を具体的にイメージしてみてください。
医療系研究:症例データのロジカルチェックで解析精度を高めた例
ある臨床研究では、症例データに「投薬日が入院日より前」といった論理矛盾が複数潜んでいました。そのまま解析に進めば、治療効果の推定が誤った方向へ引っ張られる危険がありました。
そこで条件式によるロジカルチェックを徹底し、矛盾を含むレコードを一つずつ原因まで遡って確認していったのです。結果として入力ミスと真の例外を切り分けられ、解析の精度と説明力を大きく高められました。
回帰分析とは?目的やExcelでのやり方までわかりやすく解説!
社会調査:表記ゆれの統一とコード化で集計の手戻りを削減した例
大規模なアンケート調査では、自由記述の職業欄に「会社員」「サラリーマン」「正社員」といった表記ゆれが大量に発生していました。このままでは正確な集計ができず、分析が前へ進みません。
replaceとrecodeを組み合わせて表記を統一しコード化したことで、集計の手戻りが大幅に減りました。さらに処理をdo-fileに残したため、翌年の同種調査でもそのまま流用でき、作業時間を継続的に削減できています。
15年の経験を持つ私が推奨するアンケート分析の5つの手順
まとめ
Stataのデータクリーニングは、構造確認から始めて破壊的な処理を後工程に回し、すべてをコードとして残すことで、信頼できる解析基盤を築けるのです。手順とコマンドの意味を理解し、よくある失敗を先回りして避けることが、結果の信頼性を支える土台になります。
「これからデータ領域に関する取り組みを実施したいけれど、何から手をつけたらいいかわからない」「データ専門家の知見を取り入れたい」という方は、データ領域の実績豊富な弊社、データビズラボにお気軽にご相談ください。
貴社の課題や状況に合わせて、データの取り組みをご提案させていただきます。







