[Stata]Tableをコマンドひとつで作成する方法「table1_mc」について

woman draw a light bulb in white board stata
Photo by Andrea Piacquadio on Pexels.com

論文でのTable作成

疫学や介入研究での論文作成に記述統計(Demographic statistics)は欠かせないが、一つ一つの数値や項目をexcelやwordに打ち込んでいくと、いくら時間があっても一瞬でなくなる。そこでplug-inコマンドとして、table1_mcコマンドを用いる。https://ideas.repec.org/c/boc/bocode/s458351.html

このコマンドを用いると、記述統計のTableが一瞬で作成できる。各変数の要約値をexcelやwordに出力することも可能である。

作成者

Mr Mark Chatfield - UQ Researchers

オーストラリアのQueensland大学のMark Chatfield博士が作成。生物統計学の先生らしい。

インストール方法

ssc install table1_mc

1行で良い。インターネット接続環境で行う。

変数へのラベル付け

tableに含めたい変数にラベル付けを行う。ラベル付けについては以下の記事も参照。

ラベル付についての記事。

ラベル付けのtips

table1_mcはラベルをアルファベットあるいは数字順に出力する。ここではシステム付属のデータセットを用いる。

sysuse bpwide.dta

で性別、年齢カテゴリー毎の介入前、介入後の血圧データがロードされる(何の介入だろう)。

bawide.dtaの内容。

例えば、介入後の血圧をカテゴリー分けして、ラベル付けしてみる。ラベル付けの方法には二通りあって、例えば介入前後の血圧を考えると、次のコマンドでは変数自体にラベルを付与している。

label variable bp_before "Pressure before intervention, mm Hg"
label variable bp_after  "Pressure after intervention, mm Hg"

対して、以下のコマンドでは変数内でラベルの付与を行っている。

gen bp_after_cat4 = .
replace bp_after_cat4 = 1 if bp_after  < 140
replace bp_after_cat4 = 2 if bp_after >= 140 & bp_after < 160
replace bp_after_cat4 = 3 if bp_after >= 160 & bp_after < 180
replace bp_after_cat4 = 4 if bp_after >= 180 & bp_after < .
replace bp_after_cat4 = 99 if bp_after == .

label de bp_after_cat4_labels  1 "<140" 2 "140-159" 3 "160-180" 4 "180 and above" 99 "Missing" 
*define the labels

label val bp_after_cat4  bp_after_cat4_labels 
*apply the labels

このように変数内でラベルの付与をした場合、ラベル全体にラベル名を適応することを忘れないようにする。

label variable bp_after_cat4 "Categorical pressure, mm Hg"

Tableの作成

詳細については以下のようにhelpコマンドを出すと良い。

help table1_mc

まず最初に、table1_mcと記載する。次に介入をby(exposure variable)で記述する。その後は、変数を以下に示すルールに従って、順次記載していくと良い。

二値変数

bin: 二値変数で、統計量はピアソンのカイ二乗検定となる。
bine: 二値変数で、統計量はFisherの正確確率検定となる。

連続変数

contn: 正規分布する連続変数で、平均と標準偏差が与えられる。
contin: 対数正規分布する連続変数で、幾何平均と幾何標準偏差が与えられる。
conts: その他の連続変数で、中央値と四分位数が与えられる。

カテゴリー変数

cat: カテゴリー変数で、統計量はピアソンのカイ二乗検定となる。
cate: カテゴリー変数で、統計量はFisherの正確確率検定となる。

小数点などの指定

何もしないとずらずらと小数点を並べてしまうので、指定する。
%4.0f: 4桁で、小数点以下はなし(例: 43)。
%4.1f: 4桁で、小数点以下1桁(例: 42.8)。

その他

それぞれの変数はバックスラッシュ(\)で区切る。

追加オプション

常に含めた方が良いオプション

onecol: カテゴリー変数がそれぞれ別のコラムにならず、ヘッダーとそれ以下で記載される。
missing: 欠損値も記載してくれる。
nospace: デフォルトだと1桁の数字がスペースありで記載されるが、それを無くしてくれる(例:何もしないと” 3%”になってしまうが、”3%”としてくれる)。
saving: Tableをエクセルに出力してくれる。エクセルファイルが開かれていると上書きされてしまうので注意。

ジャーナルによって使用するオプション

percent: 何%というのを、nなしで出力する。
percent_n: %(n)という形式になる。
slashN: (n/N)という形式(Nは全数)
total(before):

エクセルへのアウトプット

以上をまとめると、以下のコードを入力すると、Table1がエクセルに出力される。今回は介入の変数がなかったので、sexで分けてみた。

table1_mc, by(sex) vars(bp_before  contn %4.1f\  bp_after contn %4.1f\  bp_after_cat4 cat %4.0f\) onecol missing nospace saving("/Users/Desktop/test.xlsx", replace)
実際の出力。

右側の方には解析の結果が記載されているので、下の部分だけ選択すれば良い。

この部分だけ選択すればOK。

感想

慣れればとてつもなく便利。実際の細かい調整はlabelで行うので、きちんとキレイにlabelを定義することが重要。

関連記事

ラベルの付け方。
データクリーニング
割合の出し方。
便利なtabの使い方。

コメント

タイトルとURLをコピーしました