SAS Japan

活用事例からデータ分析のテクニックまで、SAS Japanが解き明かすアナリティクスの全て
Analytics | Students & Educators
0
時間依存性治療(time-varying treatments)の因果推論:概論

注) 本コラムは『経時的に変化する治療(Time-varying treatments)に対する因果推論』と題した以前のコラムを、時間依存性治療に関する部分と周辺構造モデルにおけるIPTW法に関する部分に分割し、内容の追加と修正を行い再構成したものの一部となります。   はじめに 多くの統計的因果推論に関する書籍や文献では、ある治療※1が単時点で行われる場合の因果効果の推定手法について紹介がされています。しかし、治療が複数の時点にわたって実施され、その一連の治療による効果に興味があるという状況も存在するかと思います。例えば、新型コロナワクチンの接種が我々に身近な例として挙げられ、これ以外にも顧客に対する商品のレコメンデーションなど医学分野に限らず様々な例が挙げられます。 正確な定義は後述しますが、上記で挙げたような複数の時点において実施され、かつ各時点での値が異なりうる(時間経過とともにとる値が変化しうる)治療は、時間依存性治療(time-varying treatments)と呼ばれます。時間依存性治療に対する因果推論へのニーズは、近年の統計的因果推論という言葉自体の認知の広まりや個別化医療への関心の高まりに相まって増加しています。一方で、その統計学的理論の理解は点治療の状況と比較すると内容が高度になることや日本語での文献が少ないことからそれほど進んでいません。そこで、本コラムでは時間依存性治療に対する効果をどのように定義するか、問題となることは何か、どのように効果の推定を行えばよいかについて簡単に解説を行います。また、いくつかの代表的な推定手法についてはSASでの実装方法も併せて紹介を行います。なお、本コラムは潜在アウトカムモデルの枠組みの下での因果推論について基本的な理解があることを前提としています。適宜関連する書籍や文献、因果推論に関する連載コラムをご参照していただければ幸いです。 ※1 本コラムにおいては、介入(intervention)や曝露(exposure)など他の原因となる変数を治療(treatment)と同義的に用いて構わないものとする     因果推論を行う上での治療分類("time-fixed" or "time-varying") ある治療とアウトカムとの因果関係を議論する場合、治療はtime-fixed treatments(時間固定性治療)※2、もしくはtime-varying treatments(時間依存性治療)のいずれかに分類がされます。そして、このどちらに属するかによって扱いは大きく異なります。まず、治療が時間固定(time-fixed)であるとは、対象集団におけるすべての被験者に関して、初回の治療レベルが以降のすべての時点における各々の治療レベルを決定することを指します。この状況としては大きく3つあります。 治療が研究開始時点でのみ行われる 1つ目は、治療がベースラインやtime zeroとも呼ばれる研究やプロジェクトの開始時点でのみ行われる場合です。一般的な臨床試験で投与される被験薬・対照薬や、一回の投与で完全な免疫を与えるone-dose vaccine(e.g., 黄熱病ワクチン)などが実例として挙げられます。 初回の治療レベルが時間経過によって不変 2つ目は、初回の治療が2回目以降の治療時点においても変わらず継続的に行われる場合です。この状況の例としては、被験薬と対照薬の複数回投与が予定される臨床試験や近年いくつかの国で導入されているベーシックインカムといったものが挙げられるかと思います。 決定論的に各時点の治療レベルが定まる 3つ目は、初回の治療レベルが決定論的にその後の治療レベルを定める場合です。すなわち、初回治療での分岐以降はそれぞれ1つの治療パターンとなる場合です。例えば、A群に割り付けられた被験者は隔週で被験薬を、B群に割り付けられた被験者は毎週対照薬を投与(初回治療が被験薬なら毎週投与、対照薬なら隔週投与)されるといった実験が1つの例として考えられます。また、Aチームに配属された選手は実践練習と模擬戦を、Bチームに配属された選手は基礎練習と筋力トレーニング(初回練習が応用練習ならその後は模擬戦、基礎練習なら筋力トレーニング)をそれぞれ1日の練習メニューとして行うといったものもスポーツの領域における例として考えられます。 上記の分類からも類推されるように、治療が複数時点で行われるとしても2, 3の状況に該当する場合には、因果推論を行う上での扱いは治療が単時点で行われる場合と変わらず、ベースライン共変量の調整に基づく手法が適用可能です。これはすべての個人に関して初回治療によって2回目以降の治療が決定されるため、後述する時間依存性交絡(time-dependent confounding)という問題が生じ得ないためです。   次に、時間依存性治療(time-varying treatments)とは時間固定でない治療すべてを指します。すなわち、複数時点で行われる治療であり、かつ各時点でとる値が初回の治療によって決定論的に定まらない治療が時間依存性治療にあたります。例えば、月に1回のペースで運動指導プログラムをある市において行うというプロジェクトを考えてみます。ここで、「初回指導に参加した場合は何があっても絶対に毎回参加しなければならない」や「初回指導に参加しなかった場合には絶対に以降参加できない」などといった特殊な制約がない限りは、各指導日でプログラムという2つの選択肢を市民は取ることができます。そのため、この運動指導というのは時間依存性治療にあたります。 この他にも疫学研究における喫煙や投薬量が被験者の状態によって変更される処方、検索履歴に応じて表示される広告(レコメンド)など様々な曝露、治療、介入が時間依存の例として挙げられます。ただし、特に疫学・医学分野においては本質的には時間依存であるものの、測定の実現可能性から時間固定とされる場合もあります。また、対照的に研究・プロジェクトの計画時点では時間固定であるものの、研究実施後には時間依存であるとみなされる場合もあります。それが割付の不遵守(コンプライアンス違反)が存在する場合の治療です。例えば、上記の時間固定である治療の2番目のシナリオで紹介した継続的に被験薬と対照薬(実薬)を投与するという臨床試験においては、試験に参加する被験者が何らかの理由(e.g., 副作用の発現)で治療法を切り替える場合があります。このような状況においては、本来は時間固定であった治療を時間依存性治療とみなして解析(補正)を行うことが可能です。 ※2 執筆時点で対応する定訳が存在しないという筆者の認識であるが、本コラムにおいては時間固定性治療という訳をあてる     治療レジメン(treatment regime) ここまでは因果推論を行う上での治療分類について紹介を行いましたが、以降では治療レジメンとその分類について紹介と解説を行います。これらは、因果効果の定義やデータを用いて効果を推定する(識別のために必要な仮定を検討する)場合に非常に重要になります。ここから先は数学的な内容も入りますので、以下のように記法をおきます。基本的にはアルファベットの大文字は確率変数を、小文字はその実現値を指しています。 k:時点を表す添字(k = 0, 1, ..., K) Ak:時点kにおける二値である時間依存性治療(1: あり, 0: なし) A0:k

Analytics
SAS Viya環境のシングルサインオン設定方法(SAML編) 第2部 - 認証と認可の実装

背景 シングルサインオンのログイン方式(以下はSSO)は、多くのクラウドサービスの中で主流のログイン方法として、多くの利点があります。例えば、パスワードの使用が減少することで、セキュリティリスクを低下させることや一度のログインで複数のサービスやアプリケーションにアクセスできることによる、ユーザビリティの向上等です。 前回の記事(SAS Viya環境のシングルサインオン設定方法(SAML編) 第1部 - 基礎と準備)では、Azure ADとの連携でSSOを実現するための基礎概念と準備作業を紹介しました。本記事の第二部では、SAS Viyaのユーザーが運用や作業を行う際の参考となるよう、Azure ADとの連携でSSOを実現するための設定方法を下記のドキュメントの内容を基に整理することを目的としています。実際の設定を行う際は、常に最新バージョンのドキュメントを参照することをお勧めします。これにより、最新の情報に基づいた適切な手順で作業を進めることができます。 SAS Viyaドキュメント:SCIMの設定方法 SAS Viyaドキュメント:認証の設定方法 以下は本記事内容の一覧です。読者は以下のリンクで興味のあるセクションに直接ジャンプすることができます。 1.Microsoft Entra IDの作成 2.SCIM認可管理の設定 3.SAML認証の設定 1. Microsoft Entra IDの作成 1-1. 構築済みのSAS Viya環境とAzureのActive Directoryを連携するには、Azure側でAD Enterprise Appとアプリの管理者権限が必要です。 Azureポータル上で、「Microsoft Entra ID」と検索し、サービスを選択します。そして、左側メニューから「エンタープライズ アプリケーション」をクリックすると、既に登録したアプリの一覧画面が表示されます。新しいアプリを作成するために、画面上部の「新しいアプリケーション」ボタンをクリックします。その後に表示された画面の左上の「+独自のアプリケーションの作成」をクリックします。 1-2. アプリケーションの作成画面で、アプリの名前を設定し、「ギャラリーに見つからないその他のアプリケーションを統合します (非ギャラリー)」のオプションを選択し、「作成」ボタンをクリックします。 1-3. アプリの画面内で、左側の「Owners」をクリックし、アプリのオーナーが申請したユーザと一致しているかを確認します。これで、Microsoft Entra IDの作成は完了しました。 2. SCIM認可管理の設定 2-1. SAS Viyaのデフォルト認証方式はLDAPです。SSOログイン方式を利用するには、認証方式をSCIMに変更する必要があるため、まずはLDAPを無効にします。 ①sasbootユーザでSAS Viyaの環境管理画面にログインし、「Configuration」画面で「identities service」を検索し、右側の画面内の「spring」の編集ボタンをクリックします。 ②「profiles.active」からidentities-ldapを削除し、「Save」ボタンをクリックします。 ③右上の「New

Analytics
SAS Viya環境のシングルサインオン設定方法(SAML編) 第1部 - 基礎と準備

背景 シングルサインオンのログイン方式(以下はSSO)は、多くのクラウドサービスの中で主流のログイン方法として、多くの利点があります。例えば、パスワードの使用が減少することで、セキュリティリスクを低下させることや一度のログインで複数のサービスやアプリケーションにアクセスできることによる、ユーザビリティの向上等です。 SAS Viyaはクラウドネイティブアーキテクチャを採用したデータプラットフォームであり、様々な認証プロバイダーとSAMLやOIDCなどの接続方式を通じてSSOを実現し、ユーザーに高いセキュリティと利便性を提供することができます。 本記事の第1部では、SAS ViyaのユーザーがSAS Viya環境とAzure ADを連携させるためのSSOログイン方式を設定する際の基礎知識と初期準備に焦点を当てています。 以下は本記事内容の一覧です。読者は以下のリンクで興味のあるセクションに直接ジャンプすることができます。 1. SAS Viyaでの認可と認証 2. 作業の準備 3. 証明書のインストール 1. SAS Viyaでの認可と認証 SAS ViyaでのSSOログインは主にSCIM認可とSAML認証により実現されますが、この二つの概念についてまず簡単に紹介します。 1-1 SCIM認可とは SCIM(System for Cross-domain Identity Management)は、異なるシステム間でユーザー情報の管理と同期を効率化する標準化されたプロトコルです。SCIMを利用すると、ユーザーアカウントの作成や更新、削除を自動化できます。SAS ViyaとAzure ADの連携では、SCIMを使ってAzure ADのユーザー情報をSAS Viyaに同期し、管理作業を効率化します。 SAS ViyaでSCIM認可を利用するには以下のいくつかの注意点があります。 ・外部DNS名の要件: SAS Viyaでは公開インターネットで解決できる外部DNS名が必要です。SCIMクライアント(Azure AD)は、このDNS名を通じてSAS Viyaにアクセスします。 ・HTTPSを利用したセキュアな接続: SCIMクライアントは、HTTPSを通じてSAS ViyaのIdentitiesマイクロサービスに安全に接続する必要があります。 ・信頼できる証明書: SCIMサーバーの証明書は、Azure ADがサポートする商用証明機関から購入されるべきです。サポートされる証明機関にはCNNIC、Comodo、CyberTrust、DigiCertなどが含まれます。 ・ファイアウォール設定: SAS Viya環境へのアクセスを許可するため、適切なファイアウォールルールの設定が必要です。 1-2 SAML認証とは

Analytics
SAS Hackathon 2023 / チームSunny Compass参加報告

本記事では、Sunny Compass - analysis and suggestion of life satisfactionについて、チームメンバーに直接お話を聞き、背後にある思いやチャレンジなどについて解き明かします。 ユニークなチーム結成 チームSunny Compassは経済産業省主催のDX人材育成プログラム「マナビDX Quest 2022」(以下、マナビDX Quest)で出会ったメンバーで構成されるシビックテック・チームだ。 勤務先や居住地もまったく異なる中、オンライン上で交流し、それぞれの強みや専門性を活かしてデータとテクノロジーを使った課題解決に取り組んでいる。   SAS Hackathon 2023 参加の背景 SAS Hackathonが開催されるという話を聞き、どのようなテーマで取り組むかメンバー全員で話し合った。彼らにとって今回が初めての「ハッカソン」参加となったが、「人生の明るい方向を示す羅針盤になる」という想いをチーム名に込めたチームSunny Compassにとって、人々のウェルビーイングの向上を助ける取り組みをすることはメンバー全員が一致するところだった。データは自前で用意する必要があったため、内閣府の生活満足度調査データを使うことにした。 生活満足度調査の分析結果を可視化するモバイルアプリの開発をゴールに設定しました。ユーザーがアプリ上で性別、年齢、そして生活満足度を入力すると、自分が生活満足度の観点でどのくらいの位置にあるのかが分かり、どのような項目・活動に気を配ると更に生活満足度を向上させ得るのか、という改善に向けたヒントを得られる、というものです。   生活満足度調査データを使用するためには、内閣府に書面申請をする必要があった。書類審査に1週間程度要したが、市民に有益なアプリ開発のために利用するという点が評価され、無事データの提供を受けることができた。   ハッカソンに取り組む上で直面した様々な課題   初めての経験 最大の課題は、メンバー全員がハッカソンと呼ばれるイベントに参加するのは初めてであり、ハッカソンではどのようなことをすれば良いのか全く想像がついていなかったという点だった。また、メンバー全員がSAS製品を使ったことがなかったこと、モバイルアプリの開発も初めてだったこと、などがその他の課題として挙げられた。 完全リモートでのコミュニケーション メンバー全員が対面での面識が全くないところからのスタートだった。そのためグループチャットツールで頻繁に集まり、会話ベースで進捗やタスクを確認し合った。プロジェクトマネジメントの観点でタスクの洗い出しをして割り振るなどということよりも、口頭・テキスト問わずコミュニケーションを密に行って、動ける人が動く、全員が各自今抱えている問題について理解し助け合う、励ます、ということを重視した。 マナビDX Questの経験から、メンバー同士助け合うことが何よりも重要ということを全員が理解していたのと、メンバーごとに関連技術の知見・経験が少しずつあって、それを随所随所でうまく活かしたり、メンターの人が付いてくれて質問などに対応してくれたので何とかなりました。 具体的な取り組み内容 オープンデータを活用 内閣府による生活満足度調査のデータには、個人からの回答に基づき、様々な変数とともに、生活満足度が数値で表現されている。満足度が高いほど値が大きくなる。全体的に欠損値が多数含まれていたため前処理が必要だった。 これとは別にe-Statから取得した「都道府県・市区町村のすがた(社会・人口統計体系)」というデータも使用した。こちらには都道府県ごとの人口、世帯数、ヘルスケア関連情報、などが入っている。   モバイルアプリ メインのモバイルアプリの開発では、「どのような項目・活動が生活満足度の向上に役立つのか」という問いに答えられるよう、生活満足度を目的変数とした機械学習モデルを作成した。この機械学習モデルには変数ごとに変数重要度を出力できるタイプのものを採用し、最終的に変数重要度が高い順に上位5つまでの変数(重要変数)を取り出した。これらの重要変数をREST API経由でモバイルアプリから読みに行くという仕組みを作った。 SAS ViyaはREST APIに標準対応しているのでこういった仕組みづくりも無理なく進められました。 モバイルアプリ自体はオープンソースライブラリを利用して開発した。アプリの想定利用ユーザーは個人ということにした。ユーザーがアプリ上で性別、年齢、そして生活満足度を入力すると、類似の属性を持つ人の中で自分が生活満足度の観点でどのくらいの位置にあるのか、ということが可視化され、加えてどのような項目・活動に気を配ると更に生活満足度を向上させ得るのか、という改善に向けたヒントを取得できるようにした。 可視化ダッシュボード 次に可視化ダッシュボードの作成では、想定利用ユーザーを国や自治体の政策立案担当者とし、個人単位ではなくマクロ的な視点でデータを深堀りするための分析ツールというコンセプトに基づいて開発を進めた。モバイルアプリと同じ生活満足度調査データを使っているが、こちらは都道府県ごとに集計し直し、更に都道府県別の統計情報を加味するため、e-Statのデータと結合させたうえで利用した。

1 2 3 4 5 6 57