動的割付の使用例
このレッスンではViedoc Designer、Viedoc AdminおよびViedoc Clinicで動的割付を設定する際の使用例を示します。また、患者を治療に割り当てるために使用するアルゴリズムおよび計算の実行方法についても説明します。
重要! 割付設定を本番モードで使用するためには、割付機能が試験ライセンスに含まれている必要があります。ライセンスがなくても、デモモードで割付を構成することはできます。 |
はじめに
これらのステップに関する詳細な手順は以下よりご確認ください。
静的リスト割付と動的割付の設定方法については、以下のチュートリアル動画を参照してください。
使用例の説明
次のシナリオについて考えてみましょう。A、B、Cの3つの治療を比較する試験を実施して、患者をこれらの治療に無作為に割り当てます。ここでは、治療Aを50%の割合で割り当て、治療BおよびCを25%の割合で割り当てます。患者に対する治療効果に影響を与える可能性があり、かつ割付において均衡を持たせたい予後因子は、患者の性別(男性または女性)と患者の年齢(<= 30または> 30)です。患者の年齢よりも性別の均衡をとることが重要であると考えているため、性別の因子により高い因子の重みを設定します。
要約すると:
- 3つの治療群:A、B、C
- A:B:C = 2:1:1の割当比率
- 2つの因子:性別(男性または女性)および年齢(<= 30または> 30)
- 因子の重み:性別が2、年齢が1。
手順
Viedoc Designerで実行されるアクション
Viedoc Designerでフォームを設定する
この割付の例では、2つの形式を使用します。
- 患者の追加フォーム - 2つの項目を含む:
- 性別
- 年齢
- 治療フォーム(割付フォーム)- 3つの項目を含む:
- 性別 - 患者の追加フォームで性別の値を返します。
- 年齢 - 患者の追加フォームで年齢の値を返します。
- 治療 - A、B、Cの3つの選択肢が存在するコードリストが入ります。この項目は割付サービスによって入力されます。
Add_SUBJ Study Startのイベントで、患者の追加フォームがACT1のアクティビティ に追加されます。治療フォームは、ACT2のアクティビティに追加されます。最初に予定されているイベントの治療イベントで、治療を割り当てます。
注意!割付フォーム(ここでは治療と呼びます)には、割当を行うために使用するすべての入力因子と出力を含める必要があります。
ヒント!Viedoc Clinicで保存された後、割付フォームは編集できなくなります。クリニックユーザーに対して、患者を割付する前にデータが正しいか確認することを求めるメッセージをフォームに追加します(下の画像を参照)。
ヒント!治療フォームの治療項目は割付サービスによって入力される項目であり、クリニックユーザーが入力するべきではありません。よって、患者が割付されていない限り、クリニックユーザーには非表示にしておくことを推奨します。これを実行するには、TREAT!= null (null以外の場合は項目を表示)のスクリプトの条件がTrueの場合の表示条件を設定します。こうすることで、クリニックユーザーはフォームを開いた時にこの項目を見ることができなくなります。しかし、そのクリニックユーザーが割付をクリックすると、割付サービスが患者を治療に割り当てることでこの項目はnullではなくなり、フォーム上に表示されます。
この例では、割付の出力(治療)は盲検化されていません。出力の盲検化を設定する場合、この項目も割付フォームに含める必要があります。盲検化された出力は、クリニックユーザーには表示されなくなり、エクスポートで利用できなくなります。また、盲検出力を基にした表示条件やロジカルチェックをプログラミングすることはできません。
Viedoc Designerで割付を設定する
割付マッピングは、Viedoc Designerの試験デザインの試験設定で設定されます。割付マッピングはViedocに対して、割付フォームの場所とそのフォーム内の変数をどう使用するかについての情報を提供します。
割付は以下のように設定します。
- 治療フォームに対して、イベント、アクティビティおよびフォームを選択します。
- 因子として、治療フォームで性別と年齢の項目を選択します。
- 出力として、治療フォームで治療項目を選択します。この項目は、割付サービスによって入力されます。
Viedoc Designerで割付マッピングを設定する方法については、割付を設定するを参照してください。
割付マッピングを設定した後、割付を有効にするために試験デザインを確定する必要があります。
Viedoc Adminで実行されるアクション
非盲検統計学者のロールにユーザーを招待する
スタディマネージャーは、ユーザーを非盲検統計学者のロールに招待する必要があります。非盲検統計学者のロールは、試験の評価業務に参加しない、また盲検化されるべきではないユーザーにのみ付与します。さもなければ、盲検が無効になってしまいます。非盲検統計学者は、同じ試験内の盲検化されているロールに従事することはできません。
ユーザーにロールを割り当てるための手順の詳細は、ユーザーを管理する(STMとSIM編)を参照してください。
Viedoc Adminで動的割付を設定する
注意!割付は非盲検統計学者のシステムロールが割り当てられているユーザーによってのみ設定可能です。
割付画面を開くには、Viedoc Adminの割付が実装されていますのフィールドのツールボックスアイコンをクリックします。
この例では割当を使用しないため、以下のように割付表のみを設定します。
- 試験の割付表の範囲を設定します。
- 因子として、性別と年齢を選択します。
- 出力として、治療を選択します。
割付法のドロップダウンリストから、 動的(Pocock / Simon)を選択します。
注意!動的割付法は、以下の基準が満たされている場合にのみ選択できます。
- 出力が1つだけ選択されている。
- 選択された入力因子と出力にコードリストがある(フリーテキストフィールドは使用できません)。
動的割付を以下のように設定します。
- 変化法として、範囲を選択します(これは、一連の値の内の最高値と最低値の差です)。
- 確率を(80%に当たる)800に設定します。
- この例では、年齢因子よりも性別因子の均衡をとることが重要であるため、因子の重みを性別に対して2 、年齢に対して1に設定します。
- 治療Aを50%の割合で割り当て、治療BおよびCを25%の割合でそれぞれ割り当てたいため、割当比率を治療Aでは2に、治療BおよびCでは1に設定します。
- 枠の上限(リスト毎)として、最大で50スロットと入力します。
注意 ! 動的割付設定を作成した後、デモモードと本番モードで個別に動的割付設定を作成する必要があります。
設定を承認してリストを生成をクリックします。設定を作成リンクが表示されます。
Viedoc Adminで割付を設定するための手順の詳細は、動的割付を設定するを参照してください。
Viedoc Clinicで実行されるアクション
Viedoc Clinicで患者を割付する
クリニックユーザーがViedoc Clinicに患者を追加して(つまり、患者の追加フォームに入力)治療フォームを開くと、性別と年齢の値が患者の追加フォームから自動的に入力されます。割付をクリックすると、患者は治療群の1つに割り当てられます。治療項目は割付サービスによって入力され、フォームに表示されます。
注意!患者を割付すると、割付フォーム(治療フォーム)は読み取り専用になります。つまり、元の患者の追加フォームで性別または年齢の値が変更された場合であっても、治療フォームの項目を編集することはできません。バックグラウンドでの計算
このセクションでは、新しい患者を割付する際に3つの治療(A、BまたはC)のいずれかを割り当てるための計算方法について説明します。
参考文献
Viedocで実装している動的割付法の基礎となる理論は、以下の文献で解説されています。
- Pocock S.J. and Simon R. Sequential treatment assignment with balancing for prognostic factors in the controlled clinical trial. Biometrics 1975;31:103-115.
- Miller E. Probability sharing in a modified Pocock-Simon method. 12th Int. Conf. of S.C.M.A Jun 22, 2005.
Viedocで実装されている修正Pocock-Simon法に適用されているDonald E. Knuthの減算乱数ジェネレーターアルゴリズムについては、以下の文献で解説されています。
- Donald. E. Knuth. The Art of Computer Programming, volume 2: Seminumerical Algorithms. Addison-Wesley, Reading, MA, second edition, 1981.
動的割付の概念と用語
次の表は、Pocock-Simon法に従って動的割付に使用されているアルゴリズムの基礎となる用語の一覧です。
用語 |
説明 |
計算内容 |
---|---|---|
D | 因子の一連の値における変化量 |
|
G |
すべての因子における不均衡の合計量 |
すべての因子に対して重みを付けたDの合計(Dに因子の重みを掛けたもの) |
P (p) | 不均衡を最小化する治療が割り当てられる確率 |
この確率は不均衡の最小化につながる治療群を優先する度合いを決定します。 割付の際、確率のカットオフ値に基づいて各治療割当の確率Pが計算されます。この確率のカットオフ(以下ではpと言及)は、統計学者によって提供される0〜1の少数です。Viedocでは、確率のカットオフはx/1000と入力する必要があります。したがって、pが0.8(80%)の場合、数字は800と入力します。 割付中、各治療のPは次のように分布されます:
|
乱数 | 0〜1の乱数 | Donald E. Knuthの減算乱数ジェネレーターアルゴリズムを使用して生成されます。 |
シード | 乱数ジェネレーターを初期化するために使用する値 | 現在の日付を表すチェック数に基づいた値 |
手順
上記のアルゴリズムを使用して、割付される新しい患者ごとに度数分布表が算出されます。現在の日付を表すチェックの数に基づいたシード値を使用して、0以上1未満の乱数が生成されます。Pとこの乱数を使用して、治療指数が選択され、患者に治療が割り当てられます。
新しい患者が追加され、その患者を無作為に治療に割り当てる必要がある場合、以下の計算が実行されます。
計算
最初の患者が割付されると、Viedoc Adminから割付表をダウンロードすることができます。
以下の3つのシートを含むExcelファイルがダウンロードされます。
- 設定 (1) - 因子、出力、コードリストの概要と割付の詳細(割付法、変化法、確率、リストごとのスロットの最大数、因子の重みと割当比率)。
- 現在の分布 (2) - 因子および出力によって分別されたエントリー数の概要。この例では、各治療に割り当てられている患者の数、男性または女性の患者数、および30歳以上または30歳以上の患者数を確認することができます。
- スロット(3) - 割付された患者ごとに1行で以下を示します:
-
- 割付の詳細:因子と出力、患者の詳細、患者を割付したクリニックユーザーのユーザー詳細(メールアドレス)、および割付の日時
-
- 適用されたアルゴリズムの詳細:変化法、確率P、因子の重み、割当比率、リストごとのスロットの最大数、G、P、乱数およびシード。
最初に追加された患者を例にとって、割付された治療を割り当てるために最初に実行される一連の計算がどのように行われるのかを見てみましょう。
開始時には分布表のすべての値(画像の2で示されています)が、0になっています。性別=女性、年齢>30の最初の患者を追加します。ここでは、3つの出力候補(治療)のそれぞれについてD、G、Pを計算するワークフローに従います。
以下の表記法を使用します。
- 因子の重み
- wG - 性別の因子の重み = 2
- wA - 年齢の因子の重み = 1
- 割当比率
- rA - 治療Aの割当比率 = 2
- rB - 治療Bの割当比率 = 1
- rC - 治療Cの割当比率 = 1
- 分散
- dAM - 治療の分散 = Aで、性別=男性
- dAF - 治療の分散 = Aで、性別=女性
- dA(<=30) - 治療の分散 = Aで、年齢<= 30
- dA(>30) - 治療の分散 = Aで、年齢> 30
- dBM, dBF, dB(<=30), dB(>30), dCM, dCF, dC(<=30), dC(>30) - 上記の治療Aと同様に治療BとCのそれぞれの分散。
3つの治療をそれぞれ仮設的に割り当て、各割当の分散を計算することから始めます。追加する患者は30歳以上の女性であるため、該当する因子の値の分散のみを計算します。
- 治療Aが割り当てられると仮定して、分布表の治療Aの行の女性の列と年齢>30の列に1を加えます。各因子の分散は以下のように計算され、画像の最後の表に示されています。
- dAF = 1/ rA - 0 = 1/2 = 0.5(女性の患者が1人追加され、分布表の女性の列に対応する最高値= 1、最低値= 0になります)
- dA(>30) = 1/ rA - 0 = 1/2 = 0.5 (年齢が30を超える患者が1人追加され、分布表の年齢> 30の列に対応する最高値= 1、最低値= 0になります)
- 治療Bが割り当てられると仮定して、分布表の治療Bの行の女性の列と年齢> 30の列に1を加えます。各因子の分散は以下のように計算されます。
- dBF = 1/ rB - 0 = 1 (女性の患者が1人追加され、分布表の女性の列に対応する最高値= 1、最低値= 0になります)
- dB(>30) = 1/ rB - 0 = 1 (年齢> 30の患者が1人追加されたため、年齢> 30 列= 1および最低= 0に対応する分布表の最大値になります)
- 治療Cが割り当てられると仮定して、分布表の治療Cの行の女性の列と年齢> 30の列に1を加えます。各因子の分散は以下のように計算されます。
- dCF = 1/ rC - 0 = 1 (女性の患者が1人追加され、分布表の女性の列に対応する最高値= 1、最低値= 0になります)
- dC(>30) = 1/ rC - 0 = 1 (年齢が30を超える患者が1人追加されたため、分布表の年齢> 30の列に対応する最高値= 1、最低値= 0になります)
次に、3つの治療割当ごとに不均衡の合計量を計算します。これらは、G s 列の最初のエントリーに対して、スロットシートの表(画像の3 )に表示される値です。
- GA = dAFwG + dA(>30)wA = 0.5*2 + 0.5*1 = 1.5
- GB = dBFwG + dB(>30)wA = 1*2 + 1*1 = 3
- GC = dCFwG + dC(>30)wA = 1*2 + 1*1 = 3
次に、3つの治療割当それぞれについて確率(P)を計算します。この例では、確率(p)を0.8に設定していました。最も低いGの治療(この場合はA)の確率(P)はp(この場合は0.8)となります。残りの治療割当には残りの確率が分配されます。これらは、スロットシートの表(画像の3)のPs 列の最初のエントリーに対して表示される値です。
- PA = 0.8 (0以上0.8未満のすべての値が対象)
- PB = 0.1 (0.8以上0.9未満のすべての値が対象)
- PC = 0.1 (0.9以上1未満のすべての値が対象)
次に、Donald E. Knuthの減算乱数ジェネレーターアルゴリズムと、現在の日付を表すチェック数に基づくシード値を使用して、0〜1の乱数を生成します。番号はスロットシートの表(画像の3)の乱数の列、最初のエントリーに対して表示されます。この例では乱数= 0.934 ...と表示されています。画像のように、各治療割当の確率と乱数を考慮して、治療Cが最初の患者に割り当てられます。