%stab 4.0.1 + %stabcox 2.0.0
%stab 4.0.1: 背景因子の集計を Excel 出力する SAS マクロ
SAS データセットの変数、および変数タイプを指定するだけで、いわゆる Table 1 を Excel ファイル形式で (一応) 出力できるマクロです。
%stabcox 2.0.0: Cox 回帰による単変量・多変量解析の結果を Excel 出力する SAS マクロ
SAS データセットと変数、および変数タイプを指定するだけで、単変量と多変量の Cox 回帰の結果をまとめて Excel ファイル形式で (一応) 出力できるマクロです。
2つのマクロを用いると、以下のようなファイルが出力できます。
- stab_example.xlsx (download)
本マクロは出力エンジンとして ods tagsets.excelxp という方式を使っており、厳密に言えば Excel ファイルではないファイルが生成されます。 そのため、出力したファイルを開こうとすると「ファイル形式と拡張子が一致しません。ファイルが破損しているか、安全ではない可能性があります。・・(以下略)・・。[はい] [いいえ]」と表示されます。 ここで [はい] を選択すると、微妙に Excel 形式ではないファイルを自動で強制変換してくれて Excel ファイルとして普通に開くことができます。 後で参照するときに便利なので、[はい] で開いて強制変換したものを xlsx 形式などで保存しておくとよいでしょう。
- stab_v401.zip (download; %stab 4.0.1 と %stabcox 2.0.0 が両方入っています)
既知の問題点 & 改良予定
- おそらく未知のバグがあると思われます。発見した方はお手数ですが、メールいただけると幸いです。
不具合や質問につきましては、メールにてご連絡いただけると助かります。
マクロの概説 (%stab)
ダウンロードファイル中の事例 (stab_example.sas) を見ると概ね使い方がわかると思いますが、簡単に説明を書きます。
マクロは %tableInit(), %tableMake(), %tableOut() という集計結果をデータセット出力するパートと、それをまとめて Excel に吐き出す %outputInit(),
%outputMake(), %outputOut() というパートに分かれています。%outputInit(), %outputMake(), %outputOut() は %stab と %stabcox
で共通なので、最後にまとめて書いています。
事例では、3つの背景因子集計の表を作成し、一つの Excel ファイルに出力する処理が書かれています。
%tableInit(), %tableMake(), %tableOut()
%let data = test; /* 入力データセット名 */
%let out = out1; /* 出力データセット名 */
%let group = trt; /* 群変数 */
%let pvalue = 1; /* P値の出力 (0: 出力しない, 1: 出力する) */
%let color = 1; /* 色装飾の有無 (0: なし, 1: あり) */
%tableInit();
%tableMake(cont, age, "Age (continuous)", round = 0.1);
%tableMake(ordr, age, "Age (ordinal)", round = 0.1);
%tableMake(cont, height, "Height (continuous)", round = 0.01);
%tableMake(disc, sex, "Sex ― No. (%)");
%tableMake(disc, fhist, "Familial history ― No. (%)");
%tableMake(disc, tfhist, "Familial history ― No. (%)");
%tableMake(disc, hist, "Previous history ― No. (%)");
%tableMake(disc, comp, "Complication ― No. (%)");
%tableMake(disc, comp, "Complication (with missing) ― No. (%)", missing = 1);
%tableOut();
表ごとに %let で始まるグローバル変数の設定処理が必要です。 入力データセット名 (data)、出力データセット名 (out)、群変数 (group)、P値の出力の有無 (pvalue)、色装飾の有無 (color)を指定します。 群変数をブランクにしておくと、群なしでデータセット全体の結果を出力します (P値は計算しません)。 色装飾ありにすると、変数毎に白とグレーで縞模様になるように背景色をつける処理をします。
次は、%tableInit() で、その他の表の設定を行います。 設定可能な項目は以下の通りです。
%tableInit(
nprint = 1, footer = 1, font = "Times New Roman", fontsize = 3,
hlabel = "Characteristic", slabel = "Study population"
);
nprint - サンプルサイズ (データ行数) の出力
0: 出力しない
1: 出力する (default)
footer - 作成日時の出力
0: 出力しない
1: 出力する (default)
font - 出力フォント名 (SASで指定可能なフォント名を入力)
"Times New Roman": (default)
fontsize - 出力フォントサイズ
hlabel - ラベル制御
"Characteristic": (default)
slabel - 単群の場合のラベル制御
"Study population": (default)
次は、%tableMake() で、変数毎に設定を行います。 連続変数 (type = cont / ordr) については、数値データが入っている必要があります (平均・標準偏差を集計する cont と、中央値・範囲などを集計する ordr に対応しています)。 離散変数 (type = disc) については、テキストデータでも、コーディングしてフォーマットがあたったデータでも、どちらでもきれいに集計表にできます。 項目は以下の通りです。
%tableMake(
type, var, label, round = 0.1, exact = 1, missing = 0, weight = 0
);
type - 変数の型を指定
cont: 連続変数 (平均と標準偏差を集計, Welch型のt検定 or ANOVAを使用)
ordr: 順序変数 (中央値と範囲を集計, Wilcoxon検定 or Kruskal-Wallis検定を使用)
disc: 離散変数 (頻度と割合を集計, 検定は後述)
var - 解析する変数を指定
label - 表示ラベルを指定
round - 連続変数または順序変数の数値丸めのオプション
exact - 離散変数の検定について
0: 期待セル度数が5未満のセルがある場合にFisher's exact test
そうでない場合にカイ二乗検定を使用
1: Fisher's exact testを使用 (default)
missing - 離散変数の集計において欠測を表示するか否か
0: 表示しない (default)
1: 表示する
weight - 重み変数 (通常は使用しない)
変数がたくさんある場合は、続けて %tableMake() を複数行に渡って書きます。
最後は %tableOut() で終わります。引数は特にありません。
%tableOut();
※引数はありません。
マクロの概説 (%stabcox)
こちらもダウンロードファイル中の事例 (stab_example.sas) を見ると概ね使い方がわかると思いますが、簡単に説明を書きます。
また同様に、マクロは %phregInit(), %phregMake(), %phregOut() という集計結果をデータセット出力するパートと、それをまとめて Excel に吐き出す
%outputInit(), %outputMake(), %outputOut() というパートに分かれています。
事例では、2つの説明変数 (離散型と連続型) があるデータについて単変量と多変量の Cox 回帰モデルを当てはめた結果の表を作成し、Excel ファイルに出力する処理が書かれています。
%phregInit(), %phregMake(), %phregOut()
%let data = testcox; /* 入力データセット名 */
%let out = out4; /* 出力データセット名 */
%let time = time; /* 時間変数 */
%let event = event; /* イベント変数 */
%let censorvalue = 0; /* 打ち切り値 */
%let color = 1; /* 色装飾の有無 (0: なし, 1: あり) */
%phregInit();
%phregMake(group, "Treatment");
%phregMake(marker, "Biomarker", aclass = 0);
%phregOut();
基本的に %stab() と同様ですが。 入力データセット名 (data)、出力データセット名 (out)、時間変数 (time)、イベント変数 (event)、打ち切りの値 (censorvalue)、色装飾の有無 (color)を指定します。 色装飾ありにすると、変数毎に白とグレーで縞模様になるように背景色をつける処理をします。
次は、%phregInit() と書きますが、マクロの構造上の問題で %tableInit() のような設定項目がありません。 その他の表の設定は一番最後の %phregOut() で指定できます。
%phregInit();
※引数はありません。
次は、%phregMake() で、変数毎の設定を行います。 変数名とラベルを指定し、aclass で離散 (class) 変数かどうかを設定できます。 項目は以下の通りです。
%phregMake(
avar, label, aclass = 1
);
avar - 解析する変数を指定
label - 表示ラベルを指定
aclass - class 変数かどうかを指定
0: 連続変数
1: 離散 (class) 変数 (default)
変数がたくさんある場合は、続けて %phregMake() を複数行に渡って書きます。
最後は %tableOut() で終わります。 一部の解析手法に関する設定と、その他の表の設定が指定できます。
%phregOut(
firth = 0, eventcode = 0, nprint = 1, footer = 1,
font = "Times New Roman", fontsize = 3
);
firth - Firth のバイアス補正法を使用するかどうか
0: 使用しない (default)
1: 使用する
eventcode - 競合リスクイベントのコード
0: 競合リスクなし (default)
0以外: 指定したコードを競合リスクイベントとして解析
nprint - サンプルサイズ (データ行数) の出力
0: 出力しない
1: 出力する (default)
footer - 作成日時の出力
0: 出力しない
1: 出力する (default)
font - 出力フォント名 (SASで指定可能なフォント名を入力)
"Times New Roman": (default)
fontsize - 出力フォントサイズ
マクロの概説 (%stab と %stabcox 共通)
%outputInit(), %outputMake(), %outputOut()
こちらはあまり設定する項目が無いですが、以下のような形式で %outputInit(), %outputMake(), %outputOut() を使用して生成したデータセットを指定します。 %stab と %stabcox 共通の出力用マクロです。
%outputInit("&Path.stab_example.xls");
%outputMake(out1, "Table1", "Table 1: Patient characteristics");
%outputMake(out2, "Table2", "Table 2: Patient characteristics (no group, no p-value)");
%outputMake(out3, "Table3", "Table 3: Patient characteristics (no p-value, no color)");
%outputMake(out4, "Table4", "Table 4: Univariate and multivariate analyses for OS with Cox regression models", cox = 1);
%outputOut();
以下は各マクロの引数説明です。
%outputInit(
file
);
file - 出力するファイル名
必要に応じてパスから指定します
拡張子は ".xls" を必ず指定すること。
%outputMake(
out, sheet, title, abscolwidth="40,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7", cox = 0
);
out - 出力したいデータセット名
%tableInit() & %tableMake() を使用して生成したデータセット
sheet - 出力シート名
Excel のシート名の制限に引っかかるものはエラーがでますのでご注意ください
title - 表のタイトル
一行目に出力する表タイトルの内容を指定します
abscolwidth -
Excel 上の列幅をカンマ区切りで指定します (大体はデフォルトのままで大丈夫です)
cox - Cox 回帰のテーブル用に abscolwidth を調整するかどうかを指定します
0: 調整しない (default)
1: 調整する (Cox 回帰のときは指定を推奨)
%outputOut();
※引数はありません。
バージョン履歴
- stab_v401.zip (download)
- stab_v400.zip (download)
- stab_v306.zip (非公開)
履歴
- 2019/03/19 %stab 4.0.1, %stabcox 2.0.0 公開
- 2018/12/03 %stab 4.0.0 公開