2K Views
March 26, 24
スライド概要
[第9回大阪SAS勉強会] 飯田 絢子
SAS言語を中心として,解析業務担当者・プログラマなのコミュニティを活性化したいです
MMRMの解析 mixedプロシジャの機能整理とorderオプション 2024年3月22日 臨床開発事業本部 データサイエンスセンター 統計解析2部 飯田 絢子
発表概要 <発表の背景> MMRMについて継続的に学んでいるため、本発表においてもMMRMと絡めた発表にする. 前回発表ではMMRMの基礎に触れた.今回はよりMMRMの実践に近づくため、以下、業務上 感じた課題を中心に、解説をしていく. 業務上で感じた課題点 ・mixedプロシジャのオプションやステートメント、デフォルト等、知識があいまいであった ・orderオプションを知らなかった <発表概要> ◆MMRMの復習 ◆MMRMと線形混合効果モデル ◆MMRMを行うにあたって計画が必要な項目とプログラムの基本構文 ◆結果の見方 ◆order=formattedとorder=internal ◆Orderオプションの注意点と例 ◆まとめ 2
MMRMとは~線形混合効果モデルの一種である~ mixed effect models for repeated measures 線形混合効果モデル:線形であり,固定効果と変量効果が混ざっている ◆一般線形モデル:Y= Xβ+ε(回帰分析,分散分析,t検定等) 行列,ベクトルを使って表す 固定効果 ◆線形混合効果モデル: Y = 誤差 Xβ +Zγ +ε 固定効果 変量効果 誤差 ◆固定効果:確定しているものとして扱う 例)薬剤群 今あるデータしか取 らないつもり ◆変量効果:確率変数として扱う.母集団からの抽出 例)症例 今あるデータはたまたま. 他の値も取ると想定 何を固定,ランダムとするかは意思決定による.臨床試験では事前に仕様等に明記が必要! 3
MMRMの基礎_ MMRMと線形混合効果モデル ◆MMRMをsasで行うにはmixedプロシジャを使う 線形混 MMRM 合効果 proc mixed data=SAMPLE; proc mixed data=SAMPLE; class TRT TIME SUBJECT; class TRT TIME SUBJECT; モデル model VAR=TRT TIME TRT*TIME ; model VAR=TRT TIME TRT*TIME ; random SUBJECT /type=VC; random SUBJECT /type=VC; repeated TIME /type=CS repeated TIME /type=VC subject=SUBJECT ; subject=SUBJECT ; run; run; ・MMRMではランダム効果を明記せず,誤差に含めることが一般的 ・repeatedオプションのtypeにて誤差に対する分散共分散構造の設定ができる →ランダム効果分を含めて柔軟表現可能 ・本発表では、mixedプロシジャにてrepeatedを用いる方法で MMRMを実施する 「一般的なMMRM法では,周辺モデルに基づくため,変量効果biを推定することはない.この点が,他の線形混合効果モデルに基づく 4 解析と異なる特徴の1つといえる.」参考文献[1]
MMRMを行うにあたって計画が必要な項目とプログラムの基本構文 【proc mixedステートメント】 • <OP>※1パラメータ推定方法 【classステートメント】 • <ST>※1分類変数 【modelステートメント】 • • <ST>従属変数response variable <ST>固定効果fixed effects • • <ST>共変量covariate <OP>自由度の計算方法 【 repeatedステートメント】 • <OP>誤差の分散共分散構造 covariance structure 基本構文 PROC MIXED <options>; CLASS variables; MODEL dependent = <fixed-effects> </ options>; REPEATED <repeated-effect> </ options>; run; 具体例 proc mixed data=pr_mini_0 method=ml covtest order= formatted ; class Person Gender_C; model y=Gender_C Age Gender_C*Age /s; repeated /type=CS subject=Person r; run; 指定した構造で収束しない際に、次に指定する 構造はどうするかも計画しておく ※1:スペースの都合上、以下のように省略 <ST>:ステートメント <OP>:オプション 5
mixedプロシジャの詳細 MMRMに関連する主要なステートメントとオプション,デフォルト プロシジャでの位置づけ ST/OP(OP名) 指定項目 SASでのデフォルト 補足 proc mixedステートメントとオプション 直近に作られたデータ 試験計画というよりは、プログラム計画として必要 セット OP(data=) 解析対象データセット名 OP(method=) パラメータ推定方法 OP(order=) classで指定した変数における水準の ソート方法. formatted 結果の表示における基準とする側や、 差を見たいときの引く側に関わる ・REML: residual (restricted) maximum likelihood ・ML: maximum likelihood 他の推定方法も設定可能 REML ・formatted:フォーマットでのソート順 ※明示的なフォーマットを持たない数値変数は、フォーマットされていない 値でソートされるnumeric variables with no explicit format, which are sorted by their unformatted (internal) value ・internal:フォーマットではないそのままの変数値でのソート順 ※ソート順については、アルファベットの大文字小文字や、小数点を持つ値等、SASがどのようにソートするかは注意が必要) 他のソート方法も設定可能 classステートメントとオプション ST:variable 分類変数 (試験計画というよりは、プログラム計画として必要) ・「連続な数値変数を指定することも可能である」参考文献[2]9.3.2 ー modelステートメントとオプション ST:dependent ST:fixed-effects OP(ddfm=) 従属変数(response variableや dependent) 固定効果(fixed effects) 共変量(covariate) ー 切片項 固定効果の変数を指定しない場合は、デフォルトで切片項のみが入る BETWITHIN(repeatedス ・KR:KENWARDROGER 固定効果の推定や検定における統計量 テートメント設定時) ・KR2:KENWARDROGER2 が従う分布の自由度 を計算する方法 CONTAIN(randomステートメント設定他にも設定可能 時.MMRMでは設定しない) repeatedステートメントとオプション ST:repeated-effect 被検者内での繰り返しを表す変数名 ー OP(type=) 誤差(SASでは「R」と表記される)の分 VC 散共分散構造 OP(subject=) 被験者※を表す変数名 ー ST:ステートメント OP:オプション 上記の他にもステートメントやオプションは存在 ※臨床試験における用語として「被験者」と記載しているが、業界により呼び名は異なる (試験計画というよりは、プログラム計画として必要) SAS上、設定必須とはされていないが、被験者ごとに繰り返されるレコード数が異なる(欠測レコードを入力データに入れない) 場合には指定が必要 ※解析対象データにおいて、欠測時点を「.」としてレコード発生させている場合には設定しなくても大丈夫 ・VC:Variance components ・CS:Compound symmetry ・UN:Unstructured 他にも設定可能 (試験計画というよりは、モデルデザインの詳細やプログラム計画として必要) Rの構造における、ブロックの指定 6
結果の見方:図でイメージ proc mixed data=pr_mini_0 method=ml covtest order= formatted ; class Person Gender_C; model y=Gender_C Age Gender_C*Age /s; repeated /type=CS subject=Person r; run; 推定値 Intercept ー 16.5167 F 15.2837 M 16.5167 Age 推定値(M基準) ー -1.233 16.5167-1.233=15.2837 0 16.5167+0=16.5167 0.7333 AGE*Gender_F 0.67497 -0.05833 0.7333-0.05833=0.67497 AGE*Gender_M 0.7333 0 0.7333+0=0.7333 Gender_C=“M”側の回帰式 y=0.7333 *Age+16.5167 +ε Gender_C=“F”側の回帰式 y=0.67497 *Age+15.2837 +ε 7
結果の見方:参照水準は何か • 推定値の列が「0」となっている箇所が参照水準 proc mixed data=pr_mini_0 method=ml covtest order= formatted ; class Person Gender_C; model y=Gender_C Age Gender_C*Age /s; repeated /type=CS subject=Person r; run; F側の切片=16.5167-1.233=15.2837 M側の切片= 16.5167+0=16.5167 F側の傾き=0.7333-0.05833=0.67497 M側の傾き= 0.7333+0=0.7333 M側の切片= 15.2833 +1.2333=16.5166 F側の切片=15.2833 +0= 15.2833 M側の傾き= 0.6750 +0.05833= 0.7333 F側の傾き=0.6750 +0= 0.6750 8
Class Level Informationとorderオプション SAS help(参考文献[4])において“Class Level Information” の確認は重要とされている. またそのコントロールはORDERオプションであることも記載されている The "Class Level Information" table lists the levels of every variable specified in the CLASS statement. You should check this information to make sure the data are correct. You can adjust the order of the CLASS variable levels with the ORDER= option in the PROC MIXED statement. The ODS name of the "Class Level Information" table is ClassLevels. https://go.documentation.sas.com/doc/ja/pgmsascdc/9.4_3.4/statug/statug_mixed_details42.htm#statug_mixed015999 Class Level Informationとは 9
order=formattedとorder=internal ◆order=formatted class変数に割り当てられたフォーマットの昇順 ◆order=internal class変数の昇順(割り当てられたフォーマットは関係なし) ◆各種昇順によりSAS内部で並び替えた際、後に来る方が参照水準(基準)とな る ・固定効果の推定値における参照水準(0と表示される側)となる ・差の推定値における参照水準(引く側)となる ◆小数点,整数,大文字,小文字等はSAS上でのソート順に注意 10
Orderオプションの注意点 以下のような場合、order=formattedとorder=internalで並べ替え順が異なるので注意する ・Gender_Cのフォーマットに大文字小文字が混在している ・Gender_Nのフォーマットが、本来の値と逆にあてられている ・数値変数についてput(数値変数,best12.)でbest12.フォーマットをあてて文字変数化させている 他にも想定外の挙動が起きる組み合わせはあり得る フォーマットをあてる前のデータ フォーマットをあてた後のデータ Proc mixedの解析対象データセットとして使用すると… 固定効果の推定値 の基準(0)側は… 差の推定値の基準 (引く側)は… 11
Orderオプションの挙動実験における解析の方針 ~SAS helpの例を一部変更~ 以下のリンク、SAS® 9.4 および SAS® Viya® 3.4 プログラミングドキュメント (以降、 「Example 81.2」と呼ぶ)の例を一部変更 SAS 9.4 / Viya 3.4SAS Help Center: Example 81.2 Repeated Measures Example 81.2からの変更点:詳細は別途プログラムファイルをご参照ください 【データセットについて】 ・prデータセットを、より小人数に絞り、pr_mini_0 データセットを作成 proc mixed data=pr_mini_0 method=ml covtest ・Genderを文字変数Gender_Cとし、数値変数Gender_Nを作成 order= formatted ・ Gender_Cにフォーマットをあてる ; class Person Gender_C; ・ Gender_Nにフォーマットをあてる model y=Gender_C Age Gender_C*Age /s; 【プログラムについて】 repeated /type=CS subject=Person r; ・誤差の分散共分散構造を簡易化(repeated /type=unをtype= CSに変更) run; ・order=formattedを追加(デフォルトの設定を明言) ・グレーにした箇所は、プログラム上記載しているが、今回は解説しない ・スライドp.6の表には記載していないが、結果の検証のため、以下、modelステートメントのsオプション,lemeansステ ートメントおよびdiffsオプションを使用する ・modelステートメントの「/s」オプション:solutionオプションの略表示.固定効果の推定値を表示するオプション. ・lsmeans 変数名/ diff cl alpha=0.05:指定した変数における最小二乗平均値および最小二乗平均の差を計算する. Cl,alphaについてはalphaで設定した有意水準における信頼区間を計算する. 目的:order=formattedとorder=internalの挙動を確認する 12
解析に使うデータ Example 81.2からの変更点: 詳細は別途プログラムファイルをご参照ください 【データセットについて】 ・prデータセットを、より小人数に絞り、pr_mini_0 データセ ットを作成 ・数値変数Gender_Nを作成 ・ Gender_Cにフォーマットをあてる ・ Gender_Nにフォーマットをあてる data pr_mini_0; input Person Gender_C $ y1 y2 y3 y4; y=y1; Age=8; output; y=y2; Age=10; output; y=y3; Age=12; output; y=y4; Age=14; output; drop y1-y4; datalines; 1 F 21.0 20.0 21.5 23.0 2 F 21.0 21.5 24.0 25.5 3 F 20.5 24.0 24.5 26.0 25 M 22.5 25.5 25.5 26.0 26 M 23.0 24.5 26.0 30.0 27 M 22.0 21.5 23.5 25.0 ; run; 13
Orderオプションの挙動実験における解析の方針~データセット~ ・数値変数Gender_Nを作成 ・ Gender_Cにフォーマットをあてる ・ Gender_Nにフォーマットをあてる 14
Orderオプションの注意点~固定効果の推定値 例1~ ◆Gender_Cのフォーマットに大文字小文字が混在している フォーマットをあてる前のデータ order=formatted(デフォルト) order= internal フォーマットをあてた後のデータ ←フォーマット後の値 Gender_Cのフォーマット昇順M→f フォーマット化前の元F側が基準 ←フォーマット後の値 Gender_C(フォーマットなし)の昇順F→M フォーマット化前の元M側が基準 元:フォーマット化前の数値 15
Orderオプションの注意点~固定効果の推定値 例2~ ◆Gender_Nのフォーマットが、本来の値と逆にあてられている フォーマットをあてる前のデータ order=formatted(デフォルト) order= internal フォーマットをあてた後のデータ ←フォーマット後の値 Gender_Nのフォーマット昇順後1→後2 フォーマット化前の元1(F)側が基準 ←フォーマット後の値 Gender_N(フォーマットなし)の昇順元1→元2 フォーマット化前の元2(M)側が基準 元:フォーマット化前の数値 後:フォーマット化後の数値 16
Orderオプションの注意点~固定効果の推定値 例3~ ◆数値変数についてput(数値変数,best12.)で フォーマットをあてる前のデータ Gender_N=Gender_N_best12 best12.フォーマットをあてて文字変数化させている 例:Gender_N_best12=put(Gender_N,best12.); order=formatted(デフォルト) ←フォーマット後の値 Gender_N_best12のフォーマット昇順 後1→後0.5 フォーマット化前の元0.5(F)側が基準 参考文献[3]の記事を参考に実験した order= internal フォーマットをあてた後のデータ ←フォーマット後の値 Gender_N (Gender_N_best12(フォーマットなし))の 昇順元0.5→元1 フォーマット化前の元1(M)側が基準 元:フォーマット化前の数値 後:フォーマット化後の数値 17
Orderオプションの注意点~差の推定値 逆転例~ Gender_Cのフォーマットに大文字小文字が混在していると… order=formatted(デフォルト) order=internal Estimate=参照水準でない方の値ー参照水準の方の値 どちらからどちらを引いた結果か意識しないと、誤った解釈になる 18
SASによるBEST12.フォーマットの大小判定 例3の補足 • フォーマット BEST12. SASは、半角ブランクの数が少ない方を大きいと判断?(確証なし) 黄色:半角ブランクの数 数値 1 2 3 4 5 6 7 8 9 10 11 1⇒ 1.2⇒ 1 . 1⇒ 0.5⇒ 0 . SASの判断 人間の視覚 的判断 1⇒ 小 小 2⇒ 大 大 1⇒ 小 大 5⇒ 大 小 12 人間の思う大小と同じ 人間の思う大小と異なる! • どのようにしてSASの大小判定がわかるか? proc sort data=pr_mini_1;by Gender_N_best12;run; • ソート結果で先に来る方がSASの中で小さいと判断されている方 • 例3においてSASのformat12.では「1」<「0.5」と判断されることがわかる 19
まとめ ◆MMRMではランダム効果を明記せず,誤差に含めることが一般的 ◆mixedプロシジャにてrepeatedを用いる方法でMMRMを実施する ◆MMRMを行うにあたって計画が必要な項目とプログラムの基本構文を記載した ◆mixedプロシジャにおけるステートメントとオプション、デフォルトについて記載 した ◆orderオプションは、classで指定した分類変数の水準について、ソート方法を指定 するオプションである ◆orderオプションにより、固定効果の推定値や差の推定値における基準となる側が 決定する ◆order=formatted(デフォルト)とorder=internalの挙動について注意が必要な例を 挙げた(小数点,整数,大文字,小文字等) ◆他にもフォーマットを明言せずにmixedステートメントでorder=formatted(デフォ ルト)を行った場合の挙動等、想定外の順番になっている可能性があるため、都度ど ちらが基準となっているか確認するのが良いと考える 20
参考文献 [1]五所 正彦ほか,経時測定データ解析における mixed-effects models for repeated measures(MMRM)の利用,応用統計学,46(2), 53-65,2017. [2]欠測のある連続量経時データに対する 統計手法について,日本製薬工業協会医薬品評価委員会 データサイエンス部会 Ver.2.0 [3] https://sas-boubi.blogspot.com/2017/04/orderformatted.html [4] SAS 9.4 / Viya 3.4SAS Help Center: Example 81.2 Repeated Measures 21