線形モデルにおける CLASS ステートメントの機能 吉田早織 1 魚住龍史 2 1 日本化薬株式会社医薬データセンター 2 京都大学大学院医学研究科 The fascinating features for the CLASS in the context of linear models Saori Yoshida 1 and Ryuji Uozumi 2 1 Clinical Data Management and Biostatistics, Nippon Kayaku Co., Ltd 2 Kyoto University Graduate School of Medicine
社内でのある出来事 カテゴリカルな 課題ある応答変数 (2 値データ ) に対して, 説明変数を用いてモデル化し, 各薬剤群における推定を行いたい なぜか僕の結果と合わないんだ A さん GENMOD プロシジャオプションなし 結果は同じだけど WARNING が出てしまうみたい B さん LOGISTIC プロシジャオプションなし C さん LOGISTIC プロシジャオプションあり 2
CLASS ステートメントの役割 自分での設定が不要 CLASS ステートメント : 自動的にダミー変数を作成 MODEL ステートメント : モデルの推定結果の出力 多くのプロシジャで使える モデル推定後のプロセス : LSMEANS, CONTRAST, ESTIMATE, LSMESTIMATE プロシジャごとにダミー変数生成方法のデフォルト & オプションが異なる 3
線形モデルにおける CLASS ステートメント 一般線形モデル REG, GLM V8~ ロジスティックモデル LOGISTIC V9.1.3~ GLMSELECT 浜田 (2000) V9.2~ 比例ハザードモデル PHREG V9.4~ HPREG 4
今回のトピック 線形モデルにおけるダミー変数 LOGISTIC プロシジャによるダミー変数の指定例 CLASS ステートメントの WARNING&ERROR 3 人 (A さん,B さん,C さん ) の SAS プログラム及び出力結果の検証 5
線形モデルにおけるダミー変数 (1) カテゴリーを数値 (0,1) で表したもの ex) Treat が A,B,P という値を持つとき 0 1x1 2x2 3x3 Treat A の効果 : 0 1 2 0 3 0 1 0 x 1 x 2 x 3 A 1 0 0 B 0 1 0 P 0 0 1 1 ダミー変数行列 1 Treat A と P の効果の差 - ) Treat A: Treat P: 0 1 0 3 1 3 6
線形モデルにおけるダミー変数 (2) カテゴリーを数値 (0,1,-1) で表したもの ex) Treat が A,B,P という値を持つとき Treat A の効果 0 1x1 2x2 0 1 2 0 1 0 1 ダミー変数行列 2 x 1 x 2 A 1 0 B 0 1 P -1-1 Treat A と P の効果の差 - ) Treat A: Treat P: 0 1 0 1 2 2 1 2 7
PARAM=REFRECT 分類値デザイン変数 A A1 A2 A5 1 1 0 0 2 0 1 0 5 0 0 1 7 0 0 0 CLASS ステートメントによる ダミー変数の生成例 効果法 PARAM=EFFECT 分類値デザイン変数 A A1 A2 A5 1 1 0 0 2 0 1 0 5 0 0 1 7-1 -1-1 PARAM=ORDINAL 分類値デザイン変数 A A1 A2 A5 1 0 0 0 2 1 0 0 5 1 1 0 7 1 1 1 GLM 法 PARAM=GLM 分類値デザイン変数 A A1 A2 A5 A7 1 1 0 0 0 2 0 1 0 0 5 0 0 1 0 7 0 0 0 1 参照法累積順序法多項式法 PARAM=POLYNOMIAL 分類値デザイン変数 A A1 A2 A5 1 1 1 1 2 2 4 8 5 5 25 125 7 7 49 343 8
LOGISTIC プロシジャによる ダミー変数の指定 CLASS ステートメントで PARAM= オプションを指定することでダミー変数の生成方法を指定できる proc logistic data = Neuralgia ; class Treatment Sex / param=effect ; model Pain = Treatment Sex ; run; <SAS データにモデルを当てはめる > SAS Help に記載されているデータ Neuralgia Treatment(A,B,P),Sex(F,M) を説明変数,Pain (Yes,No) を応答変数としたモデル 9
効果法 (PARAM=EFFECT) 平均効果との違いを比較 分類変数の水準の情報 分類 値 デザイン変数 Treatment A 1 0 B 0 1 P -1-1 Sex F 1 M -1 Treatment A の推定 パラメータ 最尤推定値の分析 自由度推定値標準誤差 Wald カイ 2 乗 Pr > ChiSq Intercept 1-0.4338 0.3224 1.8105 0.1785 Treatment A 1-0.8676 0.4623 3.5219 0.0606 B 1-0.8676 0.4623 3.5219 0.0606 Sex F 1-0.8959 0.3568 6.304 0.012 切片 A を指定平均を指定 estimate "estimate A" int 1 Treatment 1 0 Sex 0; 推定 ラベル 推定値標準誤差 z 値 Pr > z estimate A -1.3013 0.5739-2.27 0.0234 10
GLM 法 (PARAM=GLM) 最後のレベルとの比較 分類変数の水準の情報 分類 値 デザイン変数 Treatment A 1 0 0 B 0 1 0 P 0 0 1 Sex F 1 0 M 0 1 Treatment A の推定 パラメータ 最尤推定値の分析 自由度推定値標準誤差 Wald カイ 2 乗 estimate estimate A int 1 Treatment 1 0 0 Sex 0.5 0.5 ; Pr > ChiSq Intercept 1 2.1972 0.7566 8.4344 0.0037 Treatment A 1-2.6027 0.8434 9.5237 0.002 B 1-2.6027 0.8434 9.5237 0.002 P 0 0... Sex F 1-1.7918 0.7136 6.304 0.012 M 0 0... 切片 A を指定平均を指定 推定 ラベル 推定値 標準誤差 z 値 Pr > z estimate A -1.3013 0.5739-2.27 0.0234 11
参照レベルとの比較 分類変数の水準の情報 分類 値 デザイン変数 Treatment A 1 0 B 0 1 P 0 0 Sex F 1 M 0 参照法 (PARAM=REF) Treatment A の推定 パラメータ 最尤推定値の分析 自由度推定値標準誤差 Wald カイ 2 乗 Pr > ChiSq Intercept 1-2.1972 0.7566 8.4344 0.0037 Treatment A 1 2.6027 0.8434 9.5237 0.002 B 1 2.6027 0.8434 9.5237 0.002 Sex F 1 1.7918 0.7136 6.304 0.012 切片 A を指定平均を指定 estimate estimate A int 1 Treatment 1 0 Sex 0.5 ; 推定 ラベル 推定値標準誤差 z 値 Pr > z estimate A -1.3013 0.5739-2.27 0.0234 12
累積順序法 (PARAM=ORDINAL) 順序のある効果間の比較 分類変数の水準の情報 分類 値 デザイン変数 Treatment P 0 0 B 1 0 A 1 1 Sex F 0 M 1 Treatment A の推定 パラメータ 最尤推定値の分析 自由度推定値 標準誤差 Wald カイ 2 乗 Pr > ChiSq Intercept 1 0.4055 0.5839 0.4822 0.4874 Treatment B 1-2.6027 0.8434 9.5237 0.002 A 1 5.50E-17 0.7785 0 1 Sex F 1 1.7918 0.7136 6.304 0.012 切片 A を指定平均を指定 estimate estimate A int 1 Treatment 1 1 Sex 0.5 ; 推定 ラベル 推定値標準誤差 z 値 Pr > z estimate A -1.3013 0.5739-2.27 0.0234 13
多項式法 (PARAM=POLY) 2 乗,3 乗の効果を推定する 分類変数の水準の情報 分類 値 デザイン変数 Treatment P 1.000 1.000 B 2.000 4.000 A 3.000 9.000 Sex F 1.000 M 2.000 Treatment A の推定 パラメータ 最尤推定値の分析 自由度推定値 標準誤差 Wald カイ 2 乗 Pr > ChiSq Intercept 1 3.8191 2.4135 2.504 0.1136 Treatment POLY1 1-6.5067 2.8429 5.2386 0.0221 POLY2 1 1.3013 0.6934 3.5219 0.0606 Sex POLY1 1 1.7918 0.7136 6.304 0.012 切片 A を指定平均を指定 estimate estimate A int 1 Treatment 3 9 Sex 1.5 ; 推定 ラベル 推定値標準誤差 z 値 Pr > z estimate A -1.3013 0.5739-2.27 0.0234 14
CLASS ステートメントの詳細設定 変数の順序設定 ORDER=DATA FORMATED FREQ INTERNAL DATA: データセットに出力した順 FORMATTED:FORMAT 順 ( デフォルト ) FREQ: 数が多い順 INTERNAL: フォーマットされていない値順 DESCENDING 降順にする 基準値の設定 REF= label FIRST LAST label で基準変数値の選択 PARAM=EFFECT PARAM=REF のときのみ FIRST,LAST で最初の変数か最後の変数を選択 15
Q CLASS ステートメントの WARNING&ERROR(1) REF= オプションは,EFFECT 法 or REF 法でしか使えないが, 他の手法で基準を指定するには? ex) ordinal 法 A 0 0 B 1 0 P 1 1 プラセボ基準にしたい P 0 0 B 1 0 A 1 1 A Descending で順番を変える class TREATMENT / param=ordinal descending ; 16
Q CLASS ステートメントの WARNING&ERROR(2) LSMEANS ステートメントを使うと WARNING が出力される WARNING: The model does not have a GLM parameterization. This parameterization is required for the LSMEANS, LSMESTIMATE, and SLICE statement. These statements are ignored. A proc logistic data = data ; class Treatment Sex ; model Pain = Treatment Sex ; lsmeans Treatment ; run; LSMEANSステートメント,SLICEステートメントはGLM 法のみ class Treatment Sex / param=glm ; 17
Q CLASS ステートメントの WARNING&ERROR(3) REF= label でエラーが出力される ex) TREATMENT= B を基準としたい class TREATMENT SEX / param=ref ref = B ; ERROR 22-322: 構文エラーです 次の1つを指定してください : FIRST, LAST. A 変数ごとに個別に設定する Treatment A 1 0 B 0 1 P 0 0 Sex F 1 M 0 Treatment A 1 0 B 0 0 P 0 1 Sex F 0 M 1 class TREATMENT(ref = B ) SEX(descending) / param=ref ; 18
Q CLASS ステートメントの WARNING&ERROR(4) GLIMMIXプロシジャでORDER= を用いるとエラーが出力される A proc glimmix data=data ; class Treatment Sex / order=first ; model Pain = Treatment Sex ; run ; ERROR 22-322: 構文エラーです 次の 1 つを指定してください : ;, TRUNCATE. ERROR 202-322: オプションまたはパラメータを認識できません 無視します ORDER= ( 順序 ) の指定は,PROCステートメント内で記述できる ( 詳細な指定はできない ) GLM 法のみのプロシジャは PROC ステートメント内となる proc glimmix data=data order=internal; 19
各プロシジャにおける ダミー変数生成法のサポート GLM PARAM= GLM LOGISTIC GEMNOD PHREG MIXED GLIMMIX FMM SELECT EFFECT GLM ORDINAL THERMOMETER POLYNOMIAL POLY REFERENCE REF ORTHEFFECT ORTHORDINAL ORTHOTHERM ORTHPOLY ORTHREF : デフォルト 20
3 人のプログラムを検証 A さん GENMOD プロシジャオプションなし 結果の不一致 WARNING B さん LOGISTIC プロシジャオプションなし C さん LOGISTIC プロシジャオプションあり 21
ラベル 平均推定値 3 人のプログラムを検証 平均信頼限界 対比推定の結果 L'Beta 標準誤差アルファ推定値 A さん proc genmod data=neuralgia descending; class Treatment Sex ; model Pain = Treatment Sex / link=logit dist=bin; estimate "estimate A" int 1 Treatment 1 0 0 Sex 0.5 0.5; run; L'Beta 信頼限界 カイ 2 乗値 Pr > ChiSq estimate A 0.2139 0.081 0.456-1.3013 0.5739 0.05-2.4261-0.1766 5.14 0.0234 proc logistic data=neuralgia; class Treatment Sex ; model Pain(EVENT='Yes') = Treatment Sex; estimate estimate A int 1 Treatment 1 0 0 Sex 0.5 0.5; run; 推定 B さん ラベル推定値標準誤差 z 値 Pr > z estimate A -1.7493 0.647-2.7 0.0069 proc logistic data=neuralgia; class Treatment Sex / param=ref; model Pain(EVENT='Yes') = Treatment Sex; estimate "estimate A" int 1 Treatment 1 0 0 Sex 0.5 0.5; run; 推定 C さん ラベル推定値標準誤差 z 値 Pr > z estimate A -1.3013 0.574-2.27 0.0234 22
A さんの方法 Treatment A の効果を見るため他の効果 (Sex) は平均とする ya GENMOD プロシジャオプションなし proc genmod data=neuralgia descending; class Treatment Sex ; model Pain = Treatment Sex / link=logit dist=bin; estimate "estimate A" int 1 Treatment 1 0 0 Sex 0.5 0.5; run; GENMOD プロシジャの デフォルトは GLM 法 0 Treat 1 0.5 Sex1 0. 5 Sex2 GLM 法 x 1 x 2 x 3 Treatment A 1 0 0 B 0 1 0 P 0 0 1 Sex F 1 0 M 0 1 23
B さんの方法 proc logistic data=neuralgia; class Treatment Sex ; model Pain(EVENT='Yes') = Treatment Sex; estimate estimate A int 1 Treatment 1 0 0 Sex 0.5 0.5; run; WARNING: LOGISTIC プロシジャオプションなし More coefficients than levels specified for effect Treatment. Some coefficients will be ignored. Treatment A の効果を見るため他の効果 (Sex) は平均とする (0) 参 LOGISTIC プロシジャのデフォルトは EFFECT 法 y A 0 Treat1 estimate estimate A int 1 Treatment 1 ; EFFECT 法 x 1 x 2 Treatment A 1 0 B 0 1 P -1-1 Sex F 1 M -1 24
C さんの方法 proc logistic data=neuralgia; class Treatment Sex / param=ref; model Pain(EVENT='Yes') = Treatment Sex; estimate "estimate A" int 1 Treatment 1 0 0 Sex 0.5 0.5; run; LOGISTIC プロシジャ PARAM オプションあり WARNING: More coefficients than levels specified for effect Treatment. Some coefficients will be ignored. Treatment A の効果を見るため他の効果 (Sex) は平均とする (0) 参 y REF 法を指定 A 0. 5 0 Treat 1 Sex estimate estimate A int 1 Treatment 1 0 Sex 0.5 ; REF 法 x 1 x 2 Treatment A 1 0 B 0 1 P 0 0 Sex F 1 M 0 25
まとめ カテゴリカルな ある応答変数 (2 値データ ) に対して, 説明変数を用いてモデル化し, 各薬剤群における推定を行いたい GLM 法 GLM 法 x 1 x 2 x 3 Treatment A 1 0 0 B 0 1 0 P 0 0 1 Sex F 1 0 M 0 1 LSMEANS, CONTRAST, ESTIMATE, LSMESTIMATE 26
参考文献 1. Carpenter AL. Programming With CLASS: Keeping Your Options Open. Proceedings of the SAS Global Forum. Cary, NC: SAS Institute Inc., 2014. Available at http://support.sas.com/resources/papers/proceedings14/1270-2014.pdf. 2. Pasta DJ. Parameterizing Models to Test the Hypotheses You Want: Coding Indicator Variables and Modified Continuous Variables. Proceedings of the 30th Annual SAS Users Group International Conference. Cary, NC: SAS Institute Inc., 2005. Available at http://www2.sas.com/proceedings/sugi30/212-30.pdf. 3. Pritchard ML, Pasta, DJ. Head of the CLASS: Impress your colleagues with a superior understanding of the CLASS statement in PROC LOGISTIC. Proceedings of the 29th Annual SAS Users Group International Conference. Cary, NC: SAS Institute Inc., 2004. Available at http://www2.sas.com/proceedings/sugi29/194-29.pdf. 4. SAS Institute Inc. SAS/STAT(R) 9.3: User s Guide. Cary, NC, USA: SAS Institute Inc., 2011. 5. SAS Institute Inc. SAS/STAT(R) 12.3: User s Guide: High-Performance Procedures. Cary, NC, USA: SAS Institute Inc., 2013. 6. 魚住龍史. LS-Means 再考 GLM と PLM によるモデル推定後のプロセス. SAS ユーザー総会論文集 2014. 7. 竹内啓, 高橋行雄, 大橋靖雄, 芳賀敏郎. SAS による実験データの解析. 東京大学出版会, 1989. 8. 浜田知久馬. V.8 における LOGISTIC の機能拡張. 日本 SAS ユーザー会 (SUGI-J) 論文集 2000, 13 38. 9. 浜田知久馬. SAS 生存時間解析プロシジャの最新の機能拡張. SAS ユーザー総会論文集 2013, 185 199. 27