131 Views
April 21, 25
スライド概要
SASによる単群製造販売後調査におけるベイズ流解析 張 方紅
DATASETS Procedureを利用したADaM Data Structureなどメタデータの管理と導出 中尾 親彰
Graph Template Languageを用いた医学研究におけるグラフデザインの応用 日髙 優
カプランマイヤープロット描画におけるスタイル要素の変更マクロ 堀 隆正
疑似尤度法(Quasi-Likelihood)を用いた分布を仮定しない線形モデルの解析方法の紹介 森岡 千早,菊池 宏和
%if-%then-%doのオープンコードでの記述などSASマクロ周りの9.4以降の改訂点について 森岡 裕
proc spellによるスペルチェック 森岡 裕
XMLMapを利用したSASデータセットのXMLファイルへのエクスポートについて 望戸 遼
SASグラフにおける色相•彩度•明度に基づく色設定 斎藤 和宏,後藤 義雄
疫学研究でよく用いるプロシジャの使い方の紹介(PROC STDRATE, PROC PSMATCH) 矢田 徹
ODS OUTPUT入門 松沢 享
SASで始めよう被験者数再計算を伴う生物学的同等性試験 森田 祐介,浜田 泉
臨床開発及び市販後を通じた一貫した安全性評価のためのシステム構築 荒木 芳規,松浦 潤治,宮田 裕介,齊藤 康一,中島 章博
JMPスクリプト言語(JSL)を用いた非臨床用途の各種JMPアドイン開発 福島 慎二,佐藤 拓哉,前田 敦
臨床試験のデータハンドリングとSQLプロシジャ 田中 真史
SAS Viyaではじめるニューラルネットワーク 矢田 真城,魚住 龍史
SAS Viyaではじめるガウス過程回帰 矢田 真城,魚住 龍史
SASから始めるRPA ~SASからtsClinical Metadata Desktop Toolsを操る~ 関根 暁史
中間解析を伴う生物学的同等性試験のデザイン検討 橋本 隆正,舟尾 暢男
RMSTの概要とSASでの実装について 中川 雄貴
各種のダミー変数を用いた最小2乗平均と95%信頼区間の実際 高橋 行雄
Prioritized Outcome Approachを適用した重み付きWin ratioの性能評価 寺本 明日香,上村 鋼平
比例ハザード性が成立しない生存時間データにおけるペアワイズ比較 坂巻 顕太郎
複合エンドポイントに基づくアダプティブ•デザイン 上村 鋼平
クリニカル•データ•サイエンス分野におけるOSSの可能性と今後の展望 秋谷 一平
OST use in regulatory submission 中嶋 優一
SASプログラマから見たOSS 田中 真史,森岡 裕
SASプラットフォームにおけるOSS活用 竹村 尚大
故•大橋靖雄氏とSASの出会い 高橋 行雄
僕はね、サイエンスがしたいだけなんだよ ー大橋靖雄が目指したものー 岸本 淳司
高齢者単身世帯における消費行動 十嵐 純一,田中 祐輔,西谷 浩
統計•データサイエンスが目指すもの、忘れてはならないもの 岩﨑 学
SAS言語を中心として,解析業務担当者・プログラマなのコミュニティを活性化したいです
論文集 実施方法:オンライン 会期 :2021年11月18日(木)・19日(金)・20日(土)
目次 生物統計・医薬関連 SASによる単群製造販売後調査におけるベイズ流解析 2 張 方紅(ノバルティスファーマ株式会社) DATASETS Procedureを利用したADaM Data Structureなどメタデータの管理と導出 10 中尾 親彰(Pinnacle 21 日本合同会社) Graph Template Languageを用いた医学研究におけるグラフデザインの応用 13 日髙 優、魚住 龍史(京都大学大学院、京都大学医学部付属病院)、堀 隆正(京都大学医学部附属病院) カプランマイヤープロット描画におけるスタイル要素の変更マクロ 14 堀 隆正(京都大学医学部附属病院)、日髙 優、魚住 龍史(京都大学医学部付属病院、京都大学大学院) 疑似尤度法(Quasi-Likelihood)を用いた分布を仮定しない線形モデルの解析方法の紹介 15 森岡 千早、菊池 宏和(シミック株式会社) 【SASシステム】 SASシステム %if-%then-%doのオープンコードでの記述などSASマクロ周りの9.4以降の改訂点について 17 森岡 裕(イーピーエス株式会社) proc spellによるスペルチェック 森岡 裕(イーピーエス株式会社) 25 XMLMapを利用したSASデータセットのXMLファイルへのエクスポートについて 26 望戸 遼(参天製薬株式会社) SASグラフにおける色相・彩度・明度に基づく色設定 27 斎藤 和宏、後藤 義雄(株式会社タクミインフォメーションテクノロジー) 疫学研究でよく用いるプロシジャの使い方の紹介(PROC STDRATE, PROC PSMATCH) 28 矢田 徹(イーピーエス株式会社) ODS OUTPUT入門 29 松沢 享(株式会社インターサイエンティフィックリサーチ) 【生物統計・医薬関連/SASシステム】 生物統計・医薬関連/SASシステム SASで始めよう被験者数再計算を伴う生物学的同等性試験 31 森田 祐介、浜田 泉(ノーベルファーマ株式会社) 臨床開発及び市販後を通じた一貫した安全性評価のためのシステム構築 45 荒木 芳規、松浦 潤治、宮田 裕介、齊藤 康一、中島 章博(帝人ファーマ株式会社) 芦沢 宏治(株式会社タクミインフォメーションテクノロジー) JMPスクリプト言語(JSL)を用いた非臨床用途の各種JMPアドイン開発 46 福島 慎二、佐藤 拓哉、前田 敦(株式会社タクミインフォメーションテクノロジー) 【SASシステム/SAS・JMP教育】 SASシステム/SAS・JMP教育 臨床試験のデータハンドリングとSQLプロシジャ 48 田中 真史(イーピーエス株式会社) 【人工知能・AI】 SAS Viyaではじめるニューラルネットワーク 人工知能・AI 58 矢田 真城、魚住 龍史(京都大学大学院) SAS Viyaではじめるガウス過程回帰 矢田 真城、魚住 龍史(京都大学大学院) 72
SASから始めるRPA ~SASからtsClinical Metadata Desktop Toolsを操る~ 85 関根 暁史(藤本製薬株式会社) 【統計理論/生物統計・医薬関連】 統計理論/生物統計・医薬関連 中間解析を伴う生物学的同等性試験のデザイン検討 97 橋本 隆正、舟尾 暢男(武田薬品工業株式会社) RMSTの概要とSASでの実装について 112 中川 雄貴(イーピーエス株式会社) 【統計理論/SAS・JMP教育】 統計理論/SAS・JMP教育 各種のダミー変数を用いた最小2乗平均と95%信頼区間の実際 123 高橋 行雄(BioStat研究所株式会社) 【企画セッション】 企画セッション 〈Pairwise comparisonと複合エンドポイントの解析〉 Prioritized Outcome Approachを適用した重み付きWin ratioの性能評価 134 寺本 明日香、上村 鋼平(東京大学大学院)、坂巻 顕太郎(横浜市立大学データサイエンス推進センター) 比例ハザード性が成立しない生存時間データにおけるペアワイズ比較 151 坂巻 顕太郎(横浜市立大学データサイエンス推進センター) 複合エンドポイントに基づくアダプティブ・デザイン 162 上村 鋼平(東京大学大学院) 〈製薬業界におけるオープンソースソフトウェア(OSS)の可能性〉 クリニカル・データ・サイエンス分野におけるOSSの可能性と今後の展望 175 秋谷 一平(エイツーヘルスケア株式会社) OST use in regulatory submission 194 中嶋 優一(ノバルティス ファーマ株式会社) SASプログラマから見たOSS 205 田中 真史、森岡 裕(イーピーエス株式会社) SASプラットフォームにおけるOSS活用 218 竹村 尚大(SAS Institute Japan 株式会社) 【特別セッション】 特別セッション 故・大橋靖雄氏とSASの出会い 225 高橋 行雄(BioStat研究所株式会社) 僕はね、サイエンスがしたいだけなんだよ ー大橋靖雄が目指したものー 239 岸本 淳司(九州大学) 【Let’sデータ分析】 Let’sデータ分析 高齢者単身世帯における消費行動 248 五十嵐 純一、田中 祐輔、西谷 浩子(株式会社エス・シー・エー) 【基調講演】 基調講演 統計・データサイエンスが目指すもの、忘れてはならないもの 岩﨑 学(統計数理研究所) 269
生物統計 ・ 医薬関連 1
SASによる単群製造販売後調査におけるベイズ流解析 ○張 方紅 (ノバルティスファーマ株式会社 生物統計部) Bayesian Analysis for Single Arm Post Marketing Study Using SAS Fanghong Zhang Integrated Biostatistics Japan Department, Novartis Pharma K.K 要旨 頻度論を利用することが長年の慣習となっている日本の製造販売後調査(PMS)において,最近,ベイズ流 接近法の利用が検討され始めている(張・他,2021) .ベイズ流解析は理論上単純明快であるが,計算上の複 雑さが普及の防げとなることがよくある.近年,強力な機能を有する MCMC プロシジャがリリースされたこ とで,複雑なベイズ流解析の多くが簡単に実行可能となった.ベイズ流デザインでは,事前分布の設定,症 例数の設計と動作特性を検討する必要がある.ここでは,既存の臨床試験データを利用して関心のある事象 の発現割合の分布を予測することで MAP prior (Schmidli et. al. 2014)という事前分布を導出する.MCMC プロ シジャにて MAP prior を抽出する方法を解説したうえ,SAS による症例数の設計とデザインの動作特性の検 討を行う.また,PMS のデータが得られたあとのベイズ解析を MCMC プロシジャを用いて行う. キーワード:PMS, リサーチ・クエスチョン,ヒストリカルデータ,MAP prior, MCMC プロシジャ 1. はじめに 2013 年 4 月に医薬品リスク管理計画(RMP: Risk Management Plan)が法制化され(厚生労働省医薬食品局審査 管理課長・安全対策課長, 2012),安全性検討事項(Safety Specification),安全性監視計画,リスク最小化計画 を策定し,医薬品の承認申請時に提出することが義務づけられた.それに続き,2018 年 4 月に GPSP 省令 (Good Post-marketing Study Practice) が改正されたことで,より科学的なアプローチに基づいた製販後調査の 実施が求められるようになった.製造販売後に明らかにすべき懸念事項があり,追加の安全性監視が必要と 判断された場合,リサーチ・クエスチョン(Research Question)を設定し,使用成績調査,製造販売後データ ベース調査(以下、データベース調査),または製造販売後臨床試験のいずれかを行う. 改正 GPSP 施行後,データベース調査を含む新しい製販後調査や科学的なアプローチは企業に徐々に浸透し ている.一方,現状としては製販後調査では依然として使用成績調査が全体の 60%以上を占めている.ま 2
た症例数設計では統計学的根拠は記載されているものの,多くは Rule of three という従来の製販後調査で汎 用されている統計学的考え方が踏襲されている(高橋他,2020).それに対して,張・柿爪・青木(2021)は, 確率的な方法を用いてリサーチ・クエスチョンを設定し,事後確率を用いてリスクの大きさを定量化する, というベイズ流デザインを提案した.ベイズ流デザインを実際に PMS に適用するには多くの課題がある が,その中でもとりわけ,計算上の複雑さが普及の防げとなることがよくある.そこで,本稿では,張・柿 爪・青木(2021)が提案したベイズ流デザインについて,計算方法に焦点をあて解説し,SAS による実装を行 う. 2. ベイズ流デザイン 2.1 ヒストリカルデータ ここで,以下の仮想例を考える.医薬品 D は,RMP において,複数の安全性検討事項が特定された.その 中,事項 A に関連する事象に対してリスク評価することとした. PMS を計画するとき,事項 A に関連す る事象について,以下の複数の臨床試験のデータ(ヒストリカルデータ)が存在するとする. 表 1: 治験薬群における事項 A に関連する事象の発現状況 試験番号 発現例数 症例数 1 15 158 2 18 38 3 5 15 また,対照群においては,事項 A に関連する事象の発現割合は 0.09 と仮定する. 2.2 ベイズ流接近法 使用実態下で医薬品 D を投与した際の安全性を評価することを目的とする単群 PMS を計画する.その PMS において,𝑛𝑛人中𝑥𝑥人で関心のある事象が観察されたとする.ここで,𝑥𝑥は二項分布𝐵𝐵𝐵𝐵𝐵𝐵(𝑛𝑛, 𝜋𝜋)に従うとする. ただし,𝜋𝜋はその事象の発現割合である.ベイズ流接近法では,𝜋𝜋は確率変数とみなされ,ここではベータ 分布𝐵𝐵𝐵𝐵𝐵𝐵𝐵𝐵(𝑎𝑎, 𝑏𝑏)に従うとする.𝐵𝐵𝐵𝐵𝐵𝐵𝐵𝐵(𝑎𝑎, 𝑏𝑏)を事前分布,(𝑎𝑎, 𝑏𝑏)を超パラメータ(hyper parameter)と呼ぶ.ベイズ の定理を利用することにより,(𝑛𝑛, 𝑥𝑥)が得られた下での𝜋𝜋の事後分布は𝐵𝐵𝐵𝐵𝐵𝐵𝐵𝐵(𝑥𝑥 + 𝑎𝑎, 𝑛𝑛 − 𝑥𝑥 + 𝑏𝑏)に更新される. 本稿では 関心のある事象の発現割合が閾値より大きくなる確率はどのくらいか? というリサーチ・クエスチョンを設定する.研究仮説を「事象の発現割合𝜋𝜋が閾値発現割合𝜋𝜋0 (0 ≤ 𝜋𝜋0 ≤ 1) より高い」としたとき,事後確率𝑃𝑃(𝜋𝜋 > 𝜋𝜋0 |𝑛𝑛, 𝑥𝑥)を用いて研究仮説の確信度を評価する.基準 (1) 𝑃𝑃(𝜋𝜋 > 𝜋𝜋0 |𝑛𝑛, 𝑥𝑥) ≥ 𝜂𝜂 を満たす場合,100𝜂𝜂%以上の確信度で「本薬における当該事象の発現割合が閾値𝜋𝜋0 を超える」と解釈でき, これを意思決定のサポートツールの一つとして利用することは可能と考える.ただし,𝜂𝜂は事前に設定した 目安となる閾値を超える閾値確率であり,0.50~0.95 の範囲となる.また,閾値発現割合は,対照群におけ る当該事象の発現割合𝜋𝜋c と正の常数𝛿𝛿から得られる:𝜋𝜋0 = 𝜋𝜋c + 𝛿𝛿,0 ≤ 𝛿𝛿 < 1.「医薬品 D を投与した患者に 3
おける事項 A に関連する事象の発現割合が対照群より100 ∗ 𝛿𝛿%高い」という研究仮説を検討することとな る. 2.3 症例数設計 一つの共役ベータ分布𝐵𝐵𝐵𝐵𝐵𝐵𝐵𝐵(𝑎𝑎, 𝑏𝑏):事後確率𝑝𝑝(𝜋𝜋 > 𝜋𝜋0 |𝑛𝑛, 𝑥𝑥)は事後𝐵𝐵𝐵𝐵𝐵𝐵𝐵𝐵(𝑥𝑥 + 𝑎𝑎, 𝑛𝑛 − 𝑥𝑥 + 𝑏𝑏)分布を用いて計算す るが,そのためには PMS の結果(𝑛𝑛, 𝑥𝑥)が必要となる.しかしながら,PMS をデザインする段階ではまだデー タが得られていないため,PMS の結果を想定して事後確率を計算する方法が提案された(Tan and Machin, 2002).仮に関心のある事象の発現割合が閾値発現割合𝜋𝜋0 より εだけ高い(𝜋𝜋 = 𝜋𝜋0 + 𝜀𝜀)とする.症例数𝑛𝑛の下 で,想定した発現割合𝜋𝜋0 + 𝜀𝜀で算出した発現例数𝑥𝑥0 (𝑛𝑛) = (𝜋𝜋0 + 𝜀𝜀)𝑛𝑛が観察された場合に基準(1)を満たす,即 ち (2) min{𝑛𝑛|𝑃𝑃(𝜋𝜋 > 𝜋𝜋0 |𝑛𝑛, 𝑥𝑥0 (𝑛𝑛)) ≥ 𝜂𝜂} を満たす最小の𝑛𝑛を必要症例数とする.具体的には,事前に定めた最小の症例数𝑛𝑛 = 𝑛𝑛0 から(2)を満たすまで 𝑛𝑛を 1 ずつ増やすことで必要症例数を算出することができる. 複数の共役ベータ分布の混合分布:複数の既存の臨床試験データを用いて導出された共役ベータ分布の混合 分布 𝐾𝐾 𝐾𝐾 𝑘𝑘=1 𝑘𝑘=1 � Δ𝑘𝑘 𝐵𝐵𝐵𝐵𝐵𝐵𝐵𝐵(𝜋𝜋|𝑎𝑎𝑘𝑘 , 𝑏𝑏𝑘𝑘 ) , � Δ𝑘𝑘 = 1 もまた事前分布に利用することができる.このとき,事後分布 𝐾𝐾 � 𝑘𝑘=1 𝑤𝑤𝑘𝑘 𝐵𝐵𝐵𝐵𝐵𝐵𝐵𝐵(𝜋𝜋|𝑥𝑥 + 𝑎𝑎𝑘𝑘 , 𝑛𝑛 − 𝑥𝑥 + 𝑏𝑏𝑘𝑘 ) ∑𝐾𝐾 𝑘𝑘=1 𝑤𝑤𝑘𝑘 が得られる.ただし,Δ𝑘𝑘 は各事前情報に対する重みであり,𝑤𝑤𝑘𝑘 = Δ𝑘𝑘 𝐵𝐵(𝑥𝑥 + 𝑎𝑎𝑘𝑘 , 𝑛𝑛 − 𝑥𝑥 + 𝑏𝑏𝑘𝑘 )/𝐵𝐵(𝑎𝑎𝑘𝑘 , 𝑏𝑏𝑘𝑘 )とな る.ここで,𝐵𝐵はベータ関数とする. 事後分布の累積分布関数は以下となる. 𝐾𝐾 � 𝑘𝑘=1 𝑤𝑤𝑘𝑘 𝐹𝐹(𝜋𝜋|𝑥𝑥 + 𝑎𝑎𝑘𝑘 , 𝑛𝑛 − 𝑥𝑥 + 𝑏𝑏𝑘𝑘 ) ∑𝐾𝐾 𝑘𝑘=1 𝑤𝑤𝑘𝑘 ただし,𝐹𝐹(𝜋𝜋|𝑥𝑥 + 𝑎𝑎𝑘𝑘 , 𝑛𝑛 − 𝑥𝑥 + 𝑏𝑏𝑘𝑘 )はベータ分布𝐵𝐵𝐵𝐵𝐵𝐵𝐵𝐵(𝜋𝜋|𝑥𝑥 + 𝑎𝑎𝑘𝑘 , 𝑛𝑛 − 𝑥𝑥 + 𝑏𝑏𝑘𝑘 )の累積分布関数と表す.よって, 症例数を計算できる(Gajewski and Mayo, 2006). 2.4 事前分布の導出 2.4.1 MAP prior ベイズ流接近法を利用するためには,事前分布を設定する必要がある.PMS 計画時点には,ヒストリカル データとして臨床試験結果が利用可能である.ヒストリカルデータから事前情報を導出する方法として, Meta Analytic Predictive (MAP)アプローチが挙げられる(Neuenschwander et al., 2009, 武田他,2015).ここで, その導出方法について簡単に説明する.𝑖𝑖番の臨床試験において,𝑛𝑛𝑖𝑖 人中𝑥𝑥𝑖𝑖 人で関心のある事象が観察された とする.まず,以下のような階層ベイズモデルを用いてメタアナリシス(Meta Analysis)を行う. 𝑥𝑥𝑖𝑖 ~𝐵𝐵𝐵𝐵𝐵𝐵(𝑛𝑛𝑖𝑖 , 𝜋𝜋𝑖𝑖 ), (Level1: Likelihood) 𝜋𝜋𝑖𝑖 = 𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙(𝜇𝜇 + 𝛾𝛾𝑖𝑖 ), (Transformed parameter) 𝛾𝛾𝑖𝑖 ~𝑁𝑁(0, 𝑠𝑠 2 ), (Level2: Random effects) 𝜇𝜇~𝑁𝑁(0, 106 ), 𝑠𝑠~ℎ𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎(0, 106 ), (Level3: Prior) 𝑖𝑖 = 1, ⋯ , 𝐻𝐻 4
ただし,𝑠𝑠~ℎ𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎(0, 106 )は正の値しかとらない切断正規分布である.メタアナリシスを行った結果,超パ ラメータ(𝜇𝜇, 𝑠𝑠)の事後分布𝑝𝑝(𝜇𝜇, 𝑠𝑠|𝑥𝑥)が得られる.上の階層ベイズモデルにおいて,ランダム効果𝛾𝛾𝑖𝑖 ~𝑁𝑁(0, 𝑠𝑠 2 )か ら,𝜋𝜋𝑖𝑖 に対するパラメータの変換に注意すると, が得られる.ただし,𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙(𝜋𝜋𝑖𝑖 ) = log � 𝜋𝜋𝑖𝑖 1−𝜋𝜋𝑖𝑖 𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙(𝜋𝜋𝑖𝑖 )~𝑁𝑁(𝜇𝜇, 𝑠𝑠 2 ) �, 𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙(𝜇𝜇 + 𝛾𝛾𝑖𝑖 ) = exp(𝜇𝜇+𝛾𝛾𝑖𝑖 ) である.計画中の PMS における関 1+exp(𝜇𝜇+𝛾𝛾𝑖𝑖 ) 心のある事象の発生率𝜋𝜋 ∗ は,ヒストリカルデータから見れば,将来のものであり,既存臨床試験と同じ分布 に従うとする. 𝜃𝜃 ∗ = 𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙(𝜋𝜋 ∗ )~𝑁𝑁(𝜇𝜇, 𝑠𝑠 2 ) メタアナリシスの結果となる事後分布𝑝𝑝(𝜇𝜇, 𝑠𝑠|𝑥𝑥)を利用し,𝜃𝜃 ∗ の従う分布において超パラメータ(𝜇𝜇, 𝑠𝑠)に関して 積分すると,𝜋𝜋の予測分布,すなわち Meta Analytic Predictive Prior (MAP Prior) 𝑝𝑝(𝜃𝜃 ∗ |𝑥𝑥) = ∫ 𝑁𝑁(𝜃𝜃 ∗ |𝜇𝜇, 𝑠𝑠 2 )𝑝𝑝(𝜇𝜇, 𝑠𝑠|𝑥𝑥)𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑 (3) が得られる.よって,関心のある事象の発現割合𝜋𝜋 ∗ のMAP prior は,パラメータ変換𝜋𝜋 ∗ = ることで得られる. 2.4.2 exp(𝜃𝜃 ∗ ) 1+exp(𝜃𝜃 ∗ ) を利用す MAP prior の近似 MAP prior の密度関数は,一般的に解析に表現できない.症例数を計算するため,複数の共役ベータ分布の 混合分布で近似する必要がある.混合分布で近似するため,EM アルゴリズムを利用する方法がある(小西 他, 2008; Schmidli et. al. 2014).また,別の方法としてはベイズ法が利用可能である.ここで,Chen (2015) が示しているベイズ法を説明する.𝜋𝜋 ∗ のMAP prior に対して,ベータ分布の混合分布であてはめるとする. 混合分布の数は AIC や DIC などで決めるが,ここでは簡単のため 2 とする.ベータ分布のパラメータ 𝑎𝑎1 , 𝑏𝑏1 , 𝑎𝑎2 , 𝑏𝑏2 と混合重み𝑝𝑝に対して,無情報事前分布となる一様事前分布を設定する. 𝜋𝜋 ∗ ~𝑝𝑝 ∙ 𝐵𝐵𝐵𝐵𝐵𝐵𝐵𝐵(𝜋𝜋 ∗ |𝑎𝑎1 , 𝑏𝑏1 ) + (1 − 𝑝𝑝) ∙ 𝐵𝐵𝐵𝐵𝐵𝐵𝐵𝐵(𝜋𝜋 ∗ |𝑎𝑎2 , 𝑏𝑏2 ) 𝑎𝑎1 , 𝑏𝑏1 , 𝑎𝑎2 , 𝑏𝑏2 ~uniform(0,1000) 𝑝𝑝~uniform(0,1) 𝜋𝜋 ∗ のMAP prior から生成した乱数を𝑦𝑦と表し,𝜋𝜋 ∗ の事後分布 𝑝𝑝(𝜋𝜋 ∗ |𝑦𝑦) = 𝑝𝑝̂ ∙ 𝐵𝐵𝐵𝐵𝐵𝐵𝐵𝐵(𝜋𝜋 ∗ |𝑎𝑎�1 , 𝑏𝑏�1 ) + (1 − 𝑝𝑝̂ ) ∙ 𝐵𝐵𝐵𝐵𝐵𝐵𝐵𝐵(𝜋𝜋 ∗ |𝑎𝑎�2 , 𝑏𝑏�2 ) を利用して,MAP prior を近似する.ただし,𝑝𝑝̂ , 𝑎𝑎�1 , 𝑏𝑏�1 , 𝑎𝑎�2 , 𝑏𝑏�2 はそれぞれのパラメータの事後平均である. 2.5 動作特性 本節では,ベイズ流デザインの性能を評価する方法を検討する.前節の方法で症例数𝑛𝑛が計算されたとす る.また,𝑢𝑢は𝑢𝑢 ≥ 𝑛𝑛(𝜋𝜋0 + 𝜀𝜀)を満たす最小の整数とし,ここでは境界例数と呼ぶ.症例数と境界例数のペア (𝑛𝑛, 𝑢𝑢)は一つのデザインとして決定される.𝑛𝑛例中𝑢𝑢例以上の発現例数が観察された場合,基準(1)が満たされ る.デザイン(𝑛𝑛, 𝑢𝑢)の決定後,様々な真の発現割合を想定した時のデザインの性能を評価する必要がある. 関心のある事象の発現割合をある値𝜋𝜋𝐸𝐸 に固定したとき得られる仮想的なデータを用いて算出される基準(1) を満たす確率を頻度論の動作特性(Operating Characteristics)と捉えることができる(Thall and Simon, 1994).関 心のある値,例えば,閾値発現割合(𝜋𝜋0 ),閾値発現割合より高い値(𝜋𝜋0 + 2𝜀𝜀),または閾値発現割合より低い 値(𝜋𝜋0 − 𝜀𝜀)における動作特性を確認するのは試験デザインを評価する上で重要である. 5
算出された症例数𝑛𝑛と固定した(真の)発現割合𝜋𝜋𝐸𝐸 の下で,事象の発現例数𝑋𝑋は二項分布𝐵𝐵𝐵𝐵𝐵𝐵(𝑛𝑛, 𝜋𝜋𝐸𝐸 )に従う.基 準(1)が満たされる確率は以下の式で解析的に算出することができる. 𝑛𝑛 OC(𝑛𝑛, 𝑢𝑢, 𝜋𝜋𝐸𝐸 ) = 𝑃𝑃(𝑋𝑋 ≥ 𝑢𝑢|𝑛𝑛, 𝜋𝜋𝐸𝐸 ) = ∑𝑛𝑛𝑖𝑖=𝑢𝑢 � � 𝜋𝜋𝐸𝐸𝑖𝑖 (1 − 𝜋𝜋𝐸𝐸 )𝑛𝑛−𝑖𝑖 𝑖𝑖 (4) 3. SAS による実装 本節では,2.1 節の仮想例を利用して,MAP prior の導出及び近似の SAS プログラム及び出力を示す.ここ で,対照群における関心のある事象の発現割合 0.09 を閾値発現割合とし,閾値確率η = 0.9と設定する.2.2 節で述べたベイズ流接近法の式(1)は以下になる. 𝑃𝑃(𝜋𝜋 > 0.9|𝑛𝑛, 𝑥𝑥) ≥ 0.9 ベイズ流接近法を仮想例に適用し,必要な症例数及び動作特性の計算結果を与える. 3.1 MAP prior の導出 MAP prior は,R Package “RBest”(R Bayesian Evidence Synthesis Tools),または,MCMC プロシジャを用いる ことで導出できる(Chen, 2015).ここでは,MCMC プロシジャ用いて導出する方法を示す. SAS プログラム 1 は,2.1 節のヒストリカルデータに対して SAS データセット trials を作成する.変数 study は試験番号を表し,変数 x, n は,それぞれ,関心のある事象の発現例数とその試験にある総例数を表してい る. SAS プログラム 1:データセットの作成 data trials; input study x n; datalines; 1 15 158 2 18 40 3 5 25 ; run; SAS プログラム 2 は,2.4.1 節に示している MAP prior を導出するため,メタアナリシスを行い,階層ベイズ モデルにおいて,PMS における関心のある事象の発生率𝜋𝜋 ∗ の予測分布を計算するプログラムである.SAS プ ログラム 1 にて作成したデータセット TRIALS にある事象の発現例数を表す変数 x と総例症例数を表す変数 n は MODEL ステートメントで利用され,データの尤度関数を指定している.変数 STUDY は,RANDOM ス テートメントのオプション SUBJECT=STUDY にて利用され,試験毎のランダム効果の従う分布𝛾𝛾𝑖𝑖 ~𝑁𝑁(0, 𝑠𝑠 2 )を 記述している.PRIOR THETA_STAR にて𝜃𝜃 ∗ = 𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙𝑙(𝜋𝜋 ∗ )~𝑁𝑁(𝜇𝜇, 𝑠𝑠 2 )を記述し,𝜃𝜃 ∗ の予測分布(3)を計算する.プ ログラム 1 最後部の p_star = logistic(theta_star)は,logistic 関数を使用してパラメータ𝜃𝜃 ∗ から𝜋𝜋 ∗ の予測分 布を計算している.MONITOR ステートメントにて𝜋𝜋 ∗ の予測分布を出力し,データセット Method に格納して いる. 6
SAS プログラム 2:MAP prior の導出 proc mcmc data=trials nbi=5000 nmc=100000 thin=10 outpost=Method stats=all seed=1 monitor=(_parms_ p_star); parms mu; parms s theta_star; prior mu ~ n(0, prec=1e-6); prior s ~ normal(0, sd=1, lower=0.00001); prior theta_star ~ normal(mu, sd=s); random gamma ~ n(0, sd=s) subject=study; pi = logistic(mu + gamma); model x ~ binomial(n, pi); beginnodata; p_star = logistic(theta_star); endnodata; run; 3.2 MAP prior の近似 SAS プログラム 3 は,2.4.2 節に示している MAP prior の近似をするため,プログラム 2 にて生成した MAP prior の乱数(出力データセット Method に格納されている)を MAP prior のデータとみなし,そのデータに 対して混合ベータ分布であてはめる.MCMC ステートメントにて,オプション DATA=Method を指定し,事 後平均𝑝𝑝̂ , 𝑎𝑎�1 , 𝑏𝑏�1 , 𝑎𝑎�2 , 𝑏𝑏�2 を計算する.MODEL ステートメントにて,GENERAL 関数を用いて LIKE=で定義した 尤度関数の対数を指定している.PDF 関数はベータ分布の密度関数を表している. SAS プログラム 3:MAP prior の近似 proc mcmc data=Method nbi=5000 nmc=100000 seed=1 nthreads=-1 propcov=quanew outpost=beta2 dic; parm a1 2 b1 40 a2 2 b2 40; parm p; prior a: b: ~ uniform(1, 1000); prior p ~ uniform(0, 1); like = p * pdf("beta", p_star, a1, b1) + (1-p) * pdf("beta", p_star, a2, b2); model p_star ~ general(log(like)); run; SAS プログラム 3 の出力から,仮想例のヒストリカルデータを用いて導出した MAP prior は 2 つのベータ分 布の混合分布, 7
で近似できる. 0.2891 ∙ 𝐵𝐵𝐵𝐵𝐵𝐵𝐵𝐵(𝜋𝜋 ∗ |1.0140, 1.5181) + 0.7109 ∙ 𝐵𝐵𝐵𝐵𝐵𝐵𝐵𝐵(𝜋𝜋 ∗ |1.4339,5.5001) (5) SAS プログラム 3 の出力 Posterior Summaries and Intervals Standard Parameter N Mean Deviation 95% HPD Interval a1 100000 1.0140 0.0187 1.0000 1.0465 b1 100000 1.5181 0.0839 1.3565 1.6859 a2 100000 1.4339 0.0532 1.3316 1.5407 b2 100000 5.5001 0.3298 4.8974 6.2046 p 100000 0.2891 0.0366 0.2172 0.3615 2.3 節で述べた症例数設計法において,ここは,ε = 0.02と設定する.混合事前ベータ分布(5)を利用して, 計算した結果,必要な最小症例数および発現例数(境界例数)は,𝑛𝑛 = 310,𝑢𝑢=35 となった.得られたデザイ ン(𝑛𝑛 = 310,𝑢𝑢=35)に対して,2.5 節で述べた動作特性(4)を検討する.ここで,真の発現割合𝜋𝜋𝐸𝐸 が 0.09(閾値 発現割合𝜋𝜋0 と一致)及び 0.13(𝜋𝜋0 + 2 ∙ 𝜀𝜀)であった場合に基準(1)を満たす確率は,それぞれ OC(310, 35, 0.09) = 7.0%及び OC(310, 35, 0.13) =78.9%であった. 4. 終わりに 本稿では,ベイズ流接近法を利用した PMS デザインについて説明し,計算方法に焦点を当てた.特に MCMC プロシジャを用いて,MAP prior の導出及びその近似方法について詳細に解説した.ベイズ流デザイ ンを利用するとき,運用上検討事項が多く存在する.その中でも事前情報の妥当性についてよく説明が求め られる.MAP Prior は,階層ベイズモデルに基づき,ヒストリカルデータから情報量を割り引いたものであ り,比較的に受け入れられやすい.強力な機能を有する MCMC プロシジャが MAP Prior の導出とその近似 を容易に行うことができ,実際にベイズ流 PMS デザインを適用する一助になると期待する. 参考文献 小西貞則, 越智義道, 大森裕浩(2008). 計算統計学の方法―ブートストラップ・EM アルゴリズム・MCMC. 朝倉商店. 厚生労働省医薬食品局安全対策課長,審査管理課長(2012). 医薬品リスク管理計画指針について. 薬食安発 0411 第 1 号,薬食審査発 0411 第 2 号. https://www.pmda.go.jp/files/000145482.pdf (accessed 2021-03-27). 8
武田健太朗, 大庭真梨, 柿爪智行, 坂巻顕太郎, 田栗正隆, 森田智視(2015). 臨床試験におけるヒストリカルコ ントロールデータの利用. 計量生物学 Vol. 36, No. 1, 25-50. 高橋法子,大竹理恵,北郷次郎,郡司良治,谷口知子,中尾智佳子,原口充宏,坂本祐一郎,可児毅(2020). 改正 GPSP 省令施行後の製造販売後調査等に係る現状調査. 薬剤疫学,25(1), 17-27. 張方紅,青木誠,柿爪智行 (2021). 製造販売後調査における単群ベイズ流デザイン. 計量生物学, accepted. Gajewski BJ and Mayo MS (2006). Bayesian sample size calculations in phase II clinical trials using a mixture of informative priors. Stat Med., 25:2554-2566. Neuenschwander, B., Branson, M. and Spiegelhalter, D. J. (2009). A note on the power prior. Statistics in Medicine 28, 3562-3566. RBest https://cran.r-project.org/web/packages/RBesT/index.html Schmidli H, Gsteiger S, Roychoudhury S, O’Hagan A, Spiegelhalter DJ, Neuenschwander B. (2014). Robust metaanalytic-predictive priors in clinical trials with historical control information. Biometrics 70:1023–1032. Tan S-B and Machin D. (2002). Bayesian two-stage designs for phase II clinical trials. Statistics in Medicine 21:1991– 2012. Thall, P. F. and Simon, R. (1994). A Bayesian approach to establishing sample size and monitoring clinical trials. Controlled Clinical Trials 15, 463-481. Chen F. (2015) Bayesian Computation Using PROC MCMC. SAS Lecture. 9 criteria for phase II
DATASETS Procedureを利用したADaM Data Structureなどメタデー タの管理と導出 ○中尾 親彰1 (1Pinnacle 21 日本合同会社) Metadata Management for CDISC ADaM using Datasets Procedure Chikaaki NAKAO Pinnacle 21 Japan GK 要旨 "Pinnacle 21 Community"では、ADaM のデータセットについてメタデータを参照せずに、プログラムで 判定した ADaM の構造"Structure"を元にデータのバリデーションを実行しています。今回は SAS プログラム を利用し、その判定方法を再現しています。 キーワード:CDISC, ADaM, Datasets Procedure 目的と対象 こ の 論 文 の 目 的 は 、 ADaM の 学 習 開 始 時 や プ ロ グ ラ ミ ン グ 終 了 後 に デ ー タ セ ッ ト を Pinnacle 21 Community(以下、P21C)を利用してバリデーションした時によくある疑問点や違和感の一部を解決するため のものです。P21C の挙動を一部 SAS プログラムで再現することで、ADaM の構造(Data Structure)に分類され るか考慮して仕様を作成することが容易になる一助になればと考えます。 CDISC ADaM 上の分類と P21 が利用する分類 最初に P21C はバリデーションを実行する時に、”define.xml”を参照して検証していますが、構造の判定 に”define.xml”の中の Data Structure/Class を利用していません。結果としてユーザが定義した構造はバリデー ションでは考慮されません。バリデーションには”define.xml”を指定する場合と、指定しない場合がありま すが、構造の判定部分については同じ動きをします。この前提で各バージョンでの構造の分類を説明してい きます。 ADaM Version 1.0*1 この版で利用できる構造は、CDISC 上は 3 種類です。” Subject Level Analysis Dataset” (ADSL)と” Basic Data Structure” (BDS)です。この 2 つに分類されていない場合は、その他の ADaM 構造 (ADaM OTHER) と一般的 には考えられることが多いです。 それに対して、P21C は 4 つの分類を利用しています。ADSL、ADAE、BDS、 10
ADaM OTHER です。ADAE とは ADaM Data Structure for Adverse Event Model*2 のことです。この 4 つの分類 に対する判定ロジックは、利用するチェックロジックのバージョン(Engine Version)によって異なります。 Engine “PMDA 1810.3”以降の構造判定ロジック ADSL と ADAE については、データセット名から判断されて構造が分類されます。BDS については下記の変 数名が 1 つでもデータセット内にある場合に BDS として判定されます。この条件に該当しないデータセット でデータセット名が”AD”から始まるデータセットは、ADaM OTHER と判定されます。 - BDS と分類される変数名: PARAMCD,PARAM,AVAL,AVALC 上記の判定ロジックを作成する場合、SAS は libname ステートメントで指定したフォルダの中にあるデータ セットのメタデータを“SASHELP.VTABLE”や”SASHELP.VCOLUMN”などの VIEW に格納していますので その機能を利用します。 Engine “PMDA 1511.6”以前の構造判定ロジック ADSL と ADAE については、データセット名から判断されて構造が分類されます。BDS については下記の変 数名が 1 つでもデータセット内にある場合に BDS として判定されます。この条件に該当しないデータセット でデータセット名が”AD”から始まるデータセットは、ADaM OTHER と判定されます。 - BDS と分類される変数名: PARAMCD,PARAM,AVAL,AVALC,ADT,ASTDT,ASTDTM,CNSR,CNSDTDSC,EVNTDESC ADaM V1.0 における構造の判定結果の留意点 ADAE はデータセット名のみで判定されていますので、もし有害事象解析するためのデータセットを複数作 成された場合は、ADAE 以外のデータは ADAE 用のチェックは実行されていません。例えば”ADAEZ”と命名 した場合は、ADAE のみでチェックされるようなチェックルールは適応されていません。他の注意点として は、 “PMDA 1511.6”や古い P21C では、BDS と分類することが判定上多すぎるので、その場合それらのエラ ー、ワーニングは False Positive となります。 ADaM Version 1.1*3 この版で利用できる構造は、CDISC 上は 4 種類です。ADSL、BDS、ADaM OTHER に加えて、Occurrence Data Structure *4(OCCDS)が利用できます。それに対して P21C は ADSL、ADAE、BDS、ADaM OTHER、OCCDS の 5種類です。 Engine “FDA 1903.1”以降の構造判定ロジック ADSL と ADAE については、データセット名から判断されて構造が分類されます。BDS については下記の変 数名が 1 つでもデータセット内にある場合に BDS として判定されます。OCCDS については下記の変数名が 1 つでもデータセット内にある場合に OCCDS として判定されます。この条件に該当しないデータセットで データセット名が”AD”から始まるデータセットは、ADaM OTHER と判定されます。 - BDS と分類される変数名: PARAMCD,PARAM,AVAL,AVALC 11
- OCCDS と分類される変数名:SUFFIX(接尾辞)が“--TRT””--TERM”に該当する変数。 ADaM V1.1 における構造の判定結果の留意点 CDISC の定義上は、ADAE は OCCDS の中の 1 つのデータセットですが、P21C でのチェックの分類上は別の ものとしてチェックしています。前述のとおり、”define.xml”内の構造は参照していませんので、その中で OCCDS に指定してある場合でも ADAE に対するチェックが実行されます。なお、このロジックが意味する ところは define.xml 上で ADAE が OCCDS と分類されることを妨げるものではありません。 構造判定ロジック以外でバリデーション結果に影響する要素 この章で紹介した構造判定ロジック以外で、バリデーション結果に影響する要素の 1 つとしてとして、P21C が参照している ADaM IG のメタデータ*があります。こちらのメタデータは拡張の余地を残したサンプルと して提供されているものですので、これ以外にも標準変数を追加することは可能です。しかし PMDA 1810.3 以前の Engine では、こういった公開されているメタデータに存在する変数に限定してチェックが実行されて いる場合があります。FDA 1903.1 以降では、xport ファイルに存在する全ての変数にチェックが実行されてい ます。 Datasets Procedure の紹介 データセットレベルに構造のメタデータを付与する。 また変数の TYPE を define.xml に沿った値に変更して、 変数レベルのメタデータとして付与する。Appendix A “sample_meta.sas”参照. 参考文献 *1: Clinical Data Interchange Standards Consortium, Inc (2009), Analysis Data Model (ADaM) Implementation Guide Version 1.0 *2: Clinical Data Interchange Standards Consortium, Inc (2012), ADaM Data Structure for Adverse Event Model *3: Clinical Data Interchange Standards Consortium, Inc (2016) , Analysis Data Model (ADaM) Implementation Guide Version 1.0 *4: Clinical Data Interchange Standards Consortium, Inc (2016) , ADaM Structure for Occurrence Data V1.0 *5: Clinical Data Interchange Standards Consortium, Inc (2017), ADaM IG 1.0 EXCEL <https://www.cdisc.org/system/files/cdisc_library_archive/ADaM-IG-1-0-excel.xls> 12
Graph Template Languageを用いた 医学研究におけるグラフデザインの応用 〇日髙 優1, 2,堀 隆正2,魚住 龍史1, 2 1 京都大学大学院医学研究科 医学統計生物情報学 2 京都大学医学部附属病院 先端医療研究開発機構 クリニカルトライアルサイエンス部 SASによるグラフ作成に用いられるStatistical Graphics (SG) プロシジャのうち,SGRENGERプロシジャ は,Graph Template Language(GTL)でカスタマイズしたテンプレートを読み込んでグラフを作成することが できる.GTLは,Output Delivery System(ODS)を拡張した高度なグラフを作成するマークアップ言語であり, GTLを用いると,SGPLOTプロシジャやSGPANELプロシジャだけでは対応不可なカスタマイズしたグラフの 作成が可能である. 複数の解析結果のグラフを結合させて1つの図として示したい場合には,SGプロシジャのSGPANELプロシ ジャやSGSCATTERプロシジャを用いると,複数のグラフを同時に描写することができる.しかし,これらの プロシジャでは,グラフの種類や軸の目盛などの設定は,すべてのグラフで統一されたものが描写されてし まう.その一方,GTLを用いると,PLOTステートメントをグラフ別に指定することでグラフの種類や軸の設 定をグラフごとに変更することができる.また,LAYOUTステートメントを組み合わせることによって,複 数のグラフを重ね合わせたグラフやテキストテーブルを入れ子にしたグラフなど,複雑なレイアウトのグラ フを作成することも可能である. 本発表では,演者らが経験した医学研究の事例に基づき,GTLによるこれらのステートメントを活用した 論文報告に用いることができるグラフの作成方法を報告する. 13
カプランマイヤープロット描画における スタイル要素の変更マクロ 〇堀 隆正1、日髙 優1, 2、魚住 龍史1, 2 1 京都大学医学部附属病院 先端医療研究開発機構 クリニカルトライアルサイエンス部 2 京都大学大学院医学研究科 医学統計生物情報学 治験総括報告書や論文に掲載されるグラフでは、描画される曲線やシンボルマークの色や形といったス タイルを変更する方法はTEMPLATEプロシージャや、Statistical Graphicsプロシージャの各ステートメント で設定するLINEATTRSオプション、MARKERATTRSオプションなど複数の方法が挙げられる[1−3]。しか し、これらの方法では、曲線やシンボルマークといった属性ごとにそれぞれのスタイル要素を変更しなけ ればならない点で手間がかかってしまう。これに対して、MODSTYLEマクロとSGPLOTプロシージャの STYLEATTRSステートメントを用いると、スタイル要素を容易に変更することが可能である。本発表では、 SGPLOTプロシージャを用いたカプランマイヤープロットの描画を題材として、MODSTYLEマクロと STYLEATTRSステートメントを活用したスタイル要素変更方法について、SASプログラムと出力結果を例 示しながら報告する。 参考文献 [1] 魚住龍史, 浜田知久馬. SG (Statistical Graphics) ProceduresによるKaplan-Meierプロットの作成. SASユーザ ー総会 論文集 2011, 185-199. [2] 高浪洋平. SGプロシジャとGTLによるグラフの作成とODS PDFによる統合解析帳票の作成 ~TQT試験に おける活用事例~. SASユーザー総会 論文集 2011, 201-219. [3] 豊泉樹一郎, 財前政美, 北西由武, 都地昭夫. ODS GRAPHICSを用いた臨床試験データの可視化への挑 戦.SASユーザー総会 論文集 2014, 307-323. 14
疑似尤度法(Quasi-Likelihood)を用いた 分布を仮定しない線形モデルの解析方法の紹介 ○森岡 千早、菊池 宏和 (シミック株式会社) 一般化線形モデルでは、事前に分布を仮定して解析する必要がある。しかし、前向きの臨床試験や研究では データを直接見る前に解析の計画を検討する必要があり、事前に分布の特定が困難な場合は決して少なくな い。 このような状況の解決方法の一つとして、疑似尤度法(Quasi-Likelihood)[1]を用いることにより、分布の仮定 なく線形モデルと同様の解析を実施することができる。この方法では分布の仮定の代わりに、観測値の期待 値と分散の関係式(分散関数)を与える必要がある。 本講演では疑似尤度法の概要の説明、分散関数を特定方法の一例の紹介および疑似尤度法による線形モデル の解析に関して、SASを用いて実装方法を紹介する。 [1] Wedderburn, R.W.M. (1974) “Quasi-Likelihood Functions, Generalized Linear Models, and the Gauss-Newton Method. Biometrika”, 61, 439-447. [2] David K. Blough, SCOTT D. RAMSEY (2000) “Using Generalized Linear Models to Assess Medical Care Costs”, Health Services and Outcomes Research Methodology 1(2), 185-202. 15
SASシステム 16
%if-%then-%doのオープンコードでの 記述などSASマクロ周りの9.4以降の改訂点について 森岡 裕 (イーピーエス株式会社) Execution of %if-%then-%do in open code and what’s new in SAS macro 9.4 Yutaka Morioka Statistics Analysis Department1, EPS Corporation 要旨 SAS9.4M5 から%macro を記述しなくても%if-%then-%do を通常のコード内で利用可能になり,プログラム制 御に革新が起きた. 例えば,データセットの存在有無によって処理を分岐させたりする場合,旧来は%macro でマクロを定義し, その中で%if-%then-%do などを利用して処理を分岐するように記述,さらにそのマクロを呼び出して実行す るという過程が必要であった.ところが 9.4M5 から,%macro でマクロを定義することなく,オープンコード 内で%if-%then-%do を直接記述可能となった.これによってコードが劇的に簡素化され,SAS プログラミン グの在り方を変えた.他にも,マクロ変数のオプションに readonly が追加されるなど,SAS マクロの分野に, 新規的な要素が多く見られたので,一部を取り上げて説明する. キーワード:%if-%then-%do, SAS マクロ, readonly 1. SAS マクロ周りの 9.3 から 9.4 への変更点 一概に評するのは難しいが,SAS9.13 以降,SAS マクロの機能は根本的には大きく変わっていない. 9.4 以降の変更点について,現時点での最新リファレンスの SAS 9.4 Macro Language: Reference, Fifth Edition の What’s New in the SAS 9.4 Macro Facility の章から,一部を抜粋したい. なお,自身の SAS 環境に設定されているバージョンについて確認する場合, proc product_status; run; product_status プロシジャを実行すれば,ログウインドウに導入プロダクトの詳細なバージョンが表示される. たとえば 9.4_M5 の場合は,SAS Base 9.4 のメンテナンスリリースが 5 という意味になるので,リファレン 17
スで,新機能を確認する際,変更点がメンテナンスリリースと対応しているかをみることができる. 2. SAS マクロ変数 2.1 マクロ変数の readonly オプション readonly オプションが %local および%global に追加された. %macro test; %local/readonly local_ro=1; %let local_ro=2; %mend; %test %local および%global ステートメントにスラッシュ「/」をつけて readonly と指定し,その後に設定したい任 意のマクロ変数名 = 値 という構文で,読み取り専用のマクロ変数を指定することできるようになった. Readonly を設定した場合,値の上書き・再定義・削除が不可能となる. %global/readonly global_ro=1; %symdel global_ro; SAS マクロ変数のスコープは,もともと少し複雑な面がある.開発が多人数で大規模になった場合や,別の プロジェクトのマクロを転用した場合にマクロ変数の命名がバッティングしてしまうといったインシデント は,実際のプログラム開発現場で,ままみられることであり,練度が低いとデバッグ作業も難易度が高い. readonly オプションを利用することで,そういったバッティングに早期に気づくことができ,上書きされる と困るデータを守ることができるようになった. なお,一度通常属性で定義されたマクロ変数をそのまま readonly 属性として再定義することはできないので 注意が必要である. また readonly の global マクロ変数を作ると同じ名前の local マクロ変数を作れなくな り,逆も同じなので,オプション利用の差異はマクロ変数名により一層注意が必要である. %global xx; %let xx=1; %global/readonly xx=2; 18
2.2 %put への指定オプションの追加 マクロ変数の readonly オプション追加に伴って,%put ステートメントに,読み込み専用のユーザー定義マク ロ変数を対象にする_READONLY_指定と,読み込み/書き込み可能なユーザー定義マクロ変数を対象にする _WRITABLE_指定が追加されている. _ALL_ すべてのユーザー定義のマクロ変数および自動マクロ変数 _AUTOMATIC_ 自動マクロ変数 _GLOBAL_ ユーザー定義のグローバルマクロ変数 _LOCAL_ ユーザー定義のローカルマクロ変数 _READONLY_ スコープに関係なく,ユーザー定義の読み込み専用マクロ変数 _USER_ ユーザー定義のグローバル/ローカルマクロ変数 _WRITABLE_ スコープに関係なく,ユーザー定義の読み込み/書き込みマクロ変数 簡単な挙動確認用の例示コードを以下に示す %global A; %global B; %global /readonly C=1 ; %macro m1; %local A; %local D; %local /readonly E=1 ; %put *===_global_===*; %put _global_; %put *===_local_===*; %put _local_; %put *===_user_===*; %put _user_; %put *★===_readonly_===*; %put _readonly_; %put *★===_writable_===*; %put _writable_; /*===_all_は対象が多いので省略===*/ /*%put _all_;*/ /*===_automatic_は対象が多いので省略===*/ /*%put _automatic_;*/ %mend; %m1 3. %if-%then-%do のオープンコードでの記述 3.1 例示コード 旧来,マクロ変数などの状態によって,実行されるコードの処理分岐を%if ステートメントで行う場合, %macro でマクロを定義し,その中で分岐処理を書いた上で,マクロを実行するという手順を踏む必要があ った.ところが,9.4M5 における修正で,%if-%then-%do がオープンコードで実行できるようになった. 次ページのコード例はデータセットの存在を判定し,存在した場合は proc means を実行する.存在しなかっ た場合はメッセージを出力するという処理分岐を,マクロを作成して実行する方法と,オープンコードで実 行する方法の 2 種類示した. 19
[マクロで定義後,実行して分岐する旧来の書き方] %macro means; %if %sysfunc(exist(wk1)) %then %do; proc means data=wk1; run; %end; %else %do; %PUT WARNING: データセット wk1 はなかったので実行しませんでした.; %end; %mend; %means [オープンコードでの%if-%then-%do] %if %sysfunc(exist(wk1)) %then %do; proc means data=wk1; run; %end; %else %do; %PUT WARNING: データセット wk1 はなかったので実行しませんでした.; %end; オープンコードでの記述の場合,マクロを定義・実行することなく,旧来の方法と同様のコードが実行可能 となった. %let FL=Y; data wk1; set sashelp.class; where SEX="男子"; %if &FL=Y %then %do ; where same AGE>12; %end; %let chk =1; %if &chk. %then %do; proc print data=XXXXX; run; %end; フラグがたっているときのみ,抽出条件を追加する.フラグがたっているときのみ,チェック用のプログラ ムを実行するなど,幅広い用途での利用が見込まれる. また,特に SQL プロシジャのように,proc から quit までの間に書かれる SQL コードを対話的に連続実行す るような状況において,導出過程の結果によって,マクロ変数を介して処理分岐ができるということは,プ ログラム開発上,様々な応用可能性を持っているように思われる. 20
proc sql noprint; select count(*) into: obs from sashelp.class; %if &obs > 10 %then %do; create table wk1 as select * from sashelp.class; %end; %else %do; create table wk1 as select * from sashelp.cars; %end; quit; 3.2 制限と注意点 極めて平易に分岐処理が記述できるようになったが,%if-%then-%do のオープンコードでの利用には現時点 でいくつかの制限が存在する. まず,通常マクロで利用可能な% else %if が利用できない.%else %do;のみが許容される [OK] %let in=b; %macro mtest; %if &in=a %then %do; %put aaaaa; %end; %else %if &in=b %then %do; %put bbbbb; %end; %else %do; %put ccccc; %end; [NG] [OK] %let in=b; %let in=b; %if &in=a %then %do; %put aaaaa; %end; %if &in=a %then %do; %put aaaaa; %end; %else %if &in=b %then %do; %put bbbbb; %end; %else %do; %put bbbbb; %end; %else %do; %put ccccc; %end; %mend; %mtest 21
また%else %if と同様に%if-%then-%do 内への新たな%if の配置(%if のネスト)も許容されない. %let in1=1; %let in2=2; %if &in1=1 %then %do; %if &in2=2 %then %do; %put aaaaa; %end; %end; さらに,%if-%then-%do 内に%do ループはどういった形態であっても(until,while),配置が許容されない. %let FL=Y; %if &FL=Y %then %do; %do i = 1 %to 10 %end; %put aaaaa; %end; %end; またマクロ処理で実際にどういったコードが実行されたかをログに示すための mprint オプションや,マクロ 条件分岐がどう判定されたかを示す mlogic オプションも影響を及ぼさない. options mprint mlogic; %let FL=Y; %if &FL=Y %then %do; proc print data=sashelp.class; run; %end; %else %do; proc means data=sashelp.class; run; %end; そのため,実際に,%if 条件を満たしたのか、満たさずに%else %do の処理が実行されたのかの確認はロ グの NOTE 出力位置で判読できるだけである. ただし,通常%if で利用できない in 演算子を利用可能にする minoperator の影響はオープンコードであっても 作用することが確認できた. options minoperator mindelimiter=',' ; %let MVAR1=1; %if &MVAR1 in (1,2) %then %do; %put マクロ変数 MVAR1 には 1 か 2 が設定されています; %end; 22
マクロ変数のスコープについても特徴があり,通常マクロ内でスコープを明示せずにマクロ変数を格納した 場合,ローカルマクロ変数として定義される. %macro mtest2; %let m=xxx; %put _local_; %put _global_; %mend; %mtest2; しかし%if-%then-%do 内ではグローバルマクロ変数として定義される. %if 1 %then %do; %let m=xxx; %put _local_; %put _global_; %end; これは,%if-%then-%do がスコープを有しないためと考えられる. 最後に,文法上の話ではなく,運用上の注意点となるが,%if-%then-%do の登場により,平易に分岐にかける ようになった反面,まだ処理に習熟していないプログラマが冗長な分岐を書くケースも見られるようになっ た. %let FL=Y; %let FL=Y; %if &FL = Y %then %do ; data wk1; set sashelp.class; where SEX="男子"; where same AGE>12; run; %end; data wk1; set sashelp.class; where SEX="男子"; %if &FL = Y %then %do ; where same AGE>12; %end; %else %do; where same AGE>13; %end; run; %if &FL ^= Y %then %do ; data wk1; set sashelp.class; where SEX="男子"; where same AGE>13; run; %end; 左のコードは極端な例ではあるが,フラグによって変わる部分[where same AGE>13;]以外もすべて同じコード を書いている.マクロプロフェッサの働きが,テキスト展開であることがまだ感覚に馴染んでいない新規ユ ーザーがオープンコード%if-%then-%do を利用した際に,多くみられる書き方だと考えている. 右のように,変更部分のみに限定して,局所管理した方が,コードとしての完成度は高い. 23
4. まとめ いままで,抜本的な変更が少なかったマクロ周りに大きな変更が入ったことで,プログラムの拡張性,可能 性が拓かれたように思う.その内部での実行原理が,公式リファレンスでそれほど深く言及されていないこ ともあり,細かい部分,特殊なケースでの挙動については,今後のユーザーの研究が活発になる分野のよう に感じた.同時に,%else %if の導入や,ループの導入など,さらなる機能拡張も待ち望まれる. 一方で,記述が簡易になったが故に,充分な知識を持たずに濫用してしまうことも危惧される.デバックオ プションがききにくいこともあり,処理分岐でのエラーを追いにくい面があるため,開発現場への導入には 注意を要すると考えている. 今後も, 多くの SAS の先鋭ユーザーと連携して, その機能の拡張性と応用範囲について積極的に知見を深め, フィードバックしていきたい. 5. 参考文献 SAS® 9.4 Macro Language: Reference, Fifth Edition 24
proc spellによるスペルチェック 森岡 裕 (イーピーエス株式会社) 英語のスペルミスは単純でありながら,結果として深刻な結果の間違いに帰結することがある. SASの公式リファレンスには掲載されていないが,実際上は利用可能なUndocumented Procedureの一つとして proc spellが存在する. 例えば,以下のような,スペルミスを含んだSASプログラムがある場合,それをfilenameステートメントで定 義し,proc spellに読み込ませることによって,非認識ワードを検出することができる. filename target "xxxxxx¥test.sas"; proc spell words=target; run; さらにsuggestオプションをつけると,辞書との一致度をみて,訂正候補ワードを提示してくれる. filename target "xxxxxx¥test.sas"; proc spell words=target; run; また,照合に用いられるマスター辞書はSAS内部にカタログ化されているが,そこにユーザー定義の用語を 追加することができる.(既に存在している辞書への追加はcreate部分をupdateにする).全大文字,全小文 字両方で登録した方が精度がよい. filename learning " xxxxxx¥追加.txt"; proc spell words = learning create dict = work.mycatalog.spell; run; ユーザー定義の補助辞書を使うのは以下のコードになる(自動でマスター辞書も参照されるので,ユーザー 定義のみでチェックする場合はNOMASTERオプション). proc spell words=target dictionary = work.mycatalog.spell suggest verify ; run; 他にも隠れた仕様がたくさんあるが,Undocumentなので苦 労されるはずである.Japan SAS Discussionなどで質問いた だければと思っています. 25 以上.
XMLMapを利用したSASデータセットの XMLファイルへのエクスポートについて ○望戸 遼 (参天製薬株式会社) XMLMapとはLIBNAMEステートメントのXMLV2エンジンのオプションの一つである。XMLMapを指定する ことによって、より柔軟なXMLファイルのエクスポートが可能となる。XMLMapを利用するために、出力す るSASデータセットの情報からXML形式で.MAPファイルを作成し、この.MAPファイルをLIBNAMEの XMLV2エンジンに認識させてSASデータセットをXMLファイルへ出力する。 SASプログラムの構文としては右図の ように、LIBNAMEへ出力するXMLファ イルを、XMLMapオプションに.MAPファイルを設定する。なお、この例ではsashelpにあるclassデータセット を出力しているが、出力するXML、MAPファイル名は自由に設定できる。 XMLファイルを出力するために必要なMAPファイル内のXML要素を下記に示す。 .MAPの要素 親要素 内容 XML宣言 - XML宣言。XMLの決まり文句であり必ず1行目に記載する。 <?xml version="1.0" encoding="UTF-8"?> SXLEMAP - ルート要素。version属性が必須であり、version=”2.1”とする。 OUTPUT SXLEMAP 出力するXMLファイル及びSASデータセットのヘッダー情報を子要素に 記述する。 HEADING OUTPUT 子要素であるATTRIBUTE要素に記載した情報を、出力するXMLファイル のルート要素の属性として追加する。 TABLEREF OUTPUT 出力するSASデータセット名をname属性に記述する。 TABLE SXLEMAP 出力するSASデータセット名をname属性に記述する。出力するXMLファイ ルの構造やSAS変数情報を子要素に記述する。 TABLE-PATH TABLE 出力するXMLファイルのツリー構造を記述する。 syntax属性に”XPath”または”XPathENR”を指定する。XMLをインポートす る際、そのXMLファイルがNamespaceを持つ場合、”XPathENR”とする。 COLUMN TABLE 出力するSASデータセットの変数名をname属性に記述する。 PATH COLUMN SASデータセットの変数の値を出力するパスを記述する。パス名に@を付 けると要素ではなく属性として出力される。 TYPE COLUMN SASデータセットでの変数型(character|numeric)を指定する。 26
SASグラフにおける色相・彩度・明度に基づく色設定 ○斎藤和宏1、後藤義雄1、 (1株式会社タクミインフォメーションテクノロジー) 本文 本発表ではHSV形式の色情報を用いてグラフを描画する方法を紹介する。HSVとは色を色相・彩度・明度の3 要素で表現する方式を意味する。活用事例として被験者や群ごとの色設定やヒートマップでの利用を提案す る。 1.HSV形式の色情報 HSVとは色を色相(Hue)、彩度(Saturation)、明度(Value)の3要素で表現する方式となる。HSVでは色を鮮やかさ や明るさといった直感的にわかりやすい方法で表現しているため、色を感覚的に調整できる。 また発表においては、FCMPプロシジャでHSVの色情報を出力する関数を紹介する。 2.グラフにおける被験者ごとの色設定 一つ目のHSV形式の色情報活用事例として、被験者ごとの折れ線グラフ作成を紹介する。このグラフ作成に おいては彩度と明度を固定した上で被験者ごとに色相を変化させ、色の統一感を保ったまま被験者ごとの折 れ線を識別しやすくしている。この事例紹介においては、色設定を行った場合と行わなかった場合を比較し つつ、色設定を行うためのSASプログラムの解説を行う。SASプログラムにおいてはグラフテンプレートを利 用している。 3.被験者ごとの折れ線と最小二乗平均の同時プロット ~2群の場合~ 二つ目の事例として、被験者ごとの折れ線と最小二乗平均を同時プロットする事例を紹介する。被験者ごと の折れ線の彩度を下げるとともに、最小二乗平均の彩度を上げ、同時プロットしたときに識別できるように している。また、群ごとに対照的な色相(補色)を指定しこれについても判別しやすくしている。 4.ヒートマップでのHSVの活用 三つ目の事例として、ヒートマップの各セルにおける値の大きさを色相で表現し頻度を彩度で表す方法を紹 介する。これにより横軸・縦軸・値の大きさ・頻度を一度に視覚的に把握できるようになる。このグラフの 作成においてもグラフテンプレートを利用する。 5.おわりに HSV形式の色情報を活用することで、折れ線グラフにおいて描画内容の識別可能性が向上した。またヒート マップでは視覚的に多くの情報を一望できるようになった。 27
疫学研究でよく用いるプロシジャの使い方の紹介 (PROC STDRATE, PROC PSMATCH) ○矢田 徹 (イーピーエス株式会社) 要旨: STDRATE Procedureを用いて疫学研究の指標をいろんな条件で算出してみる。PSMATCH Procedure を用いて いろんなマッチングを行ってみる。 キーワード: Epidemiology, Incident Rate, SMR, PS Matching STDRATEプロシジャは、疫学研究でよく用いられる指標である発現率、調整発現率、率比、率差、標準化発 現比を効率よく計算できる。分布等の条件をいろいろ変えて計算するプログラム例を紹介する。プログラム 例の紹介のために、国立がんセンターがん情報サービスの公開データを用いて発現率等を計算してみる。 傾向スコアマッチングも疫学研究でよく用いられ、PSMATCHプロシジャは効率よくマッチングしたペアを 得ることができる。マッチング比、マッチング手法、キャリパー等の条件をいろいろ変えて計算するプログ ラム例を紹介する。プログラム例の紹介のために、PMDAが提供する医薬品副作用データベース(JADER) のデータを用いてPROC PSMATCHによるマッチングを行ってみる。 28
ODS OUTPUT入門 ○松沢 享 (株式会社インターサイエンティフィックリサーチ) 【はじめに】 ODS OUTPUTを用いて、プロシジャによる集計結果などをSASデータセットに出力する方法を紹介する。 【方法】 以下はUNIVARIATEプロシジャの結果のうち、「モーメント」の部分をODS OUTPUTを用いてSASデータセ ットに出力する例である。 ods output Moments=out1; proc univariate data=sashelp.class; var height; run; ods output close; 【結果】 上記プログラムの実行により出力されたSASデータセットを以下に示す。 【総括】 簡単な構文でSASデータセットへの出力を行うことが出来た。本発表では基本構文だけではなく、あまり知 られていない機能の詳細と注意点についても紹介している。 【参考文献】 [1] SAS® 9.4 Output Delivery System: User’s Guide, Fifth Edition https://documentation.sas.com/doc/en/pgmsascdc/9.4_3.5/odsug/p0oxrbinw6fjuwn1x23qam6dntyd.htm 29
生物統計 ・ 医薬関連 / SASシステム 30
SASで始めよう被験者数再計算を伴う生物学的同等性試験 ~ 後発医薬品のBEガイドライン改正に適応する ~ 森田 祐介,浜田 泉 (ノーベルファーマ株式会社 データサイエンス室) Let’s Try Two-stage Bioequivalence Trials with Sample Size Re-estimation using SAS Yusuke Morita, Izumi Hamada Data Science Office, Nobelpharma Co., Ltd. 要旨 令和 2 年 3 月 19 日付けで「後発医薬品の生物学的同等性試験ガイドライン」が一部改正され,より厳密な第 一種の過誤確率の制御が求められるようになった.すなわち,従前許容されていた「本試験」に加えて「例 数追加試験」を実施することが原則として認められなくなり,代わりに, 「本試験」で,第一種の過誤確率を 制御したうえで,中間解析結果に基づく被験者数の追加が 1 回に限り認められることとなった.本稿では, この改正に対応しうる中間解析を含む 2 段階デザインの解析手法のひとつとして,Maurer らが提案した Maximum Combination Test および被験者数再計算アルゴリズムを関連手法とともに紹介し,SAS による実装 方法を提案する.なお,本ガイドラインの改正は,後発医薬品のみならず,先発医薬品のライフサイクルマ ネジメントにも影響しうるため,生物統計担当者へのインパクトは小さくないと思われる. キーワード:生物学的同等性試験,2 段階デザイン,アダプティブデザイン,逆正規法,被験者数再計算, Maximum Combination Test,Potvin,中間解析,後発医薬品の生物学的同等性試験ガイドライン 1.はじめに 生物学的同等性試験(BE 試験)は,有効成分が同じ医薬品(例えば先発医薬品 vs 後発医薬品,あるいは錠 剤 vs 顆粒剤)について,臨床上の有効性および安全性が同等であるかを評価するために実施される試験で ある.通常,AUC や Cmax を同等性評価パラメータとして試験製剤と対照製剤のバイオアベイラビリティ (有効成分の未変化体または活性代謝物が体循環血中に入る速度および量)を,クロスオーバーデザインを用 いて比較する.そして,試験製剤と対照製剤の同等性評価パラメータの対数値の平均値の差の 90%信頼区間 が log(0.80)~log(1.25)の範囲にあるとき(または有意水準 5%の 2 つの片側検定がいずれも棄却されたとき), 試験製剤と対照製剤は生物学的に同等(BE)と判定する.また,総被験者数 20 名以上の場合,試験製剤と対 照製剤の同等性評価パラメータの対数値の平均値の差が log(0.90) ~ log(1.11)の範囲にあり,かつ,「後発 医薬品の生物学的同等性試験ガイドライン」(BE ガイドライン)で規定された溶出試験で溶出挙動が類似し ていると判定された場合には,BE と判定する[1]. 31
令和 2 年 3 月 19 日付けで BE ガイドラインが一部改正され,「本試験」は後発医薬品の開発において検 証試験であることが明確にされ,より厳密な第一種の過誤確率の制御が求められるようになった.(BE 試験 での第一種の過誤とは,真実は BE でない製剤同士を,BE であると判定することを指す.) すなわち,「本 試験」とは別に「例数追加試験」を実施し,「本試験」のデータと併合して解析することは原則として認め られなくなった.加えて,「予試験」の結果を BE 評価に用いることも認められなくなった.代わりに, 「本試験」で,第一種の過誤確率を制御したうえで,中間解析結果に基づく被験者数の追加が 1 回に限り認 められることとなった[2,3]. この BE ガイドライン改正の影響は,後発医薬品だけにとどまらない.「含量が異なる経口固形製剤の生 物学的同等性試験ガイドライン」「経口固形製剤の処方変更の生物学的同等性試験ガイドライン」「剤形が 異なる製剤の追加のための生物学的同等性試験ガイドライン」は[4,5,6],既承認の薬剤について,それぞれ 所定の条件に該当する場合は,BE ガイドラインに準じた BE 試験の実施を求めている.したがって,後発 医薬品の BE ガイドラインの改正は,先発医薬品のライフサイクルマネジメントにも影響を与える改正であ り,生物統計担当者へのインパクトは小さくないと思われる. 本稿では,BE ガイドラインの改正に対応しうる解析手法を,先行文献に基づいて紹介し,SAS による実 装方法を提案する.2 章では,本稿で想定する試験デザインを示し,3 章では,BE ガイドラインの改正に対 応しうる解析手法および被験者数再計算アルゴリズムを紹介する.そして 4 章で SAS による実装例を示 し,5 章では,試験計画時や報告時に考慮すべき事項を考察する. 2.想定する試験デザイン 本稿では,AUC および Cmax を同等性評価パラメータとして,試験製剤 T と対照製剤 R の BE 評価を目 的とする,中間解析を含む,2 段階デザインの 2 剤 2 期のクロスオーバー試験を想定する.中間解析までを ステージ 1,中間解析後から最終解析までをステージ 2 と呼ぶこととする.(図 1) BE 判定⇒被験者数再計算/中止 順序 TR 順序 RT 試験製剤 対照製剤 対照製剤 試験製剤 中 試験製剤 対照製剤 最 間 終 解 解 析 ステージ1 対照製剤 試験製剤 ステージ2 図 1.中間解析を含む,2 段階デザインの 2 剤 2 期のクロスオーバー試験 32 析
本試験デザインは,中間解析結果に基づいて BE 評価が可能であり,BE でないと判定される場合には, 適切な被験者数を追加可能であること,中間解析で BE と判定された場合または被験者数を追加して試験を 継続しても BE と判定される見込みが低い場合は,ステージ 1 で早期中止することが可能である点で魅力的 である. 一方,被験者数再計算を伴う 2 段階デザインでは,以下の 2 つの要因から第一種の過誤確率が上昇する. (1)中間解析と最終解析と繰り返し BE 評価を行うことによるもの (2)中間解析に基づく被験者数追加によるもの したがって,3 章で紹介する第一種の過誤確率を制御可能な解析手法の適用が必要となってくる. なお,予め最終解析の目標被験者数を固定したうえで,中間解析で早期中止を判断する群逐次デザイン は,被験者数再計算を伴うものではないため,本稿では取り上げない.しかし,2 段階デザインの BE 試験 を検討する場合,群逐次デザインも第一種の過誤確率を制御可能であり,選択肢になりうる. 3.改正後の BE ガイドラインに対応しうる解析手法 BE ガイドラインでは,中間解析結果に基づく被験者数追加に対応するための具体的な解析手法への言及 はないが,BE ガイドラインの改正について医薬品医療機器総合機構(PMDA)の職員らが概説した文献[7]で は,(PMDA の公式見解を示すものではないが),いくつかの解析手法について「maybe helpful」として関連 する文献が挙げられている[8,9,10].本章では,それらの手法について概説する.なお,3.3 節 Standard Combination Test,3.4 節 Maximum Combination Test および,3.5 節 被験者数再計算のアルゴリズムについて は,棚橋らの総説[11]に数値例と共に詳説されており,理論的な詳細はそちらを参照されたい. 3.1 数理と表記 解析手法の説明に先立って本稿での帰無仮説,対立仮説および検定統計量を示す.同等性評価パラメータ は,AUC または Cmax とする.対数変換した同等性評価パラメータの試験製剤の平均を 𝜇𝜇 𝑇𝑇 ,対照製剤の平 均を 𝜇𝜇𝑅𝑅 とし, 𝛿𝛿 = 𝜇𝜇 𝑇𝑇 − 𝜇𝜇𝑅𝑅 とする.BE 試験における帰無仮説と対立仮説は以下となる. (複合)帰無仮説:𝐻𝐻01 :𝛿𝛿 ≤ log(0.80) ∪ 𝐻𝐻02 :𝛿𝛿 ≥ log(1.25) (複合)対立仮説:𝐻𝐻11 :𝛿𝛿 > log(0.80) ∩ 𝐻𝐻12 :𝛿𝛿 < log(1.25) ∗ ∗ :𝛿𝛿 = log(0.80) , 𝐻𝐻02 :𝛿𝛿 = log(1.25) を定義する. また,説明の便宜上,ポイント帰無仮説: 𝐻𝐻01 (複合)帰無仮説は, 𝐻𝐻01 vs 𝐻𝐻11 および 𝐻𝐻02 vs 𝐻𝐻12 に対応する2つの片側検定(TOST : Two One-Sided Tests)に よって検定される. 𝐻𝐻01 と 𝐻𝐻02 に対するステージ 𝑖𝑖 の検定統計量は以下である. 𝑇𝑇𝑖𝑖1 = log (1.25) + 𝛿𝛿̂𝑖𝑖 �2𝜎𝜎�𝑖𝑖2 ⁄𝑛𝑛𝑖𝑖 , 𝑇𝑇𝑖𝑖2 = log (1.25) − 𝛿𝛿̂𝑖𝑖 �2𝜎𝜎�𝑖𝑖2 ⁄𝑛𝑛𝑖𝑖 𝛿𝛿̂𝑖𝑖 はステージ 𝑖𝑖 における 𝛿𝛿 の推定値,𝜎𝜎�𝑖𝑖2 は対数変換した同等性評価パラメータの被験者内分散 𝜎𝜎 2 の推定 値,𝑛𝑛𝑖𝑖 は被験者数を表す. 𝑇𝑇𝑖𝑖1 と 𝑇𝑇𝑖𝑖2 はそれぞれ,自由度 𝑛𝑛𝑖𝑖 − 2 の t 分布に従い,対応する p 値を 𝑝𝑝𝑖𝑖1 と 𝑝𝑝𝑖𝑖2 とする. 33
3.2 Potvin の方法[8,9] Potvin の方法は,有意水準 α を調整した中間解析を実施し,BE であると判定される場合は試験を終了 し,そうでない場合は,中間解析の結果に基づいて被験者数を追加し,試験を継続したうえで,最終解析を 行うものである.BE 判定手順や中間解析と最終解析の有意水準 α の割り振りに基づき,Method B,Method C,Method D が提案されている(図 2,図 3).また,Method B と Method C にステージ 1 の 90%信頼区間が一 定の範囲内に含まれない場合は無効中止とするルールを取り入れ,被験者内変動係数が 10~30%,30~55% のそれぞれの想定において,ステージ 1 の被験者数や各ステージの有意水準など試験デザインに関するパラ メータを最適化した Method E,Method F も提案されている[12]. Potvin の方法は簡便であり,欧州医薬品庁(EMA)の BE ガイドライン[13]では Method B に関する言及があ り,Lee らは,2006 年から 2019 年のアメリカ食品医薬品局(FDA)の後発医薬品の承認審査で 9 つの 2 段階デ ザインの事例があり,そのうち Method B が 1 つ,Method C が 7 つであったことを報告している[14]. Potvin の方法はシミュレーションによって第一種の過誤確率が片側 5%程度以下に抑えられることを確認 したものであり,第一種の過誤確率の制御を理論的に保証した方法ではない点に注意が必要である.Potvin らは,シミュレーション結果の評価では,5.2%までの第一種の過誤確率を許容している[8].実際に Potvin ら,Montague ら,および Maurer らのシミュレーション[8,9,10]でも,Potvin の方法では第一種の過誤確率が 5%を超える結果が散見される. ステージ1で BE評価 (α=0.0294) 中間解析 BEでない ステージ1の 検出力計算 検出力が80%未満 ステージ1のデータより 被験者数計算 (α=0.0294) BEである 早期中止 検出力80%以上 BEでない 早期中止 α=0.0294で 両ステージのデータを 併合してBE評価 (α=0.0294) BEである or BEでない 最終解析 図 2.Potvin Method B のフロー[8] ステージ1で の検出力計算 (α=0.05) 中間解析 検出力が80%未満 BE評価 (α=0.0294) 検出力80%以上 BE評価 (α=0.05) BEでない ステージ1のデータより 被験者数計算 (α=0.0294) BEである 早期中止 BEである or BEでない 両ステージのデータを 併合してBE評価 (α=0.0294) 全ての α =0.0294 ⇒ 0.028 としたものが Method D 最終解析 図 3.Potvin Method C および D のフロー[8] 34 BEである or BEでない
3.3 Standard Combination Test [15] Kieser らは,群逐次法および逆正規法を適用することで 2 段階デザインの BE 試験で,第一種の過誤確率 −1 −1 を制御できることを示した.𝛧𝛧𝑖𝑖𝑖𝑖 = Φ �1 − 𝑝𝑝𝑖𝑖𝑖𝑖 � として ( Φ �・� は標準正規分布の累積分布関数Φ�・� の逆関数),ステージ 1 とステージ 2 の統計量を,重み 𝑤𝑤 (0 < 𝑤𝑤 < 1)を用いて逆正規法により統合したもの をステージ 2 終了後の最終解析の検定統計量 𝛧𝛧0𝑗𝑗 とする.(ここで 𝛧𝛧1𝑗𝑗 と 𝛧𝛧2𝑗𝑗 は独立である) 𝛧𝛧0𝑗𝑗 = √𝑤𝑤𝛧𝛧1𝑗𝑗 + √1 − 𝑤𝑤𝛧𝛧2𝑗𝑗 ∗ のもとで,正の相 最終解析の検定統計量 𝛧𝛧0𝑗𝑗 および中間解析の検定統計量 𝛧𝛧1𝑗𝑗 は,ポイント帰無仮説 𝐻𝐻0𝑗𝑗 関 √𝑤𝑤 をもつ,二変量標準正規分布に従う. � 𝛧𝛧1𝑗𝑗 0 1 √𝑤𝑤 �� � ~ 𝑁𝑁 �� � , � 𝛧𝛧0𝑗𝑗 0 √𝑤𝑤 1 ステージ 𝑖𝑖 終了時の検定に対する棄却限界値を 𝑧𝑧𝛼𝛼𝑖𝑖 として,試験全体での第一種の過誤確率が 𝛼𝛼 となるよ うに 𝑧𝑧𝛼𝛼𝑖𝑖 を定める. 𝑃𝑃�𝛧𝛧1𝑗𝑗 < 𝑧𝑧𝛼𝛼1 ∩ 𝛧𝛧0𝑗𝑗 < 𝑧𝑧𝛼𝛼2 � = 1 − 𝛼𝛼 ステージ 1 終了時の BE 評価(TOST)では, 𝐻𝐻01 および 𝐻𝐻02 が棄却されるとき,つまり, 𝑝𝑝11 < 𝛼𝛼1 かつ 𝑝𝑝12 < 𝛼𝛼1 のとき BE と判定する.BE と判定されない場合,ステージ 1 の結果からステージ 2 の被験者数を 計算のうえ,試験を継続する.最終解析では,逆正規法により統合した統計量 𝛧𝛧0𝑗𝑗 に基づいて,BE 評価を 行う.つまり, 𝛧𝛧0𝑗𝑗 の観測値 𝑧𝑧0𝑗𝑗 が 𝑧𝑧01 ≥ 𝑧𝑧𝛼𝛼2 かつ 𝑧𝑧02 ≥ 𝑧𝑧𝛼𝛼2 のとき BE と判定する.(Maurer らは,この手 法を Standard Combination Test と呼んでいる.) 3.4 Maximum Combination Test [10] Maurer らは Standard Combination Test の改良法として Maximum Combination Test を提案した.Standard Combination Test では,重み 𝑤𝑤 = 𝑛𝑛1 ⁄(𝑛𝑛1 + 𝑛𝑛2 )であるとき,検出力が最大となる.しかし,重み 𝑤𝑤 は試験開 始前に設定する必要があるが,ステージ 2 の被験者数 𝑛𝑛2 はステージ 1 の中間解析結果に基づいて決定され るため,重み 𝑤𝑤の最適な設定値を試験開始前に知ることはできない.そこで,Maurer らは,事前に 2 つの異 ∗ なる重み 𝑤𝑤 と 𝑤𝑤 ∗ (0 < 𝑤𝑤 ∗ < 𝑤𝑤 < 1)を設定し,それぞれの重みに対する統計量 𝛧𝛧0𝑗𝑗 と 𝛧𝛧0𝑗𝑗 を考え,最終解析 ∗ � に基づいて,BE 評価を行う方法を提案し,これを Maximum Combination では, 𝛧𝛧𝑚𝑚𝑚𝑚𝑚𝑚𝑗𝑗 = 𝑚𝑚𝑚𝑚𝑚𝑚� 𝛧𝛧0𝑗𝑗 , 𝛧𝛧0𝑗𝑗 Test と名付けた. 𝛧𝛧0𝑗𝑗 = √𝑤𝑤𝛧𝛧1𝑗𝑗 + √1 − 𝑤𝑤𝛧𝛧2𝑗𝑗 ∗ = √𝑤𝑤 ∗ 𝛧𝛧1𝑗𝑗 + √1 − 𝑤𝑤 ∗ 𝛧𝛧2𝑗𝑗 𝛧𝛧0𝑗𝑗 ∗ ∗ および中間解析の検定統計量 𝛧𝛧1𝑗𝑗 は,ポイント帰無仮説 𝐻𝐻0𝑗𝑗 のも ここで,最終解析の検定統計量 𝛧𝛧0𝑗𝑗 ,𝛧𝛧0𝑗𝑗 とで,以下の相関構造をもつ三変量標準正規分布に従う. 35
1 𝛧𝛧1𝑗𝑗 ⎛ 0 ⎛ √𝑤𝑤 �𝛧𝛧0𝑗𝑗 � ~ 𝑁𝑁 ⎜ ⎜�0� , ⎜ ∗ 0 𝛧𝛧0𝑗𝑗 √𝑤𝑤 ∗ ⎝ ⎝ √𝑤𝑤 1 �√𝑤𝑤𝑤𝑤 ∗ + �(1 − 𝑤𝑤)(1 − 𝑤𝑤 ∗ )� √𝑤𝑤 ∗ ⎞ �√𝑤𝑤𝑤𝑤 ∗ + �(1 − 𝑤𝑤)(1 − 𝑤𝑤 ∗ )�⎞⎟ ⎟⎟ 1 ⎠⎠ Standard Combination Test と同様にステージ 1 とステージ 2 終了時の検定に対する棄却限界値をそれぞれ 𝑧𝑧𝛼𝛼1,𝑚𝑚𝑚𝑚𝑚𝑚 と 𝑧𝑧𝑚𝑚𝑚𝑚𝑚𝑚 として,試験全体での第一種の過誤確率が 𝛼𝛼 となるように 𝑧𝑧𝛼𝛼,1,𝑚𝑚𝑚𝑚𝑚𝑚 と 𝑧𝑧𝑚𝑚𝑚𝑚𝑚𝑚 を定める. ∗ < 𝑧𝑧𝑚𝑚𝑚𝑚𝑚𝑚 � = 1 − 𝛼𝛼 𝑃𝑃�𝛧𝛧1𝑗𝑗 < 𝑧𝑧𝛼𝛼1,𝑚𝑚𝑚𝑚𝑚𝑚 ∩ 𝛧𝛧0𝑗𝑗 < 𝑧𝑧𝑚𝑚𝑚𝑚𝑚𝑚 ∩ 𝛧𝛧0𝑗𝑗 ステージ 1 終了時の BE 評価(TOST)では, 𝐻𝐻01 および 𝐻𝐻02 が棄却されるとき,つまり, 𝑝𝑝11 < 𝛼𝛼1,max かつ 𝑝𝑝12 < 𝛼𝛼1,max のとき BE と判定する.BE と判定されない場合,ステージ 1 の結果からステージ 2 の被験者数 を計算のうえ,試験を継続する.最終解析では,統計量 𝛧𝛧𝑚𝑚𝑚𝑚𝑚𝑚𝑗𝑗 に基づいて,BE 評価を行う.つまり, 𝛧𝛧𝑚𝑚𝑚𝑚𝑚𝑚𝑗𝑗 の観測値 𝑧𝑧𝑚𝑚𝑚𝑚𝑚𝑚𝑗𝑗 が 𝑧𝑧𝑚𝑚𝑚𝑚𝑚𝑚1 ≥ 𝑧𝑧𝑚𝑚𝑚𝑚𝑚𝑚 かつ 𝑧𝑧𝑚𝑚𝑚𝑚𝑚𝑚2 ≥ 𝑧𝑧𝑚𝑚𝑚𝑚𝑚𝑚 のとき BE と判定する. 3.5 被験者数再計算のアルゴリズム[10] Potvin らや Kieser らは,中間解析の被験者数再計算に,ステージ 1 から得られた被験者内変動の推定値𝜎𝜎�12 だけを用いており,ステージ 1 の製剤間の差の推定値 𝛿𝛿̂1 (= 𝜇𝜇̂ 𝑇𝑇1 − 𝜇𝜇̂ 𝑅𝑅1 )は用いていない.しかし,Maurer ら は,ステージ 1 の p 値に関する情報(つまり 𝛿𝛿̂1 )を無視することは,ステージ 2 の被験者数を必要以上に増大 させるとして,新しい被験者数再計算のアルゴリズムを提案した. ∗ このアルゴリズムでは,ポイント帰無仮説 𝐻𝐻0𝑗𝑗 のもとで,ステージ 1 のデータを所与としたときに,ステ ージ 2 で帰無仮説 𝐻𝐻0𝑗𝑗 を棄却する確率 conditional error rate を求める.そして,conditional error rate を有意水 準として,ステージ 2 の TOST の検出力が目標検出力を越えるときの被験者数を求める.このとき,目標検 出力には,ステージ 1 で BE と判定されなかったもとで,ステージ 2 で BE と判定する条件付き確率 estimated conditional target power を用いる. ステージ 1 の統計量 𝛧𝛧1𝑗𝑗 の観測値 𝑧𝑧1𝑗𝑗 とすると,Standard Combination Test の conditional error rate は以下と なる. 𝑐𝑐 𝛼𝛼𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 = 1 − Φ�� 𝑧𝑧𝛼𝛼2 − √𝑤𝑤 𝑧𝑧1𝑗𝑗 �⁄√1 − 𝑤𝑤 � 𝑗𝑗 同様に,Maximum Combination Test の conditional error rate は以下となる. 𝑐𝑐 𝛼𝛼𝑚𝑚𝑚𝑚𝑚𝑚 = 1 − Φ�𝑚𝑚𝑚𝑚𝑚𝑚𝑗𝑗 � 𝑗𝑗 𝑚𝑚𝑚𝑚𝑚𝑚𝑗𝑗 = 𝑚𝑚𝑚𝑚𝑚𝑚�� 𝑧𝑧𝑚𝑚𝑚𝑚𝑚𝑚 − √𝑤𝑤 𝑧𝑧1𝑗𝑗 �⁄√1 − 𝑤𝑤 , � 𝑧𝑧𝑚𝑚𝑚𝑚𝑚𝑚 − √𝑤𝑤 ∗ 𝑧𝑧1𝑗𝑗 �⁄√1 − 𝑤𝑤 ∗ � 一方,目標検出力である estimated conditional target power は,1 − 𝛽𝛽 𝑐𝑐 = �𝛽𝛽̂1 − 𝛽𝛽�⁄𝛽𝛽̂1 となる.その導出は, 𝑅𝑅𝑖𝑖 をステージ 𝑖𝑖 で BE と判定するイベントとするといずれかのステージで BE と判定するイベント𝑅𝑅 = 𝑅𝑅1 ∪ 𝑅𝑅2 となる. 𝑅𝑅𝑖𝑖 の補集合を𝑅𝑅�𝑖𝑖 とすると試験全体の検出力は以下となる. 1 − 𝛽𝛽 = 𝑃𝑃(𝑅𝑅) = 𝑃𝑃(𝑅𝑅1 ∪ 𝑅𝑅2 ) = 𝑃𝑃(𝑅𝑅1 ) + 𝑃𝑃(𝑅𝑅�1 ∩ 𝑅𝑅2 ) = 𝑃𝑃(𝑅𝑅1 ) + 𝑃𝑃(𝑅𝑅2 |𝑅𝑅�1) 𝑃𝑃(𝑅𝑅�1 ) より 𝑃𝑃(𝑅𝑅2|𝑅𝑅�1 ) = (𝑃𝑃(𝑅𝑅) − 𝑃𝑃(𝑅𝑅1 ))⁄P (𝑅𝑅�1 ) 36
ここで,𝛽𝛽1 = 𝑃𝑃(𝑅𝑅�1 ),1 − 𝛽𝛽 = 𝑃𝑃(𝑅𝑅),1 − 𝛽𝛽 𝑐𝑐 = 𝑃𝑃(𝑅𝑅2 |𝑅𝑅�1)より,1 − 𝛽𝛽 𝑐𝑐 = (𝛽𝛽1 − 𝛽𝛽)⁄𝛽𝛽1 が導かれる.実際には 𝛽𝛽1 はステージ 1 のデータから推定した 𝛽𝛽̂1 を代入する. 最後に,ステージ 2 の検出力が,estimated conditional target power を達成する被験者数を求める.しかし, conditional error rate が 2 つの片側検定で異なる場合,検出力曲線を 𝛿𝛿 に対して描いた場合,𝛿𝛿 = 0を最大値と した左右対称の形状とならなくなる.このため,𝛿𝛿𝑝𝑝 ≠ 0であるとき,𝛿𝛿 ′ ∈ �−�𝛿𝛿𝑝𝑝 �, +�𝛿𝛿𝑝𝑝 ��である全ての 𝛿𝛿 ′ に対して,検出力が estimated conditional target power 以上となることを保証する必要が生じる.そこで, Maurer らは,上側と下側の conditional error rate に基づいて検出力計算に用いる 𝛿𝛿𝑎𝑎𝑎𝑎 を設定することで,全て の 𝛿𝛿 ′ に対して,検出力が estimated conditional target power 以上となることを保証する方法(Adaptive Planning)を提案した.(𝛿𝛿𝑝𝑝 = 𝑙𝑙𝑙𝑙𝑙𝑙�計画時の幾何平均比�とする) 𝑐𝑐 𝑐𝑐 𝑐𝑐 𝑐𝑐 > 𝛼𝛼𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 or 𝛼𝛼𝑚𝑚𝑚𝑚𝑚𝑚 > 𝛼𝛼𝑚𝑚𝑚𝑚𝑚𝑚 +�𝛿𝛿𝑝𝑝 � if 𝛼𝛼𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 1 2 1 2 𝛿𝛿𝑎𝑎𝑎𝑎 = � 𝑐𝑐 𝑐𝑐 𝑐𝑐 𝑐𝑐 −�𝛿𝛿𝑝𝑝 � if 𝛼𝛼𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 ≤ 𝛼𝛼𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐 or 𝛼𝛼𝑚𝑚𝑚𝑚𝑚𝑚 ≤ 𝛼𝛼𝑚𝑚𝑚𝑚𝑚𝑚 1 2 1 2 𝑐𝑐 𝑐𝑐 つまり,𝛿𝛿 = 𝛿𝛿𝑎𝑎𝑎𝑎 のもとで,ステージ 2 の検出力 𝑃𝑃 �𝑇𝑇21 ≥ 𝑡𝑡𝑛𝑛2−2,𝛼𝛼𝑚𝑚𝑚𝑚𝑚𝑚 ∩ 𝑇𝑇22 ≥ 𝑡𝑡𝑛𝑛2−2,𝛼𝛼𝑚𝑚𝑚𝑚𝑚𝑚 � ≥ 1 − 𝛽𝛽 𝑐𝑐 を 1 2 満たす最小の𝑛𝑛2 を求める(自由度νである t 分布の上側累積確率α点を 𝑡𝑡𝜈𝜈,𝛼𝛼 とする).なお,𝑇𝑇21 と𝑇𝑇22 は,相 関係数が−1,自由度𝑛𝑛2 − 2,非心度がそれぞれ�log (1.25) + 𝛿𝛿𝑎𝑎𝑎𝑎 ���2𝜎𝜎�12 ⁄𝑛𝑛2 ,�log (1.25) − 𝛿𝛿𝑎𝑎𝑎𝑎 ���2𝜎𝜎�12 ⁄𝑛𝑛2 で ある 2 変量非心 t 分布に従うものとして計算する. 3.6 各解析手法の性能比較[10] Maurer らは,Potvin の Method B,Standard Combination Test および Maximum Combination Test についてシ ミュレーションによる性能比較を行っており,その結果から,Maximum Combination Test の利用を推奨して いる.なお,Standard Combination Test と Maximum Combination Test には,3.5 節の被験者数再計算のアルゴ リズムおよび 4.2 節で示す判定フロー(図 4)をそれぞれ適用してシミュレーションを実施している. 第一種の過誤確率は,Potvin の Method B でいくつかの条件で最大 5.68%まで上昇する結果が観察されて いるが,Standard Combination Test と Maximum Combination Test では,すべての条件で第一種の過誤確率が 5%以下に制御されている.また,Maximum Combination Test の方が Standard Combination Test より第一種の 過誤確率が小さい傾向が観察されている. 目標として 80%を設定した検出力は,Potvin の Method B は,ステージ 1 の被験者数が少ない場合や被験 者内変動係数が 50%を越える条件において,80%を下回る結果が観察されているが,Standard Combination Test および Maximum Combination Test は,ステージ 1 の被験者数が 12 名を超える場合は,概ね 80%以上の 検出力が観察されている. 期待被験者数では,想定した幾何平均比が 0.95 に対して真の幾何平均比が 0.9 の場合,Standard Combination Test よりも Maximum Combination Test の方が少なくなる傾向が観察されている.また,ステー ジ 2 の被験者数に上限を設けた場合,期待被験者数は同程度ながら,Maximum Combination Test の方が,検 出力が Standard Combination Test と同程度かやや優れているという結果が観察されている. 37
4.SAS による実装例 本章では,Maximum Combination Test の SAS による実装でキーとなるポイントについて,アルゴリズム や特記事項を説明する.なお,1)本章で紹介する SAS プログラム,2)Maurer らの Supporting Information[16] にある R による実装例を SAS に移植したプログラム,3)Standard Combination Test の実装例,4)Potvin ら[8] の Example 1 および Example 2 を SAS で再現したプログラム(Method B/C)を Appendix として添付した. 4.1 想定する解析データセット構造 本章で想定する解析データセット構造を表 1 に示す.なお,データは Maurer[10]の Table 6(Example) と同 一の結果が得られるように乱数を用いて作成した. 表 1.本章で想定する解析データセット STAGE USUBJID TRTSEQA TRTA1 TRTA2 lnCmax1 lnCmax2 1 xx-01 RT R T x.xxxx x.xxxx 1 xx-02 RT R T x.xxxx x.xxxx : : : : : : 1 xx-19 TR T R x.xxxx x.xxxx 1 xx-20 TR T R x.xxxx x.xxxx 2 xx-21 RT R T x.xxxx x.xxxx : : : : : : 2 xx-55 TR T R x.xxxx x.xxxx 2 xx-56 TR T R x.xxxx x.xxxx STAGE:ステージ 1/ステージ 2,USUBJID:被験者識別コード,TRTSEQA:順序群,TRTA1:第 I 期の製剤,TRTA2:第 II 期の製 剤,lnCmax1:第 I 期の Cmax の自然対数変換値,lnCmax2:第 II 期の Cmax の自然対数変換値 4.2 想定する判定フロー Maurer らは,Maximum Combination Test を用いたフローを提案している(図 4).ステージ 1 で同等性評価 パラメータの幾何平均比の両側 90%信頼区間が完全に 0.95 - 1.05 の範囲外の場合,無効中止とするルール (futility ルール)を設けている.この futility ルールを設定することで,検出力を損なうことなく,試験を繰り 返した場合の期待被験者数を減らすことが可能であると Maurer らは述べている[10].なお,futility ルールに 抵触した場合,中止せずにステージ 2 を継続しても第一種の過誤確率は制御される(non-binding). ステージ1の90% CIが完全に0.951.05の範囲外か 中間解析 範囲外でない ステージ1の棄却限 界値でBE判定 BEでない ステージ1のデータ より検出力計算 80%未満 被験者数を 再計算 4例以上 ステージ2を実施し Max. Comb TestでBE判定 範囲外である BEでない 無効中止 BEである 早期中止 80%以上 BEでない 無効中止 4例未満 BEでない 無効中止 BEである or BEでない 最終解析 図 4.Maurer らの提案する Maximum Combination Test を用いたフロー[10] 38
4.3 重みに基づく棄却限界値および有意水準の決定
現時点では三変量以上の標準正規分布の累積分布に対応した SAS 関数がないため,Maximum Combination
Test の重み 𝑤𝑤 と 𝑤𝑤 ∗ によって決定される相関構造をもつ三変量標準正規分布に従う正規乱数を大量に発生さ
∗
せ, 3 つの検定統計量( 𝛧𝛧1𝑗𝑗 , 𝛧𝛧0𝑗𝑗 , 𝛧𝛧0𝑗𝑗
)の棄却限界値が Pocock の方法のように等しいという制約下で,試験
全体の第一種の過誤確率が 5%になるような棄却限界値および有意水準を探索するというアルゴリズムとし
た.計算精度を担保するために可能な限り多くの乱数を発生させることが重要である点に留意されたい.
/*###############################################################
## Calculation of critical values for maximum combination test
###############################################################*/
proc iml;
call randseed(12345678);
randN = 100000000; /* number of random variables,recommend >= 100,000,000 */
* choice of weights;
w1 = 0.5;
w2 = 1 - w1;
w1_star = 0.25;
w2_star = 1 - w1_star;
root_w1 = sqrt(w1);
root_w1_star = sqrt(w1_star);
rho=sqrt(w1 * w1_star) + sqrt(w2 * w2_star);
/* correlation matrix */
Sigma = (1
|| root_w1
|| root_w1_star )//
(root_w1
|| 1
|| rho
)//
(root_w1_star
|| rho
|| 1
);
mean = {0 0 0};
Z = randnormal(randN, mean, Sigma);
/* sample from MVN(0, Sigma) */
create MVNorm3 from Z[c={Z1 Z0a Z0b}]; append from Z; close;
/*#########################################################
## function used in froot to solve for critical value
## of maximum combination test
#########################################################*/
start TVNCDF(x);
use MVNorm3;
read all into TRIVN;
ind = (TRIVN[,1] < x) & (TRIVN[,2] < x) & (TRIVN[,3] < x);
prob = ind[:,];
f = (prob) - (1 - 0.05);
return (f);
finish TVNCDF;
* get critical value of robust combination test for z_max1 and z_max2;
z_crit_max = froot("TVNCDF", {0, 5});
* convert to nominal significance level;
alpha_max = 1 - probnorm(z_crit_max);
* store to macro variable;
call symput("z_crit_max", char(z_crit_max));
call symput("alpha_max", char(alpha_max));
print z_crit_max alpha_max;
quit;
なお,Standard Combination Test の場合は,中間解析と最終解析の検定統計量 𝛧𝛧1𝑗𝑗 と 𝛧𝛧0𝑗𝑗 は,ポイント帰無
∗
仮説 𝐻𝐻0𝑗𝑗
のもとで二変量標準正規分布に従うため,PROBBNRM 関数が利用できる.
39
/*####################################################################
## significance levels for standard combination test for weight=0.25
####################################################################*/
proc iml;
* function to solve for critical value (equal alphas in stages 1 and 2);
start BVNCDF(x);
w1_star = 0.25;
f = PROBBNRM(x, x, sqrt(w1_star)) - (1 - 0.05);
return (f);
finish BVNCDF;
* get critical value of standard combination test;
z_crit_stage1_star = froot("BVNCDF", {0, 5});
* convert this to a significance level;
alpha_stage1_star = 1 - probnorm(z_crit_stage1_star);
print z_crit_stage1_star alpha_stage1_star;
quit;
4.4 中間解析
TTEST プロシジャの TOST オプションを指定し,2 つの片側検定の p 値を出力し,BE 判定を行う.ま
た,futility ルールに該当するか判定するための両側 90%信頼区間や被験者数再設計を行うために各種統計量
を ODS ステートメントで出力するように指定する.
**********************************************************************;
* Interim Analysis;
**********************************************************************;
ods output Statistics=stat1 ConfLimits=cl1 EquivLimits=ev1 EquivTests=et1;
proc ttest data=stage1plus2 tost(%sysfunc(log(0.80)), %sysfunc(log(1.25))) alpha=0.05
order=internal;
where STAGE = 1;
var lnCmax1 lnCmax2 / crossover=(TRTA1 TRTA2) ;
run;
4.5 被験者数再設計
power の計算にあたっては,2 変量非心 t 分布の確率計算を行う必要があるが,本稿の執筆時点では対応
する SAS 関数がないため,Genz and Bretz のプログラム(probmvt.sas)を一部改変(probmvt.sas 中の IML サブル
ーチンおよび変数等を外部から参照できるように,最終行の QUIT ステートメントの直前に STORE ステー
トメントを追記)して利用した[17].被験者数を 2 例ずつ増やしながら,MVN_DIST サブルーチンを用い
て,estimated conditional target power を達成する最小の被験者数を求める.
*--------------------------------------------------;
* power function for unequal significance levels;
*--------------------------------------------------;
%include "/home/u########/probmvt.sas"; *specify the folder;
proc iml;
load ; *load modules in probmvt.sas;
lnGmrPlanned = log(0.95);
ln1p25 = log(1.25);
variance1 = &var_hat_stage1.; *estimated intra-subject variance on log-scale;
COVAR = {1 -1,
-1 1};
acheived = 0;
40
do N = %eval(&n_stage1.+2) to 200 by 2 until(acheived);
DIM = 2;
DF = N - 2;
nc1 = (ln1p25 + lnGmrPlanned) /sqrt(variance1 * 2 / N);
nc2 = (ln1p25 - lnGmrPlanned) /sqrt(variance1 * 2 / N);
DELTA = j(1, 2);
DELTA[1] = nc1;
DELTA[2] = nc2;
INFIN = J(1, DIM, 1);
tc1 = tinv(1 - &alpha_c1_max., DF); *estimated conditional error rate for H01;
tc2 = tinv(1 - &alpha_c2_max., DF); *estimated conditional error rate for H02;
LOWER = j(1, 2);
LOWER[1] = tc1;
LOWER[2] = tc2;
UPPER = j(1, 2, 999);*infinity:999 is ignored;
MAXPTS = 2000*DIM*DIM*DIM;
ABSEPS = .000001;
RELEPS = 0;
RUN MVN_DIST( DIM, DF, DELTA, LOWER, UPPER, INFIN, COVAR, MAXPTS, ABSEPS, RELEPS,
ERROR, condpower, NEVALS, INFORM );
if (condpower >= &estimated_conditional_target_power.) then acheived = 1;
print N condpower;
if acheived = 1 then do;
create SSR from N[c={N}];
append from N;
close;
end;
end;
print N;
quit;
4.6 最終解析(Maximum Combination Test)
最終解析では,ステージ 2 のデータから 4.4 節と同様に各種統計量を算出し,同じくステージ 1 のデータ
から算出した統計量と逆正規法による統合を行い,Maximum Combination Test による BE 判定を行う.
*--------------------------------------------------;
* Maximum Combination Test;
*--------------------------------------------------;
data maxcomb;
merge tost1st tost2nd;
w = 0.5;
w_star = 0.25;
z_crit_max = 1.9374;
* z-statistics;
z1_w = sqrt(w) * z1_stage1 + sqrt(1 - w) * z1_stage2;
z2_w = sqrt(w) * z2_stage1 + sqrt(1 - w) * z2_stage2;
z1_w_star = sqrt(w_star) * z1_stage1 + sqrt(1 - w_star) * z1_stage2;
z2_w_star = sqrt(w_star) * z2_stage1 + sqrt(1 - w_star) * z2_stage2;
z1_max = max(z1_w, z1_w_star);
z2_max = max(z2_w, z2_w_star);
* reject null hypothesis at left side?;
nrejlow = (z1_max >= z_crit_max);
41
* reject null hypothesis at right side?; nrejupp = (z2_max >= z_crit_max); * reject null hypothesis at both sides?,; * i.e., is ABE accepted?; z_passed = (nrejlow & nrejupp); *1:ABE accepted, 0:ABE rejected; keep w w_star z_crit_max z1_w z1_w_star z1_max z2_w z2_w_star z2_max nrejlow nrejupp z_passed; run; 4.7 シミュレーション 被験者内変動係数の設定値に基づいて乱数を発生させる方法など詳細なプログラムは Appendix を参照さ れたい.シミュレーションの出力として,試験性能の比較・評価のため,ステージ 1 で中止する確率(BE,BE でないそれぞれ),ステージ 2 に移行する確率,ステージ 1 またはステージ 2 で BE と判定する確率(検出力ま たは第一種の過誤確率に相当する),総被験者数の要約統計量(平均,分位点)などを算出することが有用であ る(表 2). 表 2.シミュレーション結果の提示例 設定 幾何 平均比 被験者内 変動係数 (%) ステージ 1 で BE と判 定する 確率 ステージ 1 で BE でな いと判定す る確率 ステージ 2 へ移行する 確率 ステージ 2 で BE と判 定する 確率 ステージ 1 または 2 で BE と 判定する 確率 期待 総被験者 数 n1=24 0.8 20 0.#### 0.#### 0.#### 0.#### 0.#### ##.# w=0.5 30 0.#### 0.#### 0.#### 0.#### 0.#### ##.# w*=0.25 40 0.#### 0.#### 0.#### 0.#### 0.#### ##.# 20 0.#### 0.#### 0.#### 0.#### 0.#### ##.# 30 0.#### 0.#### 0.#### 0.#### 0.#### ##.# 40 0.#### 0.#### 0.#### 0.#### 0.#### ##.# 1.0 5.その他,考慮すべき事項 本章では,試験計画時や報告時に考慮すべき事項について述べる. まず,中間解析を含む 2 段階デザインを採用するか,それとも中間解析を伴わない通常の固定デザインを 採用するか検討が必要となる.Kaza らは,2 段階デザインの採用を判定するためのスキームを提案している [18].このスキームは日本の規制を意識したものではないが,判断ポイントとして,1)溶出挙動の類似性(f2 関数),2)信頼できる被験者内変動係数の推定値の有無,3)被験者内変動係数の大きさが 30%を越えるかが挙 げられており,指針を与えてくれる. 2 段階デザインを採用する場合,試験計画段階で検討・決定し,試験実施計画書に明記すべきパラメータ が複数ある.BE ガイドラインは,中間解析手順,第一種の過誤確率の制御方法,追加する例数の算出方 法,追加データの併合手順等を含めた実施条件を事前に明記することを求めている[2].加えて,Maximum Combination Test の 2 つの重み,ステージ 1 の被験者数,無効中止基準等も明記すべきパラメータとして考 えられる.これら種々のパラメータ検討のためにシミュレーションによる試験の動作性能の評価が必要であ り,通常の固定デザインよりも計画により多くのリソースや時間が必要になりうる点に留意が必要である. また,被験者数再計算を伴わない群逐次デザインも選択肢として検討する必要があるだろう. 42
中間解析結果に基づいて試験デザインに変更を行うことを計画するアダプティブデザインでは,一般に, インテグリティの維持への配慮が重要となってくる[19].バイオアベイラビリティを比較する BE 試験で は,試験計画および解析計画が詳細に事前宣言されている限りは,中間解析の解析結果がスポンサーに秘匿 されなくても,さほど影響がない可能性もある.しかし,割付情報の管理,中間解析実施とその報告等につ いて事前に手順を定めておくことが必要になる. 試験のオペレーション面での検討事項もある.中間解析で追加被験者数を決定あるいは早期中止となる可 能性があるため,予定被験者数は幅をもった記載となる.これを実施医療機関,CRO(開発業務受託機関), 薬物濃度測定機関等の関連機関にも予め説明し,合意を得たうえで,業務委託契約書や必要に応じて業務手 順書等に反映する必要がある.加えて,現実には追加可能な被験者数には上限があり,被験者数の上限が, コストやスケジュール,実施医療機関等での受託可否などに影響を及ぼすことを考慮する必要がある. また,データマネジメントに関しても,中間解析のために速やかにデータクリーニングを行い,タイムリ ーに質の高いデータを提供できることを保証するための業務手順を予め策定することが求められる. 治験総括報告書など試験結果の報告でも,試験計画,中間解析および最終解析の結果について詳細に報告 することが必要である.報告すべき事項については,FDA のアダプティブデザインのガイダンス[19]および ランダム化比較試験を報告する際の CONSORT チェックリストをアダプティブデザイン試験に拡張した ACE チェックリスト[20]が指針を与えてくれる. 以上,被験者数再計算を伴う 2 段階デザインの恩恵を得るためには,生物統計担当者だけではなく関連部 門・機関で連携し,綿密な試験計画の立案とその着実な遂行,適切な報告もまた重要である. 6.まとめ 令和 2 年 3 月の BE ガイドラインの一部改正により認められることとなった被験者数再計算を伴う 2 段階 デザインに対応しうる解析手法として Maximum Combination Test および被験者数再計算アルゴリズムを関連 手法とともに紹介し,SAS による実装方法を提案した.本稿の執筆時点では,本邦で中間解析を伴う 2 段階 デザインを採用した BE 試験の報告は見つけられなかった.今後,事例の報告が増え,経験や課題が蓄積・ 共有されていくこと,および更なる改善法が提案されていくことで,改正後の BE ガイドラインの実装が推 進されていくことを期待する.本稿がその一助になれば幸いである. 連絡先:morita.yusuke@nobelpharma.co.jp Appendix:本稿に添付する SAS プログラム プログラム名 内容 max_comb.sas Maximum Combination Test の実装例 max_comb_simulation.sas Maximum Combination Test の性能評価のシミュレーションの実装例 maurer_example.sas Maurer らの Appendix の R プログラム[16]を SAS に移植したもの std_comb.sas Standard Combination Test の実装例 potvin_example1.sas Potvin[8]の Example 1(Method B および C)を SAS で再現したもの potvin_example2.sas Potvin[8]の Example 2(Method B および C)を SAS で再現したもの なお,プログラムの動作確認は SAS® OnDemand for Academics (2021 年 9 月時点で SAS9.4TS1M6 相当)で実施した. 43
引用文献 [1] 後発医薬品の生物学的同等性試験ガイドライン(薬生薬審発 0319 第 1 号,別紙 1) [2] 後発医薬品の生物学的同等性試験ガイドライン Q&A(令和 2 年 3 月 19 日事務連絡,別紙 1) [3] 後発医薬品 品質情報 No.14 令和 2 年 8 月(厚生労働省 医薬・生活衛生局医薬品審査管理課) [4] 含量が異なる経口固形製剤の生物学的同等性試験ガイドライン(薬生薬審発 0319 第 1 号,別紙 2) [5] 経口固形製剤の処方変更の生物学的同等性試験ガイドライン(薬生薬審発 0319 第 1 号,別紙 3) [6] 剤形が異なる製剤の追加のための生物学的同等性試験ガイドライン(薬生薬審発 0319 第 1 号,別紙 4) [7] Kuribayashi R, Yamaguchi T, Takagi K. Modernization and Strengthening of Bioequivalence Guidelines in Japan. Clin Pharmacokinet. 2021 Feb;60(2):145-151. [8] Potvin D, DiLiberti CE, Hauck WW, Parr AF, Schuirmann DJ, Smith RA. Sequential design approaches for bioequivalence studies with crossover designs. Pharm Stat. 2008;7(4):245–62. [9] Montague TH, Potvin D, Diliberti CE, Hauck WW, Parr AF, Schuirmann DJ. Additional results for Sequential design approaches for bioequivalence studies with crossover designs. Pharm Stat. 2012;11(1):8–13. [10] Maurer W, Jones B, Chen Y. Controlling the type I error rate in two-stage sequential adaptive designs when testing for average bioequivalence. Stat Med. 2018;37(10):1587–607. [11] 棚橋 昌也, 菅波 秀規. 中間解析,サンプルサイズ再計算を伴う生物学的同等性試験における統計的課題. ジェネ リック研究 2021 ;15: 020–030. [12] Xu J, Audet C, Diliberti CE, Hauck WW, Montague TH, Parr AF, et al. Optimal adaptive sequential designs for crossover bioequivalence studies. Pharm Stat. 2016;15(1):15–27. [13] European Medicine Agency. Committee for Medicinal Products for Human Use (CHMP) Guideline on the investigation of bioequivalence. CPMP/EWP/QWP/1401/98 Rev 1/ Corr **. 2010 January 20 . [14] Lee J, Feng K, Xu M, Gong X, Sun W, Kim J, Zhang Z, Wang M, Fang L, Zhao L. Applications of Adaptive Designs in Generic Drug Development. Clin Pharmacol Ther. 2021 Jul;110(1):32-35. [15] Kieser M, Rauch G. Two-stage designs for cross-over bioequivalence trials. Stat Med. 2015;34(16):2403–2416. [16] Maurer W, Jones B, Chen Y. Supplementary Information for ”Controlling the Type I error rate in two-stage sequential adaptive designs when testing for Average Bioequivalence” https://onlinelibrary.wiley.com/action/downloadSupplement?doi=10.1002%2Fsim.7614&file=sim7614-sup-0001supplementary.pdf [17] Genz, A. and Bretz, F. Methods for the computation of multivariate t-probabilities. Journal of Computational and Graphical Statistics, 2002; 11, 950–971. [18] Kaza M, Sokolovskyi A, Rudzki PJ. 10th Anniversary of a Two-Stage Design in Bioequivalence. Why Has it Still Not Been Implemented? Pharm Res. 2020 Jul 13;37(7):140. [19] Food and Drug Administration. Adaptive designs for clinical trials of drugs and biologics: guidance for industry. 2019. (邦訳:https://www.jpma.or.jp/information/evaluation/results/allotment/lofurc000000n5a8-att/adaptive_design.pdf) [20] Dimairo M, Pallmann P, Wason J, Todd S, Jaki T, Julious SA, Mander AP, Weir CJ, Koenig F, Walton MK, Nicholl JP, Coates E, Biggs K, Hamasaki T, Proschan MA, Scott JA, Ando Y, Hind D, Altman DG; ACE Consensus Group. The Adaptive designs CONSORT Extension (ACE) statement: a checklist with explanation and elaboration guideline for reporting randomised trials that use an adaptive design. BMJ. 2020 Jun 17;369:m115. 44
臨床開発及び市販後を通じた一貫した 安全性評価のためのシステム構築 ○荒木 芳規1、松浦 潤治1、宮田 裕介1、齊藤 康一1、中島 章博1、芦沢 宏治2 (1帝人ファーマ株式会社、2株式会社タクミインフォメーションテクノロジー) 本文 医薬品の安全性確保のためには、臨床開発及び市販後を通じて一貫した安全性評価を行う必要がある。帝人 ファーマ株式会社では、臨床開発と市販後の安全性評価での相互のデータ参照や評価の連携に時間を要して いた。そこで、集積した安全性情報を用いて、一貫した安全性評価を効率的・効果的に行うために、SASを 用いた安全性評価システムを構築した。 構築した安全性評価システムでは、臨床開発段階では臨床試験が終わるたびに当該臨床試験の安全性解析及 び統合安全性解析を行い、市販後ではJADER(PMDAの医薬品副作用データベース)や自社に集積された副 作用情報を用いたシグナル検出を行う。これらの解析では、常に同じ構造のデータを用い、シグナル検出の ための評価方法と閾値を標準化し、それらを実装した解析プログラムを作成することにより効率的でタイム リーな解析を可能とした。さらに、解析結果の理解促進のために、解析結果の出力も標準化し、SAS Visual Analyticsを用いて解析結果を可視化した。 本発表では上記のシステムの概要を紹介し、仮想事例を用いたデモンストレーションを行う。 本発表は専用のシグナル検出ツールを有さない企業がSASを用いてシステム構築した事例報告であり、今後 のより良い安全性評価のために是非ご意見をいただきたい。 45
JMP スクリプト言語(JSL)を用いた非臨床用途の 各種 JMP アドイン開発 ○福島慎二、佐藤拓哉、前田敦 (株式会社タクミインフォメーションテクノロジー) JMP はマウス操作のみでグラフ作成や統計解析が手軽に実施でき、製薬業界の非臨床分野においても広く利 用されているが、標準搭載の機能のみでは多少不足する部分もある。本演題では非臨床用途で要望が多い機 能追加を JMP スクリプト言語(JSL)を用いて開発し、アドインとして搭載した 2 種類の事例を示す。 1 つ目の事例は割付け(群分け)のアドイン開発である。実験前に取得した複数種類の測定値を入力し、群数 および各群ごとの例数等の指定した条件にしたがって乱数を用いて指定した回数分の割付けを行い、一元配 置分散分析および等分散性の検定の P 値が最も大きい試行を採用する仕様で開発を実施した。割付け結果は データテーブルとして出力し、実験実施後に必要に応じて投与後の測定値を追加入力するとともに、投与前 の測定値を共分散分析に供することも可能な仕様とした。割付けに使用する測定値およびユーザーが割付け 条件を指定する画面の開発にあたっては、JMP に搭載されているアプリケーションビルダーを使用すること により、他の言語を使用せずにユーザーインタフェースを簡便に開発することが可能であった。 2 つ目の事例は JMP 未搭載の多重比較手法である Williams 多重比較 (パラメトリック)および Shirley-Williams 多重比較(ノンパラメトリック)を行うアドインの開発である。入力画面では解析対象の変数選択、統計手 法(Williams あるいは Shirley-Williams)、上側/下側および有意水準を指定する仕様とした。Williams の方法 に基づき調整平均値を求め、高用量群から閉手順で逐次検定を実施し、算出した統計量を Williams 多重比較 用の統計数値表と比較して有意差の有無を出力する仕様で開発を実施した。また、結果表示には多重比較で 使用される JMP 標準のプラットフォームの機能を最大限活用し、通常の JMP を用いた解析結果と同様にイ ンタラクティブな散布図グラフおよび要約統計量とともに本アドインで算出した有意差レポートを表示させ た。 いずれの開発作業においても、JMP に標準で搭載されている日本語マニュアル、スクリプトエディタおよび デバッガ等の充実した開発環境および JMP 事業部のテクニカルサポートは非常に有用であった。 46
SASシステム / SAS ・ JMP教育 47
臨床試験のデータハンドリングとSQLプロシジャ ○田中 真史 (イーピーエス株式会社 統計解析部) Introduction to the SQL Procedure for Handling Clinical Data Masashi Tanaka Statistics Analysis Department, EPS Corporation 要旨 SQL プロシジャの利点をデータステップ、SORT プロシジャ、MEANS プロシジャ及び TRANSPOSE プロシジ ャと比較することで明らかにした。また、SELECT 句におけるデータハンドリング及びマクロ言語と組み合 わせる方法を、簡単なコードを例に説明した。 キーワード:SQL プロシジャ、臨床試験 緒言 SAS 認定資格(Base Programming Using SAS 9.4 及び SAS 9.4 Advanced Programming)の出題範囲や CRO で の業務経験から考えると、SAS プログラミングの基本は、データステップ並びに SORT、TRANSPOSE 及び MEANS プロシジャなどで、SQL プロシジャは中級のプロシジャという位置づけであろう [1] [2]。しかしなが ら、SQL プロシジャの応用範囲の広さと、データベースの構造を反映した SQL の発想は、なるべく早い段階 で学ぶべきである。本稿では、臨床試験のデータハンドリングにおける SQL プロシジャの使用方法を解説す る。特に強調したいのは、関数やマクロ言語などの技術と組み合わせることで、SQL プロシジャを効果的に 使用できる点である。SQL プロシジャの構文は改めて説明しない [3] [4]。コード例の動作確認は SAS 9.4 TS1M6 日本語版で行った。 1. SQL プロシジャの特徴 SQL プロシジャを、データステップ、SORT プロシジャ、MEANS プロシジャ及び TRANSPOSE プロシジャ と比較する。 1.1 データステップとの比較 データステップの特徴は、同一オブザベーション内の変数値に対する処理(横の処理)が容易なこと及び 変数名を指定する必要性が弱いこと並びにソート順を保つことである。 データステップでは、IF-THEN/ELSE ステートメントを繰り返し用いるなどして段階的に変数を導出でき 48
るが、SQL プロシジャの SELECT 句では、CASE 式は使用できるものの、基本的には 1 行で変数を導出する。 そのため、SQL プロシジャでは、SAS 関数を活用することや、FORMAT プロシジャ及び FCMP プロシジャを 用いて変数の導出を SQL プロシジャと分離することが重要になる(2 章) 。 データステップでは、SET 及び MERGE ステートメントでデータセットの変数を非明示的に宣言できる。 コード量が減る利点はあるが、一方で、変数を意識しにくくなる。典型的な例は MERGE ステートメントで ある。データセット A、B に同一の変数名 var を持つ変数 A.var、B.var が存在した場合、データステップでは それらを区別できず、データセットの横結合の際は、一方の値を他方の値が上書きする。SQL プロシジャで は変数を明示しないと構文的に不適当であり、ログに WARNING が出力される(例 1.1a) 。そのため、自然と 変数を意識することになる。例 1.1a を改善したのが例 1.1b である。例 1.1b にはクエリをふたつ記載したが、 できるだけ変数を明示した上のクエリが適切であろう。 例 1.1a proc sql; create table OUT as select * from A left outer join B on A.var = B.var ; quit; WARNING: 変数 var はファイル WORK.OUT に既に存在します。 例 1.1b proc sql; create table OUT as select A.* , B.var2 , B.var3 from A left outer join B on A.var = B.var ; create table OUT(drop = _var) as select A.* , B.* from A left outer join B(rename = (var = _var)) on A.var = B._var ; quit; データステップの処理ではオブザベーションのソート順が保たれる。SQL プロシジャでは、扱うデータセ 49
ットのソート順を気にせずに実行でき、実行できるのはソート順に無関係な処理のみに限り、処理の後のソ ート順がクエリ及び動作環境によって様々に変わり得る [5]。SDTM 及び ADaM データセットのようにキー 変数が存在するデータセットについてはソート順を ORDER BY 句で指定できる。キー変数が存在しないデー タセット(例:空行を入れるなどして体裁を整えた解析図表のデータセット)は、データステップで扱うべ きである。 1.2 SORT プロシジャとの比較 SQL プロシジャの ORDER BY 句は SORT プロシジャに対応する。SORT プロシジャはオプションを特に指 定しない限り安定ソートであるが、ORDER BY 句によるソートは不安定ソートである [5] [6]。SDTM 及び ADaM のデータセットはキー変数で一意にソートできるので、不安定ソートによる問題は発生しない。SQL プロシジャの ORDER BY 句の利点は、SELECT 句にない変数でソートできること(例 1.2a;ログに NOTE が 出力される)及び ORDER BY 句で演算が可能なことである(例 1.2b;ボディマス指数でソート) 。これらの 性質から、SORT プロシジャよりも複雑なソートが行いやすい。 例 1.2a proc sql; create table OUT as select name from SASHELP.CLASS order by age ; quit; NOTE: 指定したクエリには SELECT 句にない項目によるソートが含まれます。 例 1.2b proc sql; create table OUT as select * from SASHELP.CLASS order by weight/height**2 ; quit; 1.3 MEANS プロシジャとの比較 算出できる要約統計量の種類は MEANS プロシジャの方が多いが、解析図表によっては SQL プロシジャの 集計関数のみで対応できる。SQL プロシジャの利点は、出力データセットの形を指定しやすいこと及び多数 のオプションを覚える必要がないことである。SQL プロシジャの COUNT 関数で 0 例の集計を行うコードを 例 1.3 に示した(16 歳の女子が 0 人) 。SELECT 句で COUNT 関数と IFN 関数を組み合わせて 0 例を集計し、 同時にデータセットの形を決めた。MEANS プロシジャでは CLASSDATA=オプションに別に作成したクラス 50
データを指定して集計し、結果のデータセットを TRANSPOSE プロシジャで転置するといった手順になるで あろう。 例 1.3 proc sql; create table OUT as select age , count(ifn(sex = '女子', 1, .)) as f , count(ifn(sex = '男子', 1, .)) as m from SASHELP.CLASS group by age ; quit; 1.4 TRANSPOSE プロシジャとの比較 SQL プロシジャの MAX 関数と IFN/IFC 関数でデータセットを転置することができる。TRANSPOSE プロ シジャに対する利点は、転置するデータセットをソートする必要がないこと及び出力するデータセットの形 を指定しやすいことである。例 1.4 では、SDTM の Supplemental Qualifiers データセットを転置した。文字型 の IDVARVAL を数値型の XXSEQ に変換し、及び実際のデータセットでは存在しなかった QNAM の値 (QNAM3)に対応する変数も作成した。これらの処理によって、元のドメインと結合して ADaM の変数を導 出する処理が容易になる。変数 QNAM の値が QNAM1、QNAM2、...、QNAMn といくつまで続くか不定の場 合は、TRANSPOSE プロシジャを用いて、ID ステートメントに QNAM を指定して転置する必要がある。ただ し、SELECT 句で変数 QNAM1、QNAM2、...、QNAMn を定義する部分をマクロ言語の%DO ステートメント で記述すれば、SQL プロシジャでも対応できる。 例 1.4 data suppxx; length USUBJID IDVARVAL QNAM QVAL $200; input USUBJID--QVAL; cards; 01 1 QNAM1 aaa 01 1 QNAM2 bbb 01 2 QNAM1 ccc 02 1 QNAM1 ddd 51
03 1 QNAM2 eee ; run; proc sql; create table OUT as select USUBJID , input(IDVARVAL, best.) as XXSEQ , max(ifc(QNAM = 'QNAM1', QVAL, '')) as QNAM1 , max(ifc(QNAM = 'QNAM2', QVAL, '')) as QNAM2 , max(ifc(QNAM = 'QNAM3', QVAL, '')) as QNAM3 from SUPPXX group by USUBJID , XXSEQ ; quit; 2. SELECT 句における変数の導出 SQL プロシジャの SELECT 句では、データステップのように段階的に変数を導出することが難しい。しか しながら、SAS の組み込み関数、ユーザー定義フォーマット/インフォーマット及びユーザー定義関数を用 いれば、様々な処理が可能である。これらの技術は、もちろんデータステップにも応用可能である。 2.1 SAS 関数の使用 SAS の豊富な組み込み関数を用いれば、多くの処理は SELECT 句で実行可能である。SDTM 及び ADaM の プログラミングにおいては、数値を操作する基本的な関数(ROUND 関数など)に加えて、文字列を操作する 関数を 20 種類程度使えば十分である。列挙すれば、CATS、 CATX、 CMISS、 COALESCE、 COMPRESS、 FIRST、INDEX、LENGTHN、LOWCASE、MISSING、PROPCASE、PRXCHANGE、PRXMATCH、REVERSE、 SCAN、SUBSTR、TRANWRD、UPCASE といったところである [7]。これらの関数を用い、必要に応じて IFN /IFC 関数で条件分岐すれば、複雑な処理が可能である。 52
2.2 ユーザー定義フォーマット/インフォーマットの使用 条件分岐はユーザー定義フォーマット及びインフォーマットで記述できることも多い(例 2.2) 。SDTM 及 び ADaM のプログラミングでは、Define-XML のコードリストに従って値を変換する処理に適している。 例 2.2 proc format; value sex 1 = 'F' 2 = 'M' ; run; proc sql; create table OUT as select * , put(sex_std, sex.) as SEX from DAT ; quit; 2.3 ユーザー定義関数の使用 SAS の組み込み関数やユーザー定義フォーマット/インフォーマットで対応できない場合は、FCMP プロ シジャで関数をユーザー定義して SELECT 句で使用する(例 2.3) 。FCMP プロシジャの構文はデータステッ プに近く、SQL プロシジャの中でデータステップを動かす感覚でコーディングできる。ただし、SQL プロシ ジャではデータステップと異なり、ユーザー定義関数の文字型の戻り値に長さ 200 バイトが割り当てられる (SAS 社のオンラインヘルプには未記載と思われる [8]) 。 例 2.3 options cmplib = _null_; proc fcmp outlib = work.myfunc.myfunc; function pct(x, y) $10; if nmiss(x, y) ^= 0 or y = 0 then return('NA'); else do; tmp = round(x/y, 1e-10); if tmp < 0.01 then return('< 1.0%'); else return(cats(put(round(100*tmp, 1e-1), 12.1), '%')); end; endsub; run; 53
options cmplib = myfunc; data DAT; input a b; cards; 1 . 1 0 1 100 1 101 ; run; proc sql; create table OUT as select * , pct(a, b) as c from DAT ; quit; 3. マクロ言語の使用 SQL プロシジャに記述したサブクエリをマクロ化することで、繰り返しのあるクエリの可読性を上げるこ とができる。例 3 では、%i と%n のふたつのマクロを定義して SASHELP.CLASS を集計した。%i は項目(Item) の行を得るサブクエリを、%n は人数を集計するサブクエリを実現する。なお、データセット OUT は、もは やデータベースの構造ではないので、以降はデータステップで体裁を調整するべきである。1 行ずつ集計して UNION 句で縦結合する解析図表の作成方法は、実行時間は長くなるが、集計項目が始めから決まっている行 数の確定した図表では、大きな問題にならない場合が多い。 例3 %macro i(s, out1); (select &s. as s 54
, &out1. as out1 from SASHELP.CLASS(obs = 1)) %mend i; %macro n(s, out1, where); (select &s. as s , &out1. as out1 , count(name) as out2 from SASHELP.CLASS where &where.) %mend n; proc sql; create table OUT as %i(1, '性別') outer union corr %n(2, '女子', %str(SEX = '女子')) outer union corr %n(3, '男子', %str(SEX = '男子')) outer union corr %n(4, 'その他', %str(SEX not in ('女子', '男子'))) ; quit; 結語 SQL プロシジャの意義は次の 3 点である。1. SQL プロシジャのみで多くの処理が完結すること。データス テップや様々なプロシジャを用いるよりも、見通し良くプログラミングができる。本稿では、この点を中心 に説明した。2. データベースの構造を意識できること。SQL が得意な処理とデータステップが得意な処理の 区別がつくようになる。3. SAS 以外のシステムでも、そのシステムが SQL をサポートしていれば、ある程度 プログラミングができること。これらは、いずれも筆者の強い実感である。入社時にデータハンドリングの 未経験者が多い職場では特に、SQL プロシジャを学ぶ意義は大きいと思う。 55
引用文献 1. SAS 9.4 Base Programming – Performance Based. (オ ン ラ イ ン) (引 用 日: 2021 年 9 月 10 日.) https://www.sas.com/ja_jp/certification/exam-content-guides/base-programming-specialist.html. 2. SAS 9.4 Advanced Programming. (オ ン ラ イ ン) (引 用 日: 2021 年 9 月 10 日.) https://www.sas.com/ja_jp/certification/exam-content-guides/advanced-programmer-sas94.html. 3. SAS® 9.4 SQL プ ロシ ジ ャユ ーザ ー ガイ ド第 2 版. (オン ラ イン) (引 用日: 2021 年 9 月 10 日.) https://www.sas.com/offices/asiapacific/japan/service/help/pdf/v94/sqlproc.pdf. 4. 舟尾暢男, 高浪洋平. 統計解析ソフト「SAS」. 新宿区 : 株式会社カットシステム, 2015. ページ: 92. 5. ORDER BY Clause. SAS SQL Procedure User’s Guide. (オンライン) SAS Institute Inc. (引用日: 2021 年 9 月 10 日.) https://documentation.sas.com/doc/en/pgmsascdc/9.4_3.5/sqlproc/n0gwogdxntzooun1azrzwrwrqvzq.htm. 6. SORT Procedure. Base SAS Procedures Guide. (オンライン) SAS Institute Inc. (引用日: 2021 年 9 月 10 日.) https://documentation.sas.com/doc/en/pgmsascdc/9.4_3.5/proc/p1nd17xr6wof4sn19zkmid81p926.htm. 7. Dictionary of Functions and CALL Routines. (オンライン) SAS Institute Inc. (引用日: 2021 年 9 月 10 日.) https://documentation.sas.com/doc/en/pgmsascdc/9.4_3.5/lefunctionsref/p1q8bq2v0o11n6n1gpij335fqpph.htm. 8. FCMP Procedure. Base SAS Procedures Guide. (オンライン) SAS Institute Inc. (引用日: 2021 年 9 月 10 日.) https://documentation.sas.com/doc/en/pgmsascdc/9.4_3.5/proc/n10vesidziklh1n1l7kidq4dqd0r.htm. 56
人口知能 ・ AI 57
SAS Viyaではじめるニューラルネットワーク ○矢田 真城1 魚住 龍史2 1 京都大学大学院医学研究科 臨床統計学講座 2 京都大学大学院医学研究科 医学統計生物情報学 Let’s start neural networks using SAS Viya! Shinjo Yada1 and Ryuji Uozumi2 1 Department of Clinical Biostatistics, Graduate School of Medicine Kyoto University 2 Department of Biomedical Statistics and Bioinformatics, Kyoto University Graduate School of Medicine 要旨 近年,AI を活用したサービスの提供やビジネスへの展開がメディアを賑わせており,機械学習,深層学習 (ディープラーニング)といった用語を見聞きすることが多くなった.機械学習は AI に内包される概念で あり,ディープラーニングは機械学習の 1 種である.ディープラーニングでは,生物の神経回路の構造を模 倣したニューラルネットワークが礎となっている.そこで本稿では,ニューラルネットワークの中で最も基 本的なネットワークである,フィードフォワード・ニューラルネットワークについてまとめ,SAS Viya の NNET プロシジャを用いた適用例を紹介する. キーワード:ディープラーニング,パーセプトロン,フィードフォワード・ニューラルネットワーク,SAS Viya,NNET プロシジャ 1. はじめに 人工知能 (Artificial Intelligence; AI) というコトバが初めて登場し,AI がひとつの研究分野として確立され たのは,1956 年にダートマス大学で開催された「人工知能に関するダートマスの夏期研究会」(The Dartmouth Summer Research Project on Artificial Intelligence)であるとされる. AI は現在 3 回目のブームを迎えており,1950 年代から 1960 年代の第 1 次ブームは「探索・推論の時 代」 ,1980 年代の第 2 次ブームは「知識の時代」 ,2000 年代から現在までの第 3 次ブームは「機械学習と特 徴表現学習の時代」であるといえる(日本ディープラーニング協会, 2018) .第 1 次ブームでは,初期状態か ら目的の状態に至るまでの変化について場合分けを行う「探索」と,それまでに蓄積された知識をもとに未 知の事柄を予想する「推論」により,コンピュータに問題を解かせることが研究された.しかし当時のコン ピュータ性能では取り扱える範囲が限定され実用化が困難であり,枢要な技術であったパーセプトロンの限 58
界が証明されたことで第 1 次ブームは終わりをつげた.第 2 次ブームはいわゆるエキスパートシステムの開 発と利用である.エキスパートシステムとは,コンピュータが推論するために必要な情報をコンピュータの 用語で記述した「知識」として蓄積させ,その知識に基づいて推論することで,エキスパートのような判断 を下すプログラムのことである(総務省, 2016) .しかし,直面する様々な問題を解決するために必要となる 膨大の知識の全てをコンピュータの用語で記述することは困難であり,また多層化することにより生じる問 題を回避できず,再び冬の時代を迎えた. 第 3 次 AI ブームの端緒は,ディープラーニングの登場である.ディープラーニングは機械学習の 1 種で ある.機械学習は,その名のとおり「学習」する「機械」であるが,ただ単に与えられたデータを丸暗記す るのではなく,人間が定義する特徴を用いて与えられたデータから興味のある事象の背後にある法則を見出 し,未知の状況に対する結果を予測する.ディープラーニングはデータを読み込んでいくうちに AI 自らが 特徴を定めることが大きな相違点といえる.そのキーとなるのが,生物の神経細胞(ニューロン)をヒント に作られたニューラルネットワークである. ニューラルネットワークは,生物の神経細胞が構成するネットワークをコンピュータ上で模倣したもので あり,ニューラルネットワークの原型がパーセプトロン(Rosenblatt, 1957, 1958)である.ニューラルネッ トワークでは,データが入力されると,入力層で処理がなされ,中間層(「かくれ層」ともよばれる)に送 られる.ひとつ前の中間層を入力層としてデータの特徴を抽出した中間層を作り,これを入力層とみなして 更にデータの特徴を抽出し次の中間層を作る.中間層を多重化しこれを何回も繰り返すことで,より次元の 高い特徴量を抽出することが可能となる.ディープ・ニューラルネットワークは,多数の層をもち深いニュ ーラルネットワークのことであり,フィードフォワード・ニューラルネットワーク(feedforward neural network; FNN),畳み込みニューラルネットワーク(convolutional neutral network; CNN),リカレント・ニュー ラルネットワーク(recurrent neural network; RNN),変分オートエンコーダ(variational autoencoder; VAE),敵対 的生成ネットワーク(generative adversarial network; GAN)など,様々なタイプのディープ・ニューラルネット ワークが提案されてきた.それぞれ用途があり,畳み込みニューラルネットワークは画像診断に,リカレン ト・ニューラルネットワークは音声認識やテキスト分析に,変分オートエンコーダや敵対的生成ネットワー クは画像生成に,それぞれ用いられている.SAS では,SAS Viya の製品のひとつ SAS Visual Data Mining and Machine Learning にてこれらを適用するための機能が提供されており(SAS Institute Inc., 2019),これまでにも SAS ユーザー総会においてチュートリアルが組まれ(小野, 2018, 2019) ,CNN に関する報告(木口亮 ら,2018, 藤田ら,2019)や SAS Viya に関する解説が行われてきた(畝身, 2020, 小野, 2020, 森岡, 2020) . 本稿では,まずニューラルネットワークの原型であるパーセプトロンについて簡単に説明する.その後, ニューラルネットワークの中で最も基本的なネットワークである,フィードフォワード・ニューラルネット ワーク(FNN)について解説を行い,SAS Viya の NNET プロシジャによる FNN の適用方法を報告する. 2. ニューラルネットワーク 2.1. パーセプトロン パーセプトロン(perceptron)は,線形識別関数のひとつであり,ニューラルネットワークのベースとなって いる.その始まりとされる Rosenblatt(1958)が提案した photo-perceptron は,S-units, A-units, response cells から 構成されていた.刺激は,S-units にて有無の 2 値データもしくは刺激強度に比例するパルス波または周波数 となると想定し,S-units での応答は,projection area と association area とで構成される A-units に転送され, 59
最後に response cells へと達すると考えられた.Rosenblatt(1958)のモデルは,S-units, projection area, association area, response cells の 4 つの層から構成されるパーセプトロンとみなすことができる.最も簡単な パーセプトロンは,入力層と出力層の 2 つの層からなる単純パーセプトロンであり,図 2.1 はその一例であ る.例えば図 2.1 において,入力データ x = (x1, x2)T に対し出力 z から 2 つのクラス(クラス 1, クラス 2)を 識別したい場合,符号関数 sgn(・)を用いて (1) 𝑧𝑧 = sgn�g(𝐱𝐱)� = sgn(𝐰𝐰 𝐓𝐓 𝐱𝐱 + 𝑏𝑏) と表すことができる.ここに,w は x1, x2 に対する重み w1, w2 を成分とする列ベクトルであり,z≧0 ならク ラス 1C1,それ以外はクラス 2 と判定することができる. x1 z x2 入力層 出力層 図 2.1:入力層ユニット数 2,出力層ユニット数 1 からなる単純パーセプトロン (1)のように,入力層が 2 つのユニットで,出力層が 1 つのユニットで構成されるパーセプトロンを用いて 2 つのクラスに識別することは,x1 と x2 で表現される 2 次元平面を 2 分割するような判別直線を見つけるこ とである.もし入力層が n 個のユニットで構成されているのであれば,n 次元空間を(n-1) 次元の超平面に よって 2 つの部分空間に分割することになる.パーセプトロンの重み w は,与えられたデータに対して正 しく分類されたデータには罰則を与えず,誤って分類されたデータに|wTx|の大きさに比例する罰則を与えた 損失関数を考え,この損失関数を最小化するように推定される.これはデータを誤分類したときに重み w を修正する,誤り訂正型の方法といえる.しかし,この学習アルゴリズムでは,与えられたデータが線形非 分離である場合,永遠に厳密解に辿りつけないことが証明されている(Minsky and Papert, 1987). 図 2.2 は,単純パーセプトロンでは解くことができない,排他的論理和問題(XOR 問題)の一例である. 小野(2019),原田(2017)を参考に作図した.図 2.2 では,2 つの入力データ x1, x2 に対し,いずれか一方 が 1 のときにはクラス 1,それ以外にはクラス 2 と分類する状況を表している.入力層と出力層の 2 層から なるネットワークでは,この簡単な分類問題にすら対応できない. x2 1 1 0 x1 図 2.2:排他的論理和問題の例.入力データ x1, x2 に対しいずれかが 1 のときに クラス 1(●)と分類し,それ以外にはクラス 2( 60 )と分類する状況を表す.
図 2.2 の状況に対しては,図 2.3 のように入力層と出力層との間にひとつ層を加えることでこの問題を解 くことができる.入力層と出力層との間にある層を中間層あるいは隠れ層とよび,入力層,中間層,出力層 の 3 つ以上の層からなるパーセプトロンを多層パーセプトロンという. z1 x1 z z2 x2 入力層 中間層 出力層 図 2.3:入力層,中間層,出力層の 3 つからなる多層パーセプトロン 図 2.3 において中間層への入力を z1, z2 とし 3 (2) 𝑧𝑧1 = sgn �−𝑥𝑥1 − 𝑥𝑥2 + � 1 2 (3) 𝑧𝑧2 = sgn �𝑥𝑥1 + 𝑥𝑥2 − � 2 とおくと,(x1, x2) = (1, 0)では z1 = sgn(1/2) = 1, z2 = sgn(1/2) = 1,(x1, x2) = (1, 1)では z1 = sgn(-1/2) = -1, z2 = sgn(3/2) = 1,(x1, x2) = (0, 1)では z1 = sgn(1/2) = 1, z2 = sgn(1/2) = 1,(x1, x2) = (0, 0)では z1 = sgn(3/2) = 1, z2 = sgn(1/2) = -1 となる.これは,入力層にある 2 つのユニットと中間層の上側のユニットから構成されるネットワ ークにより,x1 と x2 で表現される 2 次元平面が,直線 x1+ x2 -3/2 = 0 を境として,(x1, x2) = (1, 1)を含む部分 空間と,(x1, x2) = (0, 0), (1, 0), (0, 1)を含む部分空間とに分割されること(図 2.4a) ,入力層にある 2 つのユニ ットと中間層の下側のユニットから構成されるネットワークにより,x1 と x2 で表現される 2 次元平面が,直 線 x1+ x2 -1/2 = 0 を境として,(x1, x2) = (0, 0)を含む部分空間と,(x1, x2) = (1, 0), (0, 1), (1, 1)を含む部分空間と に分割されること(図 2.4b)を意味する.図 2.2 の出力 z に対して(2), (3)を用い (4) 𝑧𝑧 = sgn(𝑧𝑧1 + 𝑧𝑧2 − 1) とおくと,(x1, x2) = (1, 0)では z = sgn(1) = 1,(x1, x2) = (1, 1)では z = sgn(-1) = -1,(x1, x2) = (0, 1)では z = sgn(1) = 1,(x1, x2) = (0, 0)では z = sgn(-1) = 1 となる.直線 x1+ x2 -3/2 = 0 と直線 x1+ x2 -1/2 = 0 を組み合わせることに より,x1 と x2 で表現される 2 次元平面を,(x1, x2) = (1, 0), (0, 1)が含まれる部分空間と,(x1, x2) = (1, 1), (0, 0) が含まれる部分空間とに分類することができる(図 2.4c). x2 x2 x2 1 1 1 0 1 (a) x1 1 0 (b) x1 1 0 x1 (c) 図 2.4:図 2.2 に示した排他的論理和問題の解.(a)では,x1 と x2 の 2 次元平面が,直線 x2 = -x1 + 3/2 により, 点(1, 1)を含む部分空間と残り 3 点を含む部分空間に分割されている.(b)では,直線 x2 = -x1 + 1/2 により,点 (0, 0)を含む部分空間と残り 3 点を含む部分空間に分割されている.(c)では,2 つの直線 x2 = -x1 + 3/2, 直 x2 = 61
-x1 + 1/2 により,点(1, 0)と点(0, 1)を含む部分空間と残り 2 点を含む部分空間に分割される. (2)から(4)の多層パーセプトロンでは,ユニットの入出力に符号関数を用いた.符号関数は 1 または-1 の みをとる不連続な非線形の関数であり,符号関数の代わりに連続的で微分可能な非線形性をもつ関数を用い ることもできる.ユニットの入出力の関数(活性化関数とよばれる)にはロジットシグモイド関数 h(a) =1/(1+exp(-a)),ハイパーボリックタンジェント関数 h(a) = tanh(a) = (ea-e-a)/(ea+e-a),正規化線形関数 (rectified linear function; ReLU) h(a) = max(0, a)などが用いられる.ニューラルネットワークは,図 2.3 のように,複数 のパーセプトロンを複数組み合わせたものであり,ディープ・ニューラルネットワークというネーミングは 中間層の数が多く深いことに由来する. 2.2. フィードフォワード・ニューラルネットワーク フィードフォワード・ニューラルネットワークとは,ある層のパーセプトロンが次の層のパーセプトロン に結合され,情報がある層から次の層へと順方向に伝えられるニューラルネットワークのことである.図 2.5 にそのイメージを示した.入力層を 0 層目,出力層を L 層目として,入力層に入力データ x1, x2,…,xD が 与えられ,(L-1)個の中間層を経て出力層から値(結果)が出力される状況を表している.入力層から出力層 への情報の伝達は,常に順方向でありループや逆方向への伝達は存在しない.このため,情報伝達の計算 は,隣り合う 2 つの層について定式化すればよい. ・・・ x1 ・・・ ・・・ ・・・ ・・・ ・・・ ・・・ ・・・ x2 xD 1層目 l層目 入力層 L層目 出力層 図 2.5:フィードフォワード・ニューラルネットワークのイメージ図.入力層を 0 層目,出力層を L 層目と し,D 個の入力データが情報としてネットワークに与えられ,(L-1)個の中間層を経て,出力層からネットワ ークの結果が出力されるイメージを図示した. 2.2.1. モデル化 入力層,(L-1)個の中間層,出力層をもつフィードフォワード・ニューラルネットワークにおいて,l 層目 が𝑢𝑢𝑙𝑙 個のユニットから構成され,(l+1)層目が𝑢𝑢(𝑙𝑙+1) 個のユニットから構成されているとする (l = 0, 1, …, L(𝑙𝑙) (𝑙𝑙+1) 1).l 層目の i 番目のユニットからの出力を𝑧𝑧𝑖𝑖 , (l+1)層目の j 番目のユニットへの入力を𝑎𝑎𝑗𝑗 (𝑙𝑙+1) 目のユニットからの出力を𝑧𝑧𝑗𝑗 , (l+1)層の j 番 (𝑙𝑙+1) , l 層目の i 番目のユニットと(l+1)層目の j 番目のユニットとの重みを𝑤𝑤𝑖𝑖,𝑗𝑗 (𝑙𝑙+1) l 層目から(l+1)層目へのバイアスを𝑏𝑏𝑗𝑗 と表すとき(i = 1, 2, …,𝑢𝑢(𝑙𝑙) ; j = 1, 2,…,𝑢𝑢(𝑙𝑙+1) ), (𝑙𝑙+1) (𝑙𝑙+1) 𝑢𝑢(𝑙𝑙) (𝑙𝑙+1) (𝑙𝑙) 𝑎𝑎𝑗𝑗 = ∑𝑖𝑖=1 𝑤𝑤𝑖𝑖,𝑗𝑗 𝑧𝑧𝑖𝑖 + 𝑏𝑏𝑗𝑗 (j = 1, 2,…,𝑢𝑢(𝑙𝑙+1) ) となり,(l+1)層目の活性化関数(activation function)を h(l+1)として 62 (5) ,
(𝑙𝑙+1) 𝑧𝑧𝑗𝑗 (𝑙𝑙+1) = ℎ(𝑙𝑙+1) (𝑎𝑎𝑗𝑗 となる.(5), (6)は (𝑙𝑙) (𝑙𝑙) ) (j = 1, 2,…,𝑢𝑢(𝑙𝑙+1) ) (𝑙𝑙) (6) 𝒛𝒛(𝐥𝐥) = (𝑧𝑧1 , 𝑧𝑧2 , … , 𝑧𝑧𝑢𝑢(𝑙𝑙) )𝑇𝑇 (𝑢𝑢(𝑙𝑙) ×1) (𝑙𝑙+1) 𝒂𝒂(𝐥𝐥+𝟏𝟏) = (𝑎𝑎1 (𝑙𝑙+1) 𝒃𝒃(𝐥𝐥+𝟏𝟏) = (𝑏𝑏1 𝐖𝐖 (𝐥𝐥+𝟏𝟏) = � (𝑙𝑙+1) , 𝑏𝑏2 (𝑙𝑙+1) 𝑤𝑤1,1 ⋮ (𝑙𝑙+1) 𝑤𝑤𝑢𝑢(𝑙𝑙),1 (𝑙𝑙+1) 𝒛𝒛(𝐥𝐥+𝟏𝟏) = (𝑧𝑧1 とおけば, (𝑙𝑙+1) , 𝑎𝑎2 (𝑙𝑙+1) , … , 𝑏𝑏𝑢𝑢(𝑙𝑙+1) )𝑇𝑇 (𝑢𝑢(𝑙𝑙+1) ×1) ⋯ (𝑙𝑙+1) 𝑤𝑤1,𝑢𝑢(𝑙𝑙+1) � (𝑢𝑢(𝑙𝑙) ×𝑢𝑢(𝑙𝑙+1) ) ⋱ ⋮ (𝑙𝑙+1) ⋯ 𝑤𝑤𝑢𝑢(𝑙𝑙),𝑢𝑢(𝑙𝑙+1) (𝑙𝑙+1) , 𝑧𝑧2 (𝑙𝑙+1) , … , 𝑎𝑎𝑢𝑢(𝑙𝑙+1) )𝑇𝑇 (𝑢𝑢(𝑙𝑙+1) ×1) (𝑙𝑙+1) , … , 𝑧𝑧𝑢𝑢(𝑙𝑙+1) )𝑇𝑇 (𝑢𝑢(𝑙𝑙+1) ×1) 𝒂𝒂(𝐥𝐥+𝟏𝟏) = (𝐖𝐖 (𝐥𝐥+𝟏𝟏) )𝐓𝐓 𝐳𝐳 (𝐥𝐥) + 𝒃𝒃(𝐥𝐥+𝟏𝟏) (𝑢𝑢(𝑙𝑙+1) ×1) 𝒛𝒛(𝐥𝐥+𝟏𝟏) = 𝒉𝒉(𝒍𝒍+𝟏𝟏) (𝒂𝒂(𝐥𝐥) ) (𝑢𝑢(𝑙𝑙+1) ×1) と簡潔に表記される(l = 0, 1, …, L-1). 2.2.2. パラメータの決定 入力層(0 層目),(L-1)個の中間層,出力層(L 層目)をもつフィードフォワード・ニューラルネットワー クにおいて,パラメータ W(1), W(2),…,W(L), b(1), b(2),…,b(L)(これらをまとめて𝛉𝛉と表記する)を推定するため の方法として,勾配降下法(gradient descent method), 確率的勾配降下法(stochastics descent method)などが用い られる.勾配降下法,確率的勾配降下法ともに,目的関数を最小化するようにパラメータを推定する.経験 リスクを目的関数とし,訓練データを用いてパラメータが収束するまで反復計算を行う. n 番目(n = 1, 2,…, N)の入力データベクトルを xn,xn と対をなす教師情報ベクトルを tn,n 番目の訓練デー タ𝐷𝐷𝑛𝑛 = {𝐱𝐱 𝐧𝐧 , 𝐭𝐭 𝐧𝐧 }での損失関数を Qn(𝐱𝐱 𝐧𝐧 , 𝐭𝐭 𝐧𝐧 ;𝛉𝛉),N 組の訓練データでの経験リスクを Q(𝛉𝛉),r 回目の反復計算後 のパラメータを θ(r)と表すとき,勾配降下法では(r + 1)回目でのパラメータ𝛉𝛉(𝐫𝐫+𝟏𝟏) を 𝛉𝛉(𝐫𝐫+𝟏𝟏) = 𝛉𝛉(𝐫𝐫) − 𝜂𝜂∇𝜃𝜃 𝑄𝑄(𝛉𝛉) = 𝛉𝛉(𝐫𝐫) − 𝜂𝜂 ∑𝑁𝑁 𝑛𝑛=1 ∇𝜃𝜃 𝑄𝑄𝑛𝑛 (𝐱𝐱 𝐧𝐧 , 𝐭𝐭 𝐧𝐧 ; 𝛉𝛉) (7) により更新させる.ここに η は学習係数(learning rate;学習率ともいう,本稿では学習係数で統一する)で あり,∇はベクトル微分演算子である.確率的勾配降下法では,(r + 1)回目でのパラメータ𝛉𝛉(𝐫𝐫+𝟏𝟏) を 𝛉𝛉(𝐫𝐫+𝟏𝟏) = 𝛉𝛉(𝐫𝐫) − 𝜂𝜂∇𝜃𝜃 𝑄𝑄𝑟𝑟 �𝐱𝐱 (𝐫𝐫) , 𝐭𝐭 (𝐫𝐫) ; 𝛉𝛉� (8) により更新させる.ここで,x(r), t(r)は r 回目のパラメータ反復計算において,N 組ある訓練データ D ={𝐱𝐱 𝐧𝐧 , 𝐭𝐭 𝐧𝐧 }𝑁𝑁 𝑛𝑛=1 からランダムに選ばれた 1 組の訓練データである.勾配降下法では全ての訓練データ(N 組の訓 練データ)を用いてパラメータを更新するが,(8)で表される確率的勾配降下法では,ある 1 組の訓練データ のみを用いてパラメータを更新する.1 組の訓練データのみを用いるため,全ての訓練データを用いる場合 に比べコンピュータへの計算負荷は小さくなる反面,目的関数の勾配が乖離していくことが予想される.そ こで,N 組の訓練データをランダムに並べ替えた上で,訓練データを分割することで複数個のサブセットを 用意し,いずれか 1 つのサブセットを用いて(r + 1)回目でのパラメータを更新する方法が考えられている. 簡潔のため,Qn(xn, tn; θ)を単に Qn と表記する.(7), (8)のとおり,勾配降下法,確率的勾配降下法ともに, (𝑙𝑙) (𝑙𝑙) 1 次の微分∂𝑄𝑄𝑛𝑛 / ∂𝑤𝑤𝑖𝑖,𝑗𝑗 , ∂𝑄𝑄𝑛𝑛 / ∂𝑏𝑏𝑗𝑗 が必要となる(l = 0, 1,…,L-1; i = 1,2,…,𝑢𝑢 (𝑙𝑙) ; j = 1, 2,…,𝑢𝑢(𝑙𝑙+1) ). 偏微分の連鎖律 より ∂𝑄𝑄𝑛𝑛 (𝑙𝑙) = ∂𝑤𝑤𝑖𝑖,𝑗𝑗 (𝑙𝑙) 𝜕𝜕𝑄𝑄𝑛𝑛 𝜕𝜕𝑎𝑎𝑗𝑗 (𝑙𝑙) (9) (𝑙𝑙) 𝜕𝜕𝑎𝑎𝑗𝑗 𝜕𝜕𝑤𝑤𝑖𝑖,𝑗𝑗 63
であり(5)より (𝑙𝑙) 𝜕𝜕𝑎𝑎𝑗𝑗 = (𝑙𝑙) 𝜕𝜕𝑤𝑤𝑖𝑖,𝑗𝑗 だから ∂𝑄𝑄𝑛𝑛 𝜕𝜕 (𝑙𝑙) 𝜕𝜕𝑤𝑤𝑖𝑖,𝑗𝑗 (𝑙𝑙−1) �∑𝑢𝑢𝑖𝑖=1 𝑤𝑤𝑖𝑖,𝑗𝑗 𝑧𝑧𝑖𝑖 (𝑙𝑙) (𝑙𝑙−1) � = 𝑧𝑧𝑖𝑖 (𝑙𝑙−1) (𝑙𝑙) (𝑙𝑙−1) + 𝑏𝑏𝑗𝑗 � = 1 (𝑙𝑙) (𝑙𝑙−1) 𝜕𝜕𝑄𝑄𝑛𝑛 = 𝑧𝑧𝑖𝑖 (𝑙𝑙) ∂𝑤𝑤𝑖𝑖,𝑗𝑗 同様に, (𝑙𝑙) = (𝑙𝑙) ∂𝑏𝑏𝑗𝑗 (𝑙𝑙) 𝜕𝜕𝑏𝑏𝑗𝑗 だから ∂𝑄𝑄𝑛𝑛 (𝑙𝑙) ∂𝑏𝑏𝑗𝑗 (𝑙𝑙) 𝜕𝜕𝑎𝑎𝑗𝑗 𝜕𝜕𝑏𝑏𝑗𝑗 において (𝑙𝑙) (𝑙𝑙) 𝜕𝜕𝑄𝑄𝑛𝑛 𝜕𝜕𝑎𝑎𝑗𝑗 ∂𝑄𝑄𝑛𝑛 𝜕𝜕𝑎𝑎𝑗𝑗 (𝑙𝑙) 𝜕𝜕𝑎𝑎𝑗𝑗 𝜕𝜕 = 𝜕𝜕𝑏𝑏𝑗𝑗 = 𝜕𝜕𝑎𝑎𝑗𝑗 (𝑙𝑙) (𝑙𝑙−1) 𝑢𝑢 �∑𝑖𝑖=1 𝑤𝑤𝑖𝑖,𝑗𝑗 𝑧𝑧𝑖𝑖 𝜕𝜕𝑄𝑄𝑛𝑛 (10) (𝑙𝑙) (𝑙𝑙−1) となり,(9), (10)から,1 次の微分情報には𝑧𝑧𝑖𝑖 (𝑙𝑙) (𝑙𝑙−1) と∂𝑄𝑄𝑛𝑛 / ∂𝑎𝑎𝑖𝑖 が必要なことがわかる.𝑧𝑧𝑖𝑖 は,r 回目の反復 (𝑙𝑙) 計算後のパラメータ θ(r)があれば(5), (6)を用いて入力層から出力層の順に計算できるので,あとは∂𝑄𝑄𝑛𝑛 / ∂𝑎𝑎𝑖𝑖 (𝑙𝑙) (𝑙𝑙) をどう計算するかが問題となる.𝛿𝛿𝑖𝑖 ≡∂𝑄𝑄𝑛𝑛 / ∂𝑎𝑎𝑖𝑖 はユニットの誤差(error)とよばれており,以下のようにし て計算できる.多変数の連鎖律より (𝑙𝑙) 𝛿𝛿𝑖𝑖 = ∂𝑄𝑄𝑛𝑛 (𝑙𝑙) = ∂𝑎𝑎𝑖𝑖 𝜕𝜕𝑄𝑄𝑛𝑛 (𝑙𝑙+1) 𝜕𝜕𝑎𝑎1 において(5), (6)より (𝑙𝑙+1) ∂𝑎𝑎𝑗𝑗 = (𝑙𝑙) ∂𝑎𝑎𝑖𝑖 であるから (𝑙𝑙) 𝛿𝛿𝑖𝑖 𝜕𝜕 (𝑙𝑙) 𝜕𝜕𝑎𝑎𝑖𝑖 (𝑙𝑙+1) = ∑𝑢𝑢𝑗𝑗=1 (𝑙𝑙) (𝑙𝑙+1) 𝜕𝜕𝑎𝑎1 (𝑙𝑙) + 𝜕𝜕𝑎𝑎𝑖𝑖 𝜕𝜕𝑄𝑄𝑛𝑛 (𝑙𝑙+1) 𝜕𝜕𝑎𝑎2 𝜕𝜕𝑎𝑎𝑖𝑖 𝜕𝜕𝑄𝑄𝑛𝑛 (𝑙𝑙+1) 𝑢𝑢 𝜕𝜕𝑎𝑎 (𝑙𝑙+1) (𝑙𝑙+1) 𝑢𝑢 (𝑙𝑙) 𝜕𝜕𝑎𝑎𝑖𝑖 𝜕𝜕𝑎𝑎 (𝑙𝑙+1) (𝑙𝑙) 𝜕𝜕ℎ (𝑙𝑙) (𝑎𝑎 (𝑙𝑙) ) 𝑖𝑖 (𝑙𝑙) 𝜕𝜕𝑎𝑎𝑖𝑖 (𝑙𝑙) = 𝑖𝑖 (𝑙𝑙) 𝜕𝜕ℎ (𝑙𝑙) (𝑎𝑎𝑖𝑖 ) (𝑙𝑙) 𝜕𝜕𝑎𝑎𝑖𝑖 (𝑙𝑙) 𝜕𝜕𝑄𝑄𝑛𝑛 (𝑙𝑙+1) 𝜕𝜕𝑎𝑎𝑗𝑗 (𝑙𝑙+1) 𝜕𝜕𝑎𝑎𝑗𝑗 (𝑙𝑙) 𝜕𝜕𝑎𝑎𝑖𝑖 (𝑙𝑙) (𝑙𝑙+1) (𝑙𝑙) (𝑙𝑙+1) ∑𝑢𝑢𝑗𝑗=1 𝑤𝑤𝑖𝑖,𝑗𝑗 𝛿𝛿𝑗𝑗 . (𝑙𝑙−1) つまり,l 層目の誤差∂𝑄𝑄𝑛𝑛 / ∂𝑎𝑎𝑖𝑖 には,(l-1)層目の出力𝑧𝑧1 (𝑙𝑙) (𝑙𝑙+1) = ∑𝑢𝑢𝑗𝑗=1 𝑖𝑖 (𝑙𝑙+1) 𝑤𝑤𝑖𝑖,𝑗𝑗 𝜕𝜕𝑎𝑎𝑗𝑗 (𝑙𝑙) + ⋯ + (𝑙𝑙) (𝑙𝑙) 𝜕𝜕 (𝑙𝑙+1) (𝑙𝑙) (𝑙𝑙+1) (𝑙𝑙) (𝑙𝑙) 𝜕𝜕ℎ (𝑎𝑎𝑖𝑖 ) 𝑧𝑧𝑖𝑖 � = (𝑙𝑙) �∑𝑢𝑢𝑖𝑖=1 𝑤𝑤𝑖𝑖,𝑗𝑗 ℎ(𝑙𝑙) (𝑎𝑎𝑖𝑖 )� = 𝑤𝑤𝑖𝑖,𝑗𝑗 (𝑙𝑙) 𝜕𝜕𝑎𝑎 𝜕𝜕𝑎𝑎 �∑𝑢𝑢𝑖𝑖=1 𝑤𝑤𝑖𝑖,𝑘𝑘 𝜕𝜕𝑄𝑄𝑛𝑛 (𝑙𝑙+1) 𝜕𝜕𝑎𝑎2 (𝑙𝑙) (11) (𝑙𝑙−1) , 𝑧𝑧2 (𝑙𝑙+1) の重み𝑤𝑤1,𝑖𝑖 ,𝑤𝑤2,𝑖𝑖 ,…,𝑤𝑤𝑢𝑢(𝑙𝑙),𝑖𝑖 のほかに,(l+1)層目の誤差𝛅𝛅(𝐥𝐥+𝟏𝟏) = (𝛿𝛿1 (𝑙𝑙−1) , … , 𝑧𝑧𝑢𝑢(𝑙𝑙−1) , (l-1)層目と l 層目のユニット間 (𝑙𝑙+1) , 𝛿𝛿2 (𝑙𝑙+1) , … , 𝛿𝛿𝑢𝑢(𝑙𝑙+1) )T が必要ということにな る.ユニットの誤差を情報の伝播とは逆方向に求めるこの方法は,誤差逆伝播法(error back propagation)とよ ばれている(Rumelhart et al., 1986).出力層から入力層への順に計算していくため,はじめに出力層における ユニットの誤差を求めておく必要がある.出力層からの出力ℎ(𝐿𝐿) �𝒂𝒂(𝐋𝐋) � = (𝐿𝐿) (𝐿𝐿) (𝐿𝐿) (ℎ(𝐿𝐿) �𝑎𝑎1 �,ℎ(𝐿𝐿) �𝑎𝑎2 �,,…,ℎ(𝐿𝐿) �𝑎𝑎𝑢𝑢(𝐿𝐿) �)T (u(L)×1)に対応する教師情報ベクトルを t = (t1, t2, …,𝑡𝑡𝑢𝑢𝐿𝐿 )T(u(L)×1)と表す とき,各訓練データでの損失関数として,例えば 2 乗誤差を用いるのであれば 𝑇𝑇 1 1 (𝐿𝐿) (𝐿𝐿) 𝑢𝑢 (ℎ(𝐿𝐿) �𝑎𝑎𝑖𝑖 � − 𝑡𝑡𝑖𝑖 )2 𝑄𝑄𝑛𝑛 = �𝒉𝒉(𝑳𝑳) �𝒂𝒂(𝐋𝐋) � − 𝒕𝒕� �𝒉𝒉(𝑳𝑳) �𝒂𝒂(𝐋𝐋) � − 𝒕𝒕� = ∑𝑖𝑖=1 2 2 となり,このとき出力層における各ユニットの誤差は (𝐿𝐿) 𝛿𝛿𝑖𝑖 (𝐿𝐿) = (ℎ(𝐿𝐿) �𝑎𝑎𝑖𝑖 � − 𝑡𝑡𝑖𝑖 ) (𝐿𝐿) 𝜕𝜕ℎ(𝐿𝐿) (𝑎𝑎𝑖𝑖 ) (𝐿𝐿) 𝜕𝜕𝑎𝑎𝑖𝑖 (i = 1,2,…,𝑢𝑢(𝐿𝐿) ) となる.各訓練データでの損失関数として,交差エントロピー関数を用いるのであれば, 64
(𝐿𝐿) (𝐿𝐿) 𝑄𝑄𝑛𝑛 = − ∑𝑢𝑢𝑖𝑖=1 𝑡𝑡𝑖𝑖 𝑙𝑙𝑙𝑙 ℎ(𝐿𝐿) �𝑎𝑎𝑖𝑖 � となり,出力層における各ユニットの誤差は (𝐿𝐿) 𝛿𝛿𝑖𝑖 = −𝑡𝑡𝑖𝑖 (𝐿𝐿) ℎ 1 (𝐿𝐿) (𝑎𝑎𝑖𝑖 ) (𝐿𝐿) 𝜕𝜕ℎ (𝐿𝐿) (𝑎𝑎𝑖𝑖 (𝐿𝐿) 𝜕𝜕𝑎𝑎𝑖𝑖 ) (i = 1,2,…,𝑢𝑢(𝐿𝐿) ) (12) となる.フィードフォワード・ニューラルネットワークにおいて,パラメータ推定に用いられる勾配降下 法,確率的勾配降下法では,パラメータが収束するまで反復計算を行う.パラメータの反復計算において は,各ユニットの出力と各ユニットの誤差が計算できればよい.各ユニットの出力は,入力層から出力層へ と情報の流れにそって計算できる.各ユニットの誤差は,隣り合う層での誤差に関する漸化式を用い,出力 層から入力層へと情報の流れとは逆に計算する. 3. 適用例 3.1. 使用するデータとネットワークモデル 例として,Fisher (1936)の論文に掲載されたアイリス(iris)のデータをとりあげる.このデータは,アヤメ 科の花のデータであり,機械学習の練習用によく使われており,様々な媒体からのダウンロードが可能であ る.SAS では,SAS HELP ライブラリに Iris というデータセット名で格納されている(以下,「アイリスの データ」とよぶ) .アイリスのデータには,セトサ,バージカラー,バージニカの 3 つの品種に対して 50 輪 ずつ,萼片(”がくへん”)の長さ,萼片の幅,花弁の長さ,花弁の幅が測定されている.目的は,これら 4 つの測定値から,セトサ,バージカラー,バージニカのどの品種に属するかを判定することにある. 4 つの変数をもつ入力データから 3 種類の識別を行うため,入力層のユニット数は 4,出力層のユニット 数は 3 となる.簡単のため中間層の構成ユニット数を 2 と見込み,入力層,中間層,出力層の 3 層からなる ニューラルネットワークを構成する.中間層の活性化関数をハイパーボリックタンジェント関数,出力層の 活性化関数をソフトマックス関数とし,各訓練データでの損失関数を交差エントロピー関数とする.入力層 を 0 層目,中間層を 1 層目,出力層を 2 層目とおくと,中間層と入力層との関係から,中間層からの出力は (1) (1) (1) (1) (1) (2) (1) (2) (1) (2) (1) (1) 𝑡𝑡𝑡𝑡𝑡𝑡ℎ(𝑤𝑤1,1 𝑥𝑥1 + 𝑤𝑤2,1 𝑥𝑥2 + 𝑤𝑤3,1 𝑥𝑥3 + 𝑤𝑤4,1 𝑥𝑥4 + 𝑏𝑏1 ) 𝑡𝑡𝑡𝑡𝑡𝑡ℎ�𝑎𝑎1 � � (1) � = � �=� �=� � (1) (1) (1) (1) (1) (1) (1) 𝑧𝑧2 𝑡𝑡𝑡𝑡𝑡𝑡ℎ(𝑤𝑤1,2 𝑥𝑥1 + 𝑤𝑤2,2 𝑥𝑥2 + 𝑤𝑤3,2 𝑥𝑥3 + 𝑤𝑤4,2 𝑥𝑥4 + 𝑏𝑏2 ) ℎ�𝑎𝑎2 � 𝑡𝑡𝑡𝑡𝑡𝑡ℎ�𝑎𝑎2 � (1) ℎ�𝑎𝑎1 � 𝑧𝑧1 (13) 出力層と中間層との関係から,出力層における出力は (2) (2) (2) (2) 𝑒𝑒𝑒𝑒𝑒𝑒�𝑎𝑎1 � / ∑3𝑗𝑗=1 𝑒𝑒𝑒𝑒𝑒𝑒�𝑎𝑎𝑗𝑗 � (2) (2) ℎ�𝑎𝑎1 � 𝑧𝑧1 ⎛ (2) ⎞ (2) �𝑧𝑧2(2) � = �ℎ�𝑎𝑎2(2) �� = ⎜𝑒𝑒𝑒𝑒𝑒𝑒�𝑎𝑎2 � / ∑3𝑗𝑗=1 𝑒𝑒𝑒𝑒𝑒𝑒�𝑎𝑎𝑗𝑗 �⎟ (2) (2) 𝑧𝑧3 ℎ�𝑎𝑎3 � (2) (1) ⎝ 𝑒𝑒𝑒𝑒𝑒𝑒�𝑎𝑎3 � / ∑3𝑗𝑗=1 𝑒𝑒𝑒𝑒𝑒𝑒�𝑎𝑎𝑗𝑗 � (2) (1) (2) ⎠ 𝑒𝑒𝑒𝑒𝑒𝑒�𝑤𝑤1,1 𝑧𝑧1 + 𝑤𝑤2,1 𝑧𝑧2 + 𝑏𝑏1 � / ∑3𝑗𝑗=1 𝑒𝑒𝑒𝑒𝑒𝑒�𝑤𝑤1,𝑗𝑗 𝑧𝑧1 + 𝑤𝑤2,𝑗𝑗 𝑧𝑧2 + 𝑏𝑏𝑗𝑗 � ⎛ (2) (1) (2) (1) (2) ⎞ (2) (1) (2) (1) (2) = ⎜𝑒𝑒𝑒𝑒𝑒𝑒�𝑤𝑤1,2 𝑧𝑧1 + 𝑤𝑤2,2 𝑧𝑧2 + 𝑏𝑏2 � / ∑3𝑗𝑗=1 𝑒𝑒𝑒𝑒𝑒𝑒�𝑤𝑤1,𝑗𝑗 𝑧𝑧1 + 𝑤𝑤2,𝑗𝑗 𝑧𝑧2 + 𝑏𝑏𝑗𝑗 �⎟. (2) (1) (2) (1) (2) (2) (1) (2) (1) (2) 𝑒𝑒𝑒𝑒𝑒𝑒�𝑤𝑤1,3 𝑧𝑧1 + 𝑤𝑤2,3 𝑧𝑧2 + 𝑏𝑏3 � / ∑3𝑗𝑗=1 𝑒𝑒𝑒𝑒𝑒𝑒�𝑤𝑤1,𝑗𝑗 𝑧𝑧1 + 𝑤𝑤2,𝑗𝑗 𝑧𝑧2 + 𝑏𝑏𝑗𝑗 � ⎠ ⎝ ソフトマックス関数ℎ(𝑎𝑎𝑖𝑖 ) = exp(𝑎𝑎𝑖𝑖 )⁄∑𝑗𝑗 exp(𝑎𝑎𝑗𝑗 )に対して 𝜕𝜕ℎ(𝑎𝑎𝑖𝑖 ) 𝜕𝜕𝑎𝑎𝑖𝑖 = 𝜕𝜕 exp(𝑎𝑎𝑖𝑖 ) 𝜕𝜕𝑎𝑎𝑖𝑖 ∑𝑗𝑗 exp(𝑎𝑎𝑗𝑗 ) = exp(𝑎𝑎𝑖𝑖 ) ∑𝑗𝑗 exp�𝑎𝑎𝑗𝑗 �−(exp(𝑎𝑎𝑖𝑖 ))2 2 �∑𝑗𝑗 exp(𝑎𝑎𝑗𝑗 )� だから,出力層における各ユニットの誤差は = exp(𝑎𝑎𝑖𝑖 )�∑𝑗𝑗 exp(𝑎𝑎𝑗𝑗 )−1� 2 �∑𝑗𝑗 exp(𝑎𝑎𝑗𝑗 )� 65 = ℎ(𝑎𝑎𝑖𝑖 )(1 − ℎ(𝑎𝑎𝑖𝑖 )) (14)
(𝐿𝐿) 𝛿𝛿𝑖𝑖 = (12) = −𝑡𝑡𝑖𝑖 (𝐿𝐿) ℎ 1 (𝐿𝐿) �𝑎𝑎𝑖𝑖 � (𝐿𝐿) 𝜕𝜕ℎ (𝐿𝐿) �𝑎𝑎𝑖𝑖 � (𝐿𝐿) 𝜕𝜕𝑎𝑎𝑖𝑖 (2) (2) (2) (𝐿𝐿) = −𝑡𝑡𝑖𝑖 �1 − ℎ(𝐿𝐿) �𝑎𝑎𝑖𝑖 �� = −𝑡𝑡𝑖𝑖 �1 − exp(𝑎𝑎𝑖𝑖 )⁄∑𝑗𝑗 exp(𝑎𝑎𝑗𝑗 )�. (2) (2) (2) よって出力層からの出力(𝑧𝑧1 , 𝑧𝑧2 , 𝑧𝑧3 )T = �ℎ(𝐿𝐿) �𝑎𝑎1 �, ℎ(𝐿𝐿) �𝑎𝑎2 �, ℎ(𝐿𝐿) �𝑎𝑎3 ��T に対応する教師情報ベクトルを t = (t1, t2, t3)T と表すとき,出力層における各ユニットの誤差は (2) (1) (2) (1) (2) (2) (1) (2) (1) (2) (2) (1) (2) (1) (2) (2) (1) (2) (1) (2) −𝑡𝑡1 �1 − exp(𝑤𝑤1,1 𝑧𝑧1 + 𝑤𝑤2,1 𝑧𝑧2 + 𝑏𝑏1 )�∑3𝑗𝑗=1 𝑒𝑒𝑒𝑒𝑒𝑒�𝑤𝑤1,𝑗𝑗 𝑧𝑧1 + 𝑤𝑤2,𝑗𝑗 𝑧𝑧2 + 𝑏𝑏𝑗𝑗 �� (2) 𝛿𝛿1 ⎛ (2) (1) (2) (1) (2) ⎞ (2) (1) (2) (1) (2) �𝛿𝛿2(2) � = ⎜−𝑡𝑡2 �1 − exp(𝑤𝑤1,2 𝑧𝑧1 + 𝑤𝑤2,2 𝑧𝑧2 + 𝑏𝑏2 )�∑3𝑗𝑗=1 𝑒𝑒𝑒𝑒𝑒𝑒�𝑤𝑤1,𝑗𝑗 𝑧𝑧1 + 𝑤𝑤2,𝑗𝑗 𝑧𝑧2 + 𝑏𝑏𝑗𝑗 ��⎟. (2) 𝛿𝛿3 ⎝ (15) −𝑡𝑡3 �1 − exp(𝑤𝑤1,3 𝑧𝑧1 + 𝑤𝑤2,3 𝑧𝑧2 + 𝑏𝑏3 )�∑3𝑗𝑗=1 𝑒𝑒𝑒𝑒𝑒𝑒�𝑤𝑤1,𝑗𝑗 𝑧𝑧1 + 𝑤𝑤2,𝑗𝑗 𝑧𝑧2 + 𝑏𝑏𝑗𝑗 �� ⎠ ハイパーボリックタンジェント関数 h(a)に対して 𝜕𝜕ℎ(𝑎𝑎) = 𝜕𝜕𝜕𝜕 𝜕𝜕 𝜕𝜕𝜕𝜕 (tanh(𝑎𝑎)) = 𝜕𝜕 � 𝑒𝑒 𝑎𝑎 −𝑒𝑒 −𝑎𝑎 𝜕𝜕𝜕𝜕 𝑒𝑒 𝑎𝑎 +𝑒𝑒 −𝑎𝑎 �= (𝑒𝑒 𝑎𝑎 +𝑒𝑒 −𝑎𝑎 )2 −(𝑒𝑒 𝑎𝑎 −𝑒𝑒 −𝑎𝑎 )2 (𝑒𝑒 𝑎𝑎 +𝑒𝑒 −𝑎𝑎 )2 であるから,中間層における各ユニットの誤差は (1) (1) (1) (1) = 1 − 𝑡𝑡𝑡𝑡𝑡𝑡ℎ2 (𝑎𝑎) (1) (1) (1) (2) (1) (2) (1) (2) �1 − 𝑡𝑡𝑡𝑡𝑡𝑡ℎ2 (𝑤𝑤1,1 𝑥𝑥1 + 𝑤𝑤2,1 𝑥𝑥2 + 𝑤𝑤3,1 𝑥𝑥3 + 𝑤𝑤4,1 𝑥𝑥4 + 𝑏𝑏1 )��𝑤𝑤1,1 𝛿𝛿1 + 𝑤𝑤1,2 𝛿𝛿2 + 𝑤𝑤1,3 𝛿𝛿3 � 𝛿𝛿1 �. � (1) � = � (1) (1) (1) (1) (1) (1) (2) (1) (2) (1) (2) 𝛿𝛿2 �1 − 𝑡𝑡𝑡𝑡𝑡𝑡ℎ2 (𝑤𝑤1,2 𝑥𝑥1 + 𝑤𝑤2,2 𝑥𝑥2 + 𝑤𝑤3,2 𝑥𝑥3 + 𝑤𝑤4,2 𝑥𝑥4 + 𝑏𝑏2 )��𝑤𝑤2,1 𝛿𝛿1 + 𝑤𝑤2,2 𝛿𝛿2 + 𝑤𝑤2,3 𝛿𝛿3 � (16) 中間層での各ユニットの出力(13)と各ユニットの誤差(16), 出力層での各ユニットの出力(14)と各ユニットの 誤差(15)を用いて,勾配降下法なら(7)を,確率的勾配降下法なら(8)によりパラメータが収束するまで反復計 算を行う. 3.2. NNET プロシジャを用いた解析 SAS プログラム 1 は,アイリスのデータを,上記に示した各種設定でニューラルネットワークに学習させ るための SAS プログラムの一例である.SAS システムを用いた実装方法はいくつかあるが,ここでは SAS Viya の NNET プロシジャを用いた方法を紹介する(SAS Institute Inc., 2019).データセット Iris は,品種名 (変数名:Species) ,萼片の長さ(変数名:SepalLength),萼片の幅(変数名:SepalWidth),花弁の長さ (変数名:PetalLength),花弁の幅(変数名:PetalWidth)をもつ 150 輪の花のデータである.入力データの 測定値を標準化することで学習の安定化と高速化が期待される(我妻, 2018)ことから,SAS プログラム 1 では,PROC NNET プロシジャのステートメントにてオプション STANDARDIZE で STD と指定した.この 指定により INPUT ステートメントで指定した 4 つの測定値が標準化される. SAS プログラム 1:NNET プロシジャを用いたニューラルネットワークの実行 proc nnet data = mycas.iris standardize = std ; input SepalLength SepalWidth PetalLength PetalWidth ; target Species / level = nominal act = softmax error = entoropy ; hidden 2 / act = tanh ; partition fraction(validate = 0.3 seed = 20211118) optimization algorithm = sgd maxiter = 100 learningrate = 0.01 minibacth = 7 seed = 20211119 ; output out = pout copyvar = pred_train ; run ; 66
・TARGET ステートメント 出力層に関して指定するためのステートメントである.アイリスのデータでは,変数 Species に入力され ているセトサ,バージカラー,バージニカの 3 つのクラスのいずれかに分類したいため,同変数の後ろにオ プション LEVEL にて NOMINAL と指定する.TARGET ステートメントにて指定する識別変数は文字型,数 値型いずれであってもかまわない.出力層の活性化関数をソフトマックス関数とするため,オプション ACT にて SOFTMAX と指定する.オプション ERROR は,出力層におけるユニットの誤差を指定するため のものであり,LEVEL = NOMINAL と指定したときのみ機能する.ERROR = ENTOROPY と指定すると,出 力層におけるユニットの誤差として交差エントロピー関数が適用される. ・HIDDEN ステートメント 中間層に関して指定するためのステートメントである.図 2.7 では中間層は 1 つなので,HIDDEN ステー トメントは 1 つになる.HIDDEN ステートメントのすぐ後ろに記載する数字は,中間層を構成するユニット 数である.オプション ACT に TANH と指定することで,中間層の活性化関数にハイパーボリックタンジェ ント関数を用いることができる. ・PARTITION ステートメント 入力データを,ネットワークに学習させるためのデータと,学習結果の汎用性を評価するためのデータと に分割するためのステートメントである.FRACTION = は,入力データを訓練データ(training data),検証デ ータ(validation data あるいは development data),テストデータ(test data)にランダムに分割するためのオプショ ンである.VALIDATE = は必須であるが,TEST = は指定しなくてもよい.訓練データを用いてネットワー クに学習させ,検証データを用いて学習結果を評価する.訓練データと検証データを用いて決定したモデル に対し,訓練データとしても検証データとしても使用していないテストデータにより,そのモデルの予測結 果を評価する. 検証データとテストデータを用いて学習結果の汎用性を評価する目的としては,ネットワ ークモデルの過学習(過剰適合ともよばれる)を避けることが考えられる.入力データを分割するとき,オ プション FRACTION では SAS 内部で生成した乱数に対して VALIDATE = 及び TEST = で指定された数値 を閾値として用いる.このため,SAS プログラム 1 では,オプション TEST は指定せず VALIDATE = 0.3 と 指定しているが,必ずしも 150 個の入力データのうち 150×0.3 = 45 個のデータが検証データに,150×0.7 = 105 個のデータが訓練データになるとは限らない.もし入力データを厳密に分割したいのであれば,オプシ ョン FRACTION の代わりにオプション ROLEVAR を用いればよい. ・OPTIMIZATION ステートメント ネットワークに学習させパラメータを決定するための方法(最適化のアルゴリズム)を指定するためのス テートメントである.ALGORITHM = SGD と指定すると確率的勾配降下法が適用される.SAS プログラム 1 では,SGD のオプションとして LEARNINGRATE =, MINIBATCH =, SEED = を用いた.LEARNINGRATE = は,学習係数 η を指定するためのオプションであり,SAS プログラム 1 では 0.01 と指定した.MINIBATCH = は,ミニバッチサイズを指定するためのオプションである.訓練データを小さなかたまり(バッチ)に分 解し,このかたまりごとにパラメータの更新を行う.SAS プログラム 1 では MINIBATCH = 7 なので,アイ リスのデータ 150 個のうち訓練データとして 105 個を用いる場合には,105 個の訓練データを 1 回学習する にあたり 105/7 = 15 回のパラメータ更新が行われる.SEED = は,パラメータ反復計算を行うにあたり 1 組 67
の訓練データをランダムに選ぶためのシードを指定するためのオプションである.この他 SGD には,学習 係数減衰を行うためのオプション ANNEALINGRATE や,モーメンタム法を実行するためのオプション MOMENTUM などが用意されている.MAXITER= は,ALGORITHM = SGD と指定したときには,エポッ ク数を指定するためのオプションとなる.1 エポックで全ての訓練データを 1 回使い切ることになる. ・OUTPUT ステートメント 入力データに対する予測結果を SAS データセット化したい場合に使用する.OUT = は生成する SAS デー タセット名を,COPYVAR = はそのデータセットでの変数名を,ROLE = はどのデータに対する予測結果な のかを表す変数名を,それぞれ指定するためのオプションである.デフォルトでは_Fraction_PartInd_という 変数名に,訓練データに対する予測結果であれば 1 が,検証データに対する予測結果であれば 2 が,テスト データに対する予測結果として入力される. SAS プログラム 1 を実行すると,まず Model Information とタイトルされた表に,あてはめたネットワー クに関する情報が出力される.この表から,入力層のユニット数は 4,出力層のユニット数は 3,中間層は (1) (1) (1) (1) (1) (1) 1 層でそのユニット数は 2 であり,重みパラメータは 14 個(図 2.7 の重み𝑤𝑤1,1 , 𝑤𝑤2,1 , 𝑤𝑤3,1 , 𝑤𝑤4,1 , 𝑤𝑤1,2 , 𝑤𝑤2,2 , (1) (1) (2) (2) (2) (2) (2) (2) (1) 𝑤𝑤3,2 , 𝑤𝑤4,2 , 𝑤𝑤1,1 , 𝑤𝑤2,1 , 𝑤𝑤1,2 , 𝑤𝑤2,2 , 𝑤𝑤1,3 , 𝑤𝑤2,3 に該当する) ,バイアスパラメータ(図 2.7 のバイアス𝑏𝑏1 , (1) (2) (2) (2) 𝑏𝑏2 , 𝑏𝑏1 , 𝑏𝑏2 , 𝑏𝑏3 に該当する)であることが確認できる.続いて,あてはめたネットワークモデルの学習 結果として,ネットワークの学習と学習結果の汎用性を評価するために使用されたオブザベーション数と, 各データセットに対する不正答率が出力される.SAS プログラム 1 では,入力データを PARTITION ステー トメントのオプション FRACTION を用いて入力データを訓練データと検証データとに分割したため,訓練 データ,検証データそれぞれに対して不正答率が出力される. 4. おわりに 本稿では,機械学習の枢軸をなすニューラルネットワークの中で,最も基本的なモデルであるフィードフ ォワード・ニューラルネットワーク(FNN)について簡単にまとめ,SAS Viya の NNET プロシジャを用いた適 用例を示した. ニューラルネットワークモデルは,線形回帰モデルを多層化したモデルといえる(須山, 2019) .線形回帰 モデルは,ネットワークモデルでいう入力データを説明変数に,出力を目的変数として,説明変数に関する パラメータを線形結合させた関数をあてはめ,得られたデータからパラメータを推定し,新しい入力データ に対して出力を予測する.線形回帰モデルでは,モデル式の右辺にあたる説明変数の関数(基底関数とよば れる)が固定されるため,音声データや画像データなどの高次元データから特徴量を抽出することが難しく なる.ネットワークの表現力を高めるためには,パラメータ数を増やすよりも多層化するほうが効率的であ るといわれている(瀧, 2017, 原田, 2017) .ニューラルネットワークモデルでは,ネットワークの重みパラ メータを導入し,基底関数の内部に線形回帰を構成し多層化させることで,高次元のデータに対しても過剰 適合を防ぎつつより表現力が高いモデルを構築することが可能となる(須山, 2019).本稿で FNN の実装に 用いた NNET プロシジャは,SAS Visual Data Mining and Machine Learning にて提供されているプロシジャの ひとつである.適用例では,中間層の層数,中間層のユニット数,確率的勾配降下法を用いるときの学習係 数といった,学習の効率化やモデル構成のためのパラメータ(調整パラメータ)を各ステートメントのオプ 68
ションを用いて特定したが,AUTOTUNE ステートメントを用いれば,訓練データに対してこれら調整パラ メータの最適化が行われる.SAS Viya を実行基盤とする同製品では FNN 以外にも CNN, RNN, VAE がサポ ートされている(SAS Institute Inc., 2019).SAS Viya は,Python, R など SAS 以外のプログラミング言語で記載 されたソースコードを呼び出すことができるため,これら複数の言語が提供する機能を,同一の環境下で管 理し実行することが可能となる.SAS Viya 以外の SAS システムを用いた FNN の実装方法としては,Base SAS のみを用いた SAS プログラムコードとその使用例が Mandalapu et al. (2018)により紹介されている. ニューラルネットワークをベイズ化したネットワークとして,ベイジアンニューラルネットワーク (Denker et al., 1987, Tishby et al., 1989)が知られている.ベイジアンニューラルネットワークでは,ネットワ ークの重みパラメータに対して事前分布を想定し,ベイズの定理を用いて導出される事後分布を用いて推論 を行う.重みパラメータの事後分布を求めるためには多重積分が必要となるが,特にニューラルネットワー クのような複雑なモデルでは事後分布を解析的に明示することができないため,近似的な確率計算により事 後分布を推論する.近似的な推論は,事後分布からのサンプリングによる方法と,数値最適化に基づく方法 に大別される.サンプリングによる方法では,事後分布からの標本を用いて事後分布の推論を行う.マルコ フ連鎖モンテカルロ(Markov chain Monte Carlo; MCMC)法がその代表格であり,ギプスサンプラー,メトロ ポリス・ヘイスティング法,ハミルトニアモンテカルロ法など,いくつものサンプリングアルゴリズムが存 在する.数値最適化に基づく方法は,事後分布を求める際に必要となる積分を,最適化の問題に置き換えて 近似的に計算する方法であり,ラプラス近似や変分推論がこちらに分類される.詳細は Bishop (2006),須山 (2019)などを参照されたい.本稿執筆時点では, NNET プロシジャは残念ながらベイジアンニューラルネッ トワークモデルまで対応できていない.Python のライブラリのひとつである Edward(Tran et al., 2016, Tran et al., 2017) は,確率的モデリングとその推論や評価を行なうためのライブラリであり,ベイジアンニューラ ルネットワークモデルもサポートしている.そこで,ベイジアンニューラルネットワークを適用するにあた っては,Python のライブラリである Edward を用いた実装が考えられる. AI ブームの中で必ずといっていいほど登場する概念のひとつに,シンギュラリティ(Singularity)がある. この用語自体は数学や物理学で用いられており,例えば物理学では「重力の特異点」を指す.ブラックホー ルのように無限に小さい点に無限に大きなエネルギーが集中している点のことであり,現代の物理学ではそ の存在が導出されていながらどのような性質をもつのか未知であるという,文字通り「特異な」点を意味す る.これに対し,AI の分野で Singularity といえば,レイ・カーツワイルがその著書"The Singularity Is Near: When Humans Transcend Biology"において展開した,技術的特異点(technological singularity)のことを指す.簡 単にいえば,進化した AI が人間の能力を超え,いまからは予測できない未知の域に達するというものであ る.汎用人工知能(Artificial general intelligence; AGI)が可能となったときに起こる出来事とされ,2045 年問題 ともよばれる.AI は,現時点ではその汎用性において人間にはまだ遠く及ばない.しかし,AI に関して極 めて激しい開発研究が世界規模で展開されている.AI 研究の先にある世界は,進化した AI が人間に幸福と 恩恵をもたらすユートピアであろうか.あるいは人間に不幸と災いをもたらすデストピアであろうか.そし てそのどちらの世界と感じるかは,個人ごとに異なるのかもしれない. 参考文献 [1] Bishop, C., M. (2006). Pattern Recognition and Machine Learning. New York: Springer. (パターン認識と機械学 習 上. 元田浩・栗田多喜夫・樋口知之監訳, 丸善出版, 2012) 69
[2] Denker, J., Schwartz, D., Wittner, B., Solla, S., Howard, R., Jackel, L., and Hopfield, J. (1987). Large automatic learning, rule extraction, and generalization. Complex Systems, 1, 877–922. [3] Fisher, R., A. (1936). The use of multiple measurements in taxonomic problems. Annals of Eugenics, 7, 179–188. [4] Géron, A. (2012). Hands‐on machine learning with Scikit-Learn and TensorFlow. O'Reilly Media. (scikit-learn と TensorFlow による実践機械学習. 下田倫大監訳・長尾高弘訳. オライリージャパン. 2018) [5] Kurzweil, R. (2006). The Singularity Is Near: When Humans Transcend Biology. Penguin Books. (ポスト・ヒュー マン誕生 コンピュータが人類の知性を超えるとき. レイ・カーツワイル, 井上健, 小野木明恵, 野中香方 子, 福田実. NHK 出版, 2007) [6] Minsky, M., and Papert, S., A. (1987). Perceptrons, Expanded Edition. Cambridge: The MIT Press. (パーセプトロ ン 改訂版. 中野馨・阪口豊訳, パーソナルメディア社, 1993) [7] Mandalapu, S., Wang, Y., and Ni, X., S. (2018). Building Neural Network model in BASE SAS (From Scratch). Proceedings of the 26th Annual South East SAS Users Group Conference. Florida: SAS Institute. [8] Nesterov, Y. (1983). A method of solving a convex programming problem with convergence rate O(1/k2). Soviet Mathematics Doklady, 27, 372–376. [9] Rosenblatt, F. (1957). The Perceptron: A Receiving and Recognizing Automation (Project PARA). Cornell Aeronautical Laboratory. [10] Rosenblatt, F. (1958). The Perceptron: A probabilistic model for information storage and organization in the brain. Psychological Review, 65, 386–408. [11] Rumelhart, D., E., Hinton, G., E., and Williams, R., J. (1986). Learning representations by back-propagating errors. Nature, 323, 533–536. [12] SAS Institute Inc. (2019). SAS Visual Data Mining and Machine Learning 8.5: Procedures. Cary, NC: SAS Institute Inc. [13] Tishby, N., Levin, E., and Solla, S. (1989). Consistent inference of probabilities in layered networks: Predictions and generalization. In International Joint Conference on Neural Networks, volume 2, 403–409, IEEE. [14] Tran, D., Hoffman, M., D., Saurous, R., A., Brevdo, E. and Blei, D.M. (2017). Deep Probabilistic Programming. International Conference on Learning Representations. [15] Tran,D., Kucukelbir, A., Dieng,A., B., Rudolph, M., Liang,D., and Blei, D.M. (2016). Edward: A library for probabilistic modeling, inference, and criticism. arXiv preprint arXiv:1610.09787. [16] 我妻幸長. (2018). はじめてのディープラーニング. SB クリエイティブ社. [17] 畝見真. (2020). Enterprise Analytics Platform SAS Viya の全貌. 日本 SAS ユーザー会フォーラム 2020. https://www.sas.com/ja_jp/events/20/japan-sas-users-group-forum.html (Retrieved on June 10, 2021) [18] 一般社団法人日本ディープラーニング協会 監修. (2018). 深層学習教科書 ディープラーニング G 検定 (ジェネラリスト)公式テキスト. 翔泳社. [19] 小野潔. (2018). SAS の目指す AI/機械学習/深層学習とは!! SAS ユーザー総会論文集. 441–475. [20] 小野潔. (2019). 統計家のための AI 基礎技術と最新 AI の話題 ~統計と AI のはざまで~. 臨床試験セミ ナー 統計手法専門コース BioS30 周年記念講演会. [21] 小野潔. (2020). SAS Viya の自然言語処理. 日本 SAS ユーザー会フォーラム 2020. https://www.sas.com/ja_jp/events/20/japan-sas-users-group-forum.html (Retrieved on June 10, 2021) [22] 木口亮・平野勝也・北西由武. (2018). SAS Viya の CNN を活用した Process Innovation ~機械は解析図表 70
をどう見ているのか~. SAS ユーザー総会論文集. 267–281 [23] 木村優志. (2019). 現場で使える! Python の深層学習入門. 翔泳社. [24] 須山敦史. (2019). 機械学習プロフェッショナルシリーズ ベイズ深層学習. 講談社. [25] 関根崇之. (2018). 60 分でわかる!ディープラーニング最前線. リクルート社. [26] 総務省. (2016). 情報通信白書 ICT 白書 ネットワークとデータが創造する新たな価値 平成 28 年版 IoT・ビッグデータ・AI. https://www.soumu.go.jp/johotsusintokei/whitepaper/ja/h28/html/nc142120.html (Retrieved on June 10, 2021) [27] 瀧雅人. (2017). これならわかる深層学習入門. 講談社サイエンティフィック. [28] 原田達也. (2017). 機械学習プロフェッショナルシリーズ 画像認識. 講談社. [29] 藤田智紀・吉田祐樹・平野勝也・木口亮・北西由武. (2019). 転移学習無双~データ不足の壁を SAS Viya で越える~. SAS ユーザー総会論文集. [30] 森岡裕. (2020). 初心者からの SAS Viya. 日本 SAS ユーザー会フォーラム 2020. https://www.sas.com/ja_jp/events/20/japan-sas-users-group-forum.html (Retrieved on June 10, 2021) 連絡先 E-mail: yada.shinjo.7h@kyoto-u.ac.jp 71
SAS Viya ではじめるガウス過程回帰 ○矢田 真城 1 1 2 魚住 龍史 2 京都大学大学院医学研究科 臨床統計学講座 京都大学大学院医学研究科 医学統計生物情報学 Let’s start Gaussian process regression using SAS Viya! Shinjo Yada1 and Ryuji Uozumi 2 1 Department of Clinical Biostatistics/Clinical Biostatistics Course, Kyoto University Graduate School of Medicine 2 Department of Biomedical Statistics and Bioinformatics, Kyoto University Graduate School of Medicine 要旨 ガウス過程では,入力値に対して出力値を返す関数を確率変数ととらえ,ガウス分布をあてはめる.得られ たデータを用いてこの確率分布を更新し,更新された確率分布を用いて,新しく得られた入力値に対する出 力値を予測する.ガウス過程を用いることにより,線形回帰モデルでは表現しきれなかった構造を考えるこ とができ,更に予測値の不確実性を表現することができる.本稿では,ガウス過程回帰について簡単にまと め,SAS Viya の製品である SAS Visual Data Mining and Machine Learning にてガウス過程回帰を実装するため の GPREG アクションについて紹介する. キーワード:ガウス過程,ガウス過程回帰,変分近似,nonparametric Bayes action set, gpreg アクション 1. はじめに 入力変数(説明変数)x に対するターゲット変数(目的変数)y を予測するためのモデルを求めるための 最も簡単な方法としては,ターゲット変数が連続量であればターゲット変数が連続量であれば,モデルパラ メータを𝛃𝛃としてノイズ𝜖𝜖を用いた回帰モデル𝑦𝑦 = 𝐱𝐱𝐱𝐱 + 𝜖𝜖をあてはめることである.ただし,これでは入力変 数とターゲット変数の間には直線的な関係しか想定することができない.そこで,非直線的な関係も含めて より複雑なモデルを構築するために入力変数を一般の関数で変換した𝜙𝜙(𝐱𝐱)を用い,𝜙𝜙(𝐱𝐱)に対する重みを𝐰𝐰と して,𝑦𝑦 = 𝐰𝐰 𝐓𝐓 𝜙𝜙(𝐱𝐱) + 𝜖𝜖と表すことを考える.n 個の入力値ベクトル𝐱𝐱1 , 𝐱𝐱 2 , … , 𝐱𝐱 𝐧𝐧 とそれに対応する出力値ベク トル𝑦𝑦1 , 𝑦𝑦2 , … , 𝑦𝑦𝑛𝑛 に対しては 72
𝑦𝑦1 𝜙𝜙1 (𝐱𝐱 𝟏𝟏 ) 𝜙𝜙2 (𝐱𝐱 𝟏𝟏 ) … 𝜙𝜙ℎ (𝐱𝐱 𝟏𝟏 ) 𝑦𝑦2 𝜙𝜙 (𝐱𝐱 ) 𝜙𝜙 (𝐱𝐱 ) … 𝜙𝜙 (𝐱𝐱 ) 𝐲𝐲 = � ⋮ � (n×1), 𝚽𝚽 = � 1 𝟐𝟐 2 𝟐𝟐 ⋱ ℎ 𝟐𝟐 � (n×h) ⋮ ⋮ ⋮ 𝑦𝑦𝑛𝑛 𝜙𝜙1 (𝐱𝐱 𝐧𝐧 ) 𝜙𝜙2 (𝐱𝐱 𝐧𝐧 ) … 𝜙𝜙ℎ (𝐱𝐱 𝐧𝐧 ) として 𝐲𝐲 = 𝚽𝚽𝚽𝚽 + 𝛜𝛜 と,n 個まとめて行列形式で表現することができる.ここに𝛜𝛜は,n 個のノイズベクトル(n×1)である.上記 のモデル式において表現可能な空間の基底をなす関数𝜙𝜙1 (𝐱𝐱), 𝜙𝜙2 (𝐱𝐱), … , 𝜙𝜙ℎ (𝐱𝐱)を基底関数とよび,𝜙𝜙(𝐱𝐱) = (𝜙𝜙1 (𝐱𝐱), 𝜙𝜙2 (𝐱𝐱), … , 𝜙𝜙ℎ (𝐱𝐱))T (h×1)を𝐱𝐱の特徴ベクトルとよぶ(持橋・大羽, 2019).𝐰𝐰の事前分布として平均 0, 分 散共分散行列 α-1I をもつガウス分布を想定すると,ノイズ𝛜𝛜が𝐰𝐰と独立で平均 0, 共分散行列 σ2I のガウス分 布に従うとき,𝐲𝐲の期待値ベクトル𝐸𝐸(𝐲𝐲)と共分散行列𝐶𝐶𝐶𝐶𝐶𝐶(𝐲𝐲)はそれぞれ 𝐸𝐸(𝐲𝐲) = 𝐸𝐸(𝚽𝚽𝚽𝚽 + 𝛜𝛜) = 𝚽𝚽𝐸𝐸(𝐰𝐰) + 𝐸𝐸(𝛜𝛜) = 𝟎𝟎 𝐶𝐶𝐶𝐶𝐶𝐶(𝐲𝐲) = E[(𝐲𝐲 − 𝐸𝐸(𝐲𝐲))(𝐲𝐲 − 𝐸𝐸(𝐲𝐲))𝑇𝑇 ] = 𝐸𝐸(𝚽𝚽𝚽𝚽𝐰𝐰 𝑻𝑻 𝚽𝚽 𝑇𝑇 + 𝛜𝛜𝐓𝐓 𝛜𝛜) = 𝚽𝚽𝐸𝐸(𝐰𝐰𝐰𝐰 𝑻𝑻 )𝚽𝚽 𝑇𝑇 + 𝐸𝐸(𝛜𝛜𝐓𝐓 𝛜𝛜) = 𝛼𝛼 −1 𝚽𝚽𝚽𝚽 𝑇𝑇 + 𝜎𝜎 2 𝐈𝐈 ≡ 𝐊𝐊 + 𝜎𝜎 2 𝐈𝐈 で与えられる.K の構成要素である,𝐱𝐱の特徴ベクトル𝜙𝜙(𝐱𝐱)に対する内積<𝜙𝜙(𝐱𝐱 𝐢𝐢 ),𝜙𝜙�𝐱𝐱 𝐣𝐣 �>をカーネル関数とよ ぶ.更にこれに対応させる意味で,共分散行列 K をカーネル行列あるいは𝚽𝚽のグラム行列(Gram matrix)とい うこともある.カーネル関数 k(𝐱𝐱 𝐢𝐢 , 𝐱𝐱 𝐣𝐣 )は𝐱𝐱 𝐢𝐢 と𝐱𝐱 𝐣𝐣 の関数であるが,値さえわかれば𝐱𝐱の特徴ベクトル𝜙𝜙(𝐱𝐱)を明示 させる必要はない.𝜙𝜙(𝐱𝐱)を明示せずカーネル関数だけで𝜙𝜙(𝐱𝐱)に対する内積を計算することを,カーネルトリ ックとよぶ.カーネルトリックを用いることで無次元ベクトル𝜙𝜙(𝐱𝐱)を明示させることなく,𝐲𝐲の分布を決定 する共分散行列を得ることができる(持橋・大羽, 2019). 任意の自然数 n に対して,入力𝐱𝐱1 , 𝐱𝐱 2 , … , 𝐱𝐱 𝐧𝐧 ∈ 𝛘𝛘とそれに対応する出力𝐟𝐟 = {𝑓𝑓(𝐱𝐱 𝐢𝐢 ), 𝑓𝑓(𝐱𝐱 𝟐𝟐 ), … , 𝑓𝑓(𝐱𝐱 𝐧𝐧 )}が,平均 𝐦𝐦 = {𝑚𝑚(𝐱𝐱 𝟏𝟏 ), 𝑚𝑚(𝐱𝐱 𝟐𝟐 ), … , 𝑚𝑚(𝐱𝐱 𝐧𝐧 )},カーネル関数 k(𝐱𝐱 𝐢𝐢 , 𝐱𝐱 𝐣𝐣 )を要素とする行列 K を共分散行列とするガウス分布に 従うとき,𝐟𝐟はガウス過程に従うという.n 個の入力値ベクトル𝐱𝐱1 , 𝐱𝐱 2 , … , 𝐱𝐱 𝐧𝐧 とそれに対応する出力値ベクト ル𝐲𝐲 = {𝑦𝑦1 , 𝑦𝑦2 , … , 𝑦𝑦𝑛𝑛 }𝑇𝑇 に対し,ノイズ𝛜𝛜を用いたガウス過程回帰モデル𝐲𝐲 = 𝐟𝐟(𝐱𝐱) + 𝛜𝛜をあてはめる.ここで,ノ イズ𝛜𝛜が平均 0, 共分散行列 σ2I のガウス分布に従うとする.𝐟𝐟が平均𝐦𝐦,共分散行列 K のガウス過程に従う とき,{ 𝑓𝑓(𝐱𝐱 𝐢𝐢 ), 𝑓𝑓(𝐱𝐱 𝟐𝟐 ), … , 𝑓𝑓(𝐱𝐱 𝐧𝐧 )}T は平均𝐦𝐦,共分散行列 K のガウス分布に従い,f を条件付けたもとでの𝐲𝐲は 平均 f, 共分散行列𝜎𝜎 2 𝐈𝐈のガウス分布に従う. 𝐟𝐟の確率密度関数,𝐲𝐲|𝐟𝐟の確率密度関数を用いた周辺化積分によ り,𝐲𝐲の予測分布𝑝𝑝(𝐲𝐲)を得ることができる. SAS では,SAS Cloud Analytic Services (CAS)に各種機能を関数化したアクションセット(ActionSet)が用意 され,SAS Viya により機械学習などの高度な分析を容易に行えるようになった.更に,WebAPI を呼び出す 機能をモジュール化したライブラリである SWAT(Script Wrapper for Analysis Transfer), Python API 用のパッケ ージ DLPy (Deep Learning with Python)が提供され,これらを利用することで,SAS CAS 上で Python とよく 似た記法でのプログラミングが可能となった.そこで本稿では,ガウス過程による回帰について簡単にまと め,SAS Viya の製品のひとつである SAS Visual Data Mining and Machine Learning にてガウス過程回帰を実装 するための方法を紹介する. 73
2. ガウス過程回帰 2.1. ガウス過程回帰 平均関数𝑚𝑚(𝐱𝐱),共分散関数𝑘𝑘(𝐱𝐱, 𝐱𝐱′)により関数 f の性質が決定されるガウス過程{𝑓𝑓(𝐱𝐱)|𝐱𝐱 ∈ 𝛘𝛘}を考える.i 番 目の入力値ベクトル𝐱𝐱 𝐢𝐢 ,出力値𝑦𝑦𝑖𝑖 に対し,ノイズを𝜖𝜖𝑖𝑖 として 𝑦𝑦𝑖𝑖 = 𝑓𝑓𝑖𝑖 + 𝜖𝜖𝑖𝑖 (1) とモデル化する(i = 1, 2,…,n).ここに𝜖𝜖𝑖𝑖 は互いに独立に N(0, σ2)に従うものとする.𝑓𝑓𝑖𝑖 = 𝑓𝑓(𝐱𝐱 𝐢𝐢 )は,データとし て観測されることはなく,入力値が与えられたもとでの出力値の生成を潜在的に決定しており,その点で潜 在関数とよばれる(須山, 2019) . 以降では,簡単のためガウス過程の事前分布では𝑚𝑚(𝐱𝐱) = 0とする.また,確率変数ベクトル x が平均𝐚𝐚, 分散共分散行列Σをもつガウス分布 N(𝐚𝐚,Σ)に従うとき,x の確率密度関数を N(x|𝐚𝐚,Σ)と表記する.n 個の入力 値ベクトルを𝐗𝐗 = {𝐱𝐱1 , 𝐱𝐱 2 , … , 𝐱𝐱 𝐧𝐧 },出力値ベクトルを𝐲𝐲 = {𝑦𝑦1 , 𝑦𝑦2 , … , 𝑦𝑦𝑛𝑛 },n 組の学習データ𝐷𝐷 = {𝐗𝐗, 𝐲𝐲}に対応す る潜在関数を f と表す.(1)のとき𝐲𝐲|𝐟𝐟 = 𝑁𝑁(𝐟𝐟, 𝜎𝜎 2 𝐈𝐈)だから 𝑝𝑝(𝐲𝐲|𝐱𝐱) = ∫ 𝑝𝑝(𝐲𝐲|𝐟𝐟)𝑝𝑝(𝐟𝐟|𝐱𝐱)𝑑𝑑𝐟𝐟 = ∫ 𝑁𝑁(𝐟𝐟, 𝜎𝜎 2 𝐈𝐈)𝑁𝑁(𝟎𝟎, 𝐾𝐾𝑛𝑛𝑛𝑛 )𝑑𝑑𝐟𝐟 = 𝑁𝑁(0, 𝜎𝜎 2 𝐈𝐈 + 𝐊𝐊 𝐧𝐧𝐧𝐧 ) ≡ 𝑁𝑁(0, 𝐂𝐂) (2) となる.ここに,𝐊𝐊 𝐧𝐧𝐧𝐧 は各要素が𝑘𝑘(𝐱𝐱 𝐢𝐢 , 𝐱𝐱 𝐣𝐣 ) (i, j = 1, 2,…, n)である共分散行列 (n×n) である.ガウス過程の事 前分布を𝑝𝑝(𝐟𝐟), 尤度関数を𝑝𝑝(𝐲𝐲|𝐟𝐟)として同時確率分布は𝑝𝑝(𝐲𝐲, 𝐟𝐟) = 𝑝𝑝(𝐲𝐲|𝐟𝐟)𝑝𝑝(𝐟𝐟)であり,事後ガウス過程の平均関 数は 𝑚𝑚 𝐲𝐲 (𝐱𝐱) = 𝐊𝐊 𝐱𝐱𝐱𝐱 (𝜎𝜎 2 𝐈𝐈 + 𝐊𝐊 𝐧𝐧𝐧𝐧 )−1 𝐲𝐲 (3) 𝑘𝑘𝐲𝐲 (𝐱𝐱, 𝐱𝐱 ′ ) = 𝑘𝑘(𝐱𝐱, 𝐱𝐱 ′ ) − 𝐊𝐊 𝐱𝐱𝐱𝐱 (𝜎𝜎 2 𝐈𝐈 + 𝐊𝐊 𝐧𝐧𝐧𝐧 )−1 𝐊𝐊 𝐧𝐧𝐧𝐧′ (4) 事後ガウス過程の共分散関数は で与えられる.𝐈𝐈は単位行列,𝐊𝐊 𝐱𝐱𝐱𝐱 は各要素が𝑘𝑘(𝐱𝐱, 𝐱𝐱 𝐢𝐢 ) (i = 1, 2,…,n)である行ベクトル(1×n)であり,𝐊𝐊 𝐱𝐱𝐱𝐱 = 𝐊𝐊 𝐓𝐓𝐧𝐧𝐧𝐧 である(i = 1, 2,…,n).事後ガウス過程に関連する分布は(3), (4)を用いて得ることができる.例えば,n 組 の学習データ𝐷𝐷 = {𝐗𝐗, 𝐲𝐲}が与えられたもとでの新規入力値に対する予測分布は,新規入力値ベクトルを𝐱𝐱 ∗ , 対応する出力値を𝑦𝑦∗ と表すとき, 𝑝𝑝(𝑦𝑦∗ |𝐲𝐲) = 𝑁𝑁(𝑚𝑚𝐲𝐲 (𝐱𝐱 ∗ ), 𝑘𝑘𝐲𝐲 (𝐱𝐱 ∗ , 𝐱𝐱 ∗ ) + 𝜎𝜎 2 ) (5) 𝑚𝑚 𝐲𝐲 (𝐱𝐱 ∗ ) = 𝐊𝐊 𝐱𝐱∗ 𝐧𝐧 (𝜎𝜎 2 𝐈𝐈 + 𝐊𝐊 𝐧𝐧𝐧𝐧 )−1 𝐲𝐲, 𝑘𝑘𝐲𝐲 (𝐱𝐱 ∗ , 𝐱𝐱 ∗ ) = 𝑘𝑘(𝐱𝐱 ∗ , 𝐱𝐱 ∗ ) − 𝐊𝐊 𝐱𝐱∗ 𝐧𝐧 (𝜎𝜎 2 𝐈𝐈 + 𝐊𝐊 𝐧𝐧𝐧𝐧 )−1 𝐊𝐊 𝐧𝐧𝐱𝐱∗ (6) である.ここに であり,𝐊𝐊 𝐱𝐱 ∗ 𝐧𝐧 各要素が𝑘𝑘(𝐱𝐱 ∗ , 𝐱𝐱 𝐢𝐢 ) (i = 1, 2,…,n)である行ベクトル(1×n)であり, 𝐊𝐊 𝐧𝐧𝐱𝐱 ∗ = 𝐊𝐊 𝐓𝐓𝐱𝐱∗ 𝐧𝐧 である.事後ガウス 過程が依存する,共分散関数𝑘𝑘(𝐱𝐱, 𝐱𝐱′)を規定するパラメータ及びノイズを規定するパラメータ σ2 をまとめて𝛉𝛉 と表す.ハイパーパラメータ𝛉𝛉は,𝐲𝐲の対数周辺尤度 𝑁𝑁 ln𝑝𝑝(𝐲𝐲|𝛉𝛉) = ln(2𝜋𝜋)− 2 |𝐂𝐂| 1 −1/2 1 1 exp �− 2 𝐲𝐲𝐓𝐓 𝐂𝐂−𝟏𝟏𝐲𝐲� 𝑁𝑁 = − ln|𝐂𝐂| − 𝐲𝐲 𝐓𝐓 𝐂𝐂 −𝟏𝟏 𝐲𝐲 − ln(2π) 2 2 (7) 2 を目的関数として,これを𝛉𝛉に関して最小化するように学習させる.具体的には,𝜃𝜃𝑖𝑖 ∈ 𝛉𝛉に対して ∂ ∂𝜃𝜃𝑖𝑖 ln𝑝𝑝(𝐲𝐲|𝛉𝛉) = − 1 ∂ 1 ∂ 𝐓𝐓 −𝟏𝟏 ln|𝐂𝐂| − 𝐲𝐲 𝐂𝐂 𝐲𝐲 2 ∂𝜃𝜃𝑖𝑖 2 ∂𝜃𝜃𝑖𝑖 74
1 ∂𝐂𝐂 1 2 ∂𝜃𝜃𝑖𝑖 ∂𝐂𝐂 −𝟏𝟏 1 = − tr �𝐂𝐂 −𝟏𝟏 ∂𝜃𝜃 � − 𝐲𝐲 𝐓𝐓 ∂𝜃𝜃 𝐲𝐲 2 𝑖𝑖 = − tr �𝐂𝐂−𝟏𝟏 ∂𝐂𝐂 2 𝑖𝑖 1 2 � + 𝐲𝐲𝐓𝐓 𝐂𝐂−𝟏𝟏 ∂𝐂𝐂𝐍𝐍 ∂𝜃𝜃𝑖𝑖 𝐂𝐂−𝟏𝟏𝐲𝐲 (8) であることを用い,勾配降下法や確率的勾配降下法などの最適化手法により最大化することが考えられる. このように解析的に導出できるものの,計算するにあたっては n 個の入力値ベクトル𝐗𝐗 = {𝐱𝐱1 , 𝐱𝐱 2 , … , 𝐱𝐱 𝐧𝐧 }のグ ラム行列である C の逆行列が必要である.これは一般的に O(n3)の計算オーダーとなり,103 を超えるような n の場合,実質的に計算不能な状況に陥る(須山, 2019,持橋, 2015) .そこで n×n のサイズをもつ行列 C か ら,それよりも小さいサイズをもつ行列を用意し変分推論を適用することによって,現実的な計算オーダー で効率的に計算を行う方法が提案されている. 2.2. 変分推論による事後分布の近似 Snelson and Ghahramani (2006)は,n 個の入力値から m(<n)個の擬似的なデータセットを用意し,このデー タセットを用いてガウス過程を近似する方法を提案した.入力値から生成される入力値は誘導点(inducing point)とよばれる.m 個の誘導点ベクトルを𝐗𝐗 𝐦𝐦 とし𝐟𝐟𝐦𝐦 = {𝑓𝑓(𝐱𝐱 𝟏𝟏 ), 𝑓𝑓(𝐱𝐱 𝟐𝟐 ), … , 𝑓𝑓(𝐱𝐱 𝐦𝐦 )}として,尤度関数は −𝟏𝟏 2 𝑝𝑝(𝐲𝐲|𝐗𝐗, 𝐗𝐗 𝐦𝐦 , 𝐟𝐟𝐦𝐦 ) = ∏𝑛𝑛𝑖𝑖=1 𝑝𝑝(𝑦𝑦𝑖𝑖 |𝐱𝐱 𝐢𝐢 , 𝐗𝐗 𝐦𝐦 , 𝐟𝐟𝐦𝐦 ) = 𝑁𝑁(𝐲𝐲|𝐊𝐊 𝐧𝐧𝐧𝐧 𝐊𝐊 −𝟏𝟏 𝐦𝐦𝐦𝐦 𝐟𝐟𝐦𝐦 , diag(𝐊𝐊 𝐧𝐧𝐧𝐧 − 𝐊𝐊 𝐧𝐧𝐧𝐧 𝐊𝐊 𝐦𝐦𝐦𝐦 𝐊𝐊 𝐦𝐦𝐦𝐦 ) + 𝜎𝜎 𝐈𝐈) (9) ここに,𝐈𝐈は単位行列,𝐊𝐊 𝐧𝐧𝐧𝐧 は n 個の入力値と m 個の誘導点による n×m グラム行列,𝐊𝐊 𝐦𝐦𝐦𝐦 は m 個の誘導点 による m×m グラム行列,𝐊𝐊 𝐧𝐧𝐧𝐧 は n 個の入力値による n×n グラム行列である.ガウス過程の事前分布として 𝑝𝑝(𝐟𝐟𝐦𝐦 |𝐗𝐗 𝐦𝐦 ) = 𝑁𝑁(𝐟𝐟𝐦𝐦 |𝟎𝟎, 𝐊𝐊 𝐦𝐦𝐦𝐦 )を考えると,ガウス過程の事後分布は −𝟏𝟏 −𝟏𝟏 2 −1 𝑝𝑝(𝐟𝐟𝐦𝐦 |𝐗𝐗, 𝐲𝐲, 𝐗𝐗 𝐦𝐦 ) = 𝑁𝑁(𝐟𝐟𝐦𝐦 |𝐊𝐊 𝐦𝐦𝐦𝐦 𝐐𝐐−𝟏𝟏 𝐦𝐦 𝐊𝐊 𝐦𝐦𝐦𝐦 (diag(𝐊𝐊 𝐧𝐧𝐧𝐧 − 𝐊𝐊 𝐧𝐧𝐧𝐧 𝐊𝐊 𝐦𝐦𝐦𝐦 𝐊𝐊 𝐦𝐦𝐦𝐦 ) + 𝜎𝜎 𝐈𝐈) 𝐲𝐲, 𝐊𝐊 𝐦𝐦𝐦𝐦 𝐐𝐐𝐦𝐦 𝐊𝐊 𝐦𝐦𝐦𝐦 ) (10) 2 −1 で与えられる.ここで,𝑄𝑄𝑚𝑚 = 𝐾𝐾𝑚𝑚𝑚𝑚 + 𝐾𝐾𝑚𝑚𝑚𝑚 (diag(𝐊𝐊 𝐧𝐧𝐧𝐧 − 𝐊𝐊 𝐧𝐧𝐧𝐧 𝐊𝐊 −𝟏𝟏 𝐦𝐦𝐦𝐦 𝐊𝐊 𝐦𝐦𝐦𝐦 ) + 𝜎𝜎 𝐈𝐈) 𝐊𝐊 𝐧𝐧𝐧𝐧 である. Titsias (2009)は,誘導点を変分パラメータとみなし,ガウス過程の事後分布に変分近似を適用した. 行いたいことは,事後分布𝑝𝑝(𝐟𝐟, 𝐟𝐟𝐦𝐦 |𝐲𝐲)を𝑞𝑞(𝐟𝐟, 𝐟𝐟𝐦𝐦 ) = 𝑝𝑝(𝐟𝐟, 𝐟𝐟𝐦𝐦 |𝐲𝐲)𝜙𝜙(𝐟𝐟𝐦𝐦 )で近似させることである.変分近似に従 えば,𝑞𝑞(𝐟𝐟, 𝐟𝐟𝐦𝐦 )と𝑝𝑝(𝐟𝐟, 𝐟𝐟𝐦𝐦 |𝐲𝐲)の間の KL ダイバージェンスを最小にするような変分パラメータを求めることによ って最適な近似解を得ることができ,それは対数周辺尤度の下界 ℒ(𝐗𝐗 𝐦𝐦 , 𝜙𝜙) = ∫ 𝑝𝑝(𝐟𝐟, 𝐟𝐟𝐦𝐦 |𝐲𝐲)𝜙𝜙(𝐟𝐟𝐦𝐦 )ln 𝑝𝑝�𝐲𝐲�𝐟𝐟�𝑝𝑝(𝐟𝐟𝐦𝐦 ) ϕ(𝐟𝐟𝐦𝐦 ) (11) 𝑑𝑑𝐟𝐟𝑑𝑑𝐟𝐟𝐦𝐦 を最大化することと等価である.最大化後の対数周辺尤度の下界は ℒ(𝐗𝐗 𝐦𝐦 ) = ln𝑁𝑁(𝐲𝐲|𝟎𝟎, 𝜎𝜎 2 𝐈𝐈 + 𝐊𝐊 𝐧𝐧𝐧𝐧 ) − 1 2𝜎𝜎 2 −𝟏𝟏 tr(𝐊𝐊 𝐧𝐧𝐧𝐧 − 𝐊𝐊 𝐧𝐧𝐧𝐧 𝐊𝐊 𝐦𝐦𝐦𝐦 𝐊𝐊 𝐦𝐦𝐦𝐦 ) (12) となる.ここで𝐊𝐊 𝐧𝐧𝐧𝐧 は n×m グラム行列,𝐊𝐊 𝐦𝐦𝐦𝐦 は m×n グラム行列である.𝑞𝑞(𝐟𝐟, 𝐟𝐟𝐦𝐦 )と𝑝𝑝(𝐟𝐟, 𝐟𝐟𝐦𝐦 |𝐲𝐲)の KL ダイバ ージェンスKL(𝑞𝑞(𝐟𝐟, 𝐟𝐟𝐦𝐦 )||𝑝𝑝(𝐟𝐟, 𝐟𝐟𝐦𝐦 |𝐲𝐲))の最小化あるいは対数周辺尤度の下界ℒ(𝐗𝐗 𝐦𝐦 , 𝜙𝜙)の最大化により得られる 𝜙𝜙(𝐟𝐟𝐦𝐦 )の最適解は (13) −𝟏𝟏 𝜙𝜙 ∗ (𝐟𝐟𝐦𝐦 ) = 𝑁𝑁(𝐟𝐟𝐦𝐦 |𝜎𝜎 −2 𝚲𝚲−1 𝐊𝐊 𝐦𝐦𝐦𝐦 𝐊𝐊 𝐦𝐦𝐦𝐦 , 𝚲𝚲−1 ) となる.ここに𝚲𝚲 = 𝜎𝜎 −2 −𝟏𝟏 −𝟏𝟏 −𝟏𝟏 −𝟏𝟏 −2 −𝟏𝟏 𝐊𝐊 𝐦𝐦𝐦𝐦 𝐊𝐊 𝐦𝐦𝐦𝐦 𝐊𝐊 𝐧𝐧𝐧𝐧 𝐊𝐊 −𝟏𝟏 𝐦𝐦𝐦𝐦 + 𝐊𝐊 𝐦𝐦𝐦𝐦 = [𝐊𝐊 𝐦𝐦𝐦𝐦 (𝜎𝜎 𝐊𝐊 𝐦𝐦𝐦𝐦 𝐊𝐊 𝐧𝐧𝐧𝐧 + 𝐊𝐊 𝐦𝐦𝐦𝐦 ) 𝐊𝐊 𝐦𝐦𝐦𝐦 ] である. 75
2.3. 確率的変分推論による事後分布の近似 n 個の学習データに対し m 個の誘導点を用いた変分近似により,ガウス過程回帰の共分散行列の逆行列を 計算するときの演算量オーダーは O(n3)から O(nm2+m3)へと削減される(持橋・大羽, 2019).しかしそれでも 非常にデータ数が多い場合,与えられた学習データの全てを一度にまとめて使うバッチ処理では現実的な時 間で学習することが難しくなる.確率的変分推論(Hoffman et al., 2012)は,変分推論と確率的勾配降下法を組 み合わせることにより計算の効率化を行う方法のひとつである.Hensman et al. (2013) は,確率的変分推論 (stochastic variational inference; SVI) をガウス過程に適用することを提案した. n 個の入力値を𝐗𝐗 = {𝐱𝐱1 , 𝐱𝐱 2 , … , 𝐱𝐱 𝐧𝐧 },出力値を𝐲𝐲 = {𝑦𝑦1 , 𝑦𝑦2 , … , 𝑦𝑦𝑛𝑛 },入力値𝐗𝐗から生成される m 個の誘導点を 𝐙𝐙 = {𝐳𝐳1 , 𝐳𝐳𝟐𝟐 , … , 𝐳𝐳𝐦𝐦 },入力値に対する関数 f の出力値を 𝐟𝐟 = {𝐟𝐟1 , 𝐟𝐟𝟐𝟐 , … , 𝐟𝐟𝐦𝐦 } = {𝑓𝑓(𝐱𝐱1 ), 𝑓𝑓(𝐱𝐱 𝟐𝟐 ), … , 𝑓𝑓(𝐱𝐱 𝐧𝐧 )},誘導点に 対する関数 f の出力値を𝐮𝐮 = {𝐮𝐮1 , 𝐮𝐮𝟐𝟐 , … , 𝐮𝐮𝐦𝐦 } = {𝑓𝑓(𝐳𝐳1 ), 𝑓𝑓(𝐳𝐳𝟐𝟐 ), … , 𝑓𝑓(𝐳𝐳𝐦𝐦 )}と表す.このとき,確率変数 f と u の確 率モデルは,尤度関数𝑝𝑝(𝐲𝐲|𝐗𝐗), 事前確率𝑝𝑝(𝐟𝐟), 𝑝𝑝(𝐮𝐮)によって定義される.変分分布𝑞𝑞(𝐮𝐮)を導入し𝑝𝑝(𝐲𝐲|𝐗𝐗)の下界 に用いると ln𝑝𝑝(𝐲𝐲|𝐗𝐗) = ln ∫ 𝑝𝑝(𝐲𝐲|𝐗𝐗, 𝐟𝐟)𝑝𝑝(𝐟𝐟|𝐮𝐮)𝑑𝑑𝐟𝐟𝑑𝑑𝐮𝐮 = ln ∫ 𝑞𝑞(𝐟𝐟, 𝐮𝐮) ln ≥ ∫ 𝑞𝑞(𝐟𝐟, 𝐮𝐮) ln 𝑝𝑝�𝐲𝐲�𝐗𝐗, 𝐟𝐟�𝑝𝑝�𝐟𝐟�𝐮𝐮�𝑝𝑝(𝐮𝐮) 𝑞𝑞(𝐟𝐟,𝐮𝐮) 𝑝𝑝�𝐲𝐲�𝐗𝐗, 𝐟𝐟�𝑝𝑝�𝐟𝐟�𝐮𝐮�𝑝𝑝(𝐮𝐮) = ∫ 𝑝𝑝(𝐟𝐟|𝐮𝐮)𝑞𝑞(𝐮𝐮) ln = ∫ 𝑝𝑝(𝐟𝐟|𝐮𝐮)𝑞𝑞(𝐮𝐮) ln 𝑑𝑑𝐟𝐟𝑑𝑑𝐮𝐮 𝑑𝑑𝐟𝐟𝑑𝑑𝐮𝐮 𝑞𝑞(𝐟𝐟,𝐮𝐮) 𝑝𝑝�𝐲𝐲�𝐗𝐗, 𝐟𝐟�𝑝𝑝�𝐟𝐟�𝐮𝐮�𝑝𝑝(𝐮𝐮) 𝑝𝑝(𝐟𝐟|𝐮𝐮)𝑞𝑞(𝐮𝐮) 𝑝𝑝�𝐲𝐲�𝐗𝐗, 𝐟𝐟�𝑝𝑝(𝐮𝐮) 𝑞𝑞(𝐮𝐮) 𝑑𝑑𝐟𝐟𝑑𝑑𝐮𝐮 𝑑𝑑𝐟𝐟𝑑𝑑𝐮𝐮 = ∫ 𝑞𝑞(𝐮𝐮) �∫ 𝑝𝑝(𝐟𝐟|𝐮𝐮)ln𝑝𝑝(𝐲𝐲|𝐗𝐗, 𝐟𝐟)𝑑𝑑𝐟𝐟 + ln 𝑝𝑝(𝐮𝐮) 𝑞𝑞(𝐮𝐮) � 𝑑𝑑𝐮𝐮 = ∫ 𝑞𝑞(𝐮𝐮)[∫ 𝑝𝑝(𝐟𝐟|𝐮𝐮)ln𝑝𝑝(𝐲𝐲|𝐗𝐗, 𝐟𝐟)𝑑𝑑𝐟𝐟]𝑑𝑑𝐮𝐮 − ∫ 𝑞𝑞(𝐮𝐮)ln 𝑞𝑞(𝐮𝐮) 𝑝𝑝(𝐮𝐮) 𝑑𝑑𝐮𝐮 = ∫ 𝑞𝑞(𝐮𝐮)[∫ 𝑝𝑝(𝐟𝐟|𝐮𝐮)ln𝑝𝑝(𝐲𝐲|𝐗𝐗, 𝐟𝐟)𝑑𝑑𝐟𝐟]𝑑𝑑𝐮𝐮 − 𝐾𝐾𝐾𝐾[𝑞𝑞(𝐮𝐮)||𝑝𝑝(𝐮𝐮)] (14) (14)式の右辺第 1 項をℒ1 と表すと, ℒ1 = ∫ 𝑞𝑞(𝐮𝐮)[∫ 𝑝𝑝(𝐟𝐟|𝐮𝐮)ln𝑝𝑝(𝐲𝐲|𝐗𝐗, 𝐟𝐟)𝑑𝑑𝐟𝐟]𝑑𝑑𝐮𝐮 −𝟏𝟏 = ∫ 𝑞𝑞(𝐮𝐮) �ln𝑁𝑁(𝐲𝐲|𝐊𝐊 𝐧𝐧𝐧𝐧 𝐊𝐊 𝐦𝐦𝐦𝐦 𝐮𝐮, 𝜎𝜎 2 𝐈𝐈) − 1 −𝟏𝟏 tr(𝐊𝐊 𝐧𝐧𝐧𝐧 − 𝐊𝐊 𝐧𝐧𝐧𝐧 𝐊𝐊 𝐦𝐦𝐦𝐦 𝐊𝐊 𝐦𝐦𝐦𝐦 )� 𝑑𝑑𝐮𝐮 2𝜎𝜎 2 1 2 = ∫ 𝑞𝑞(𝐮𝐮)ln𝑁𝑁(𝐲𝐲|𝐊𝐊 𝐧𝐧𝐧𝐧 𝐊𝐊 −𝟏𝟏 𝐦𝐦𝐦𝐦 𝐮𝐮, 𝜎𝜎 𝐈𝐈)𝑑𝑑𝐮𝐮 − 2𝜎𝜎 2 −𝟏𝟏 tr(𝐊𝐊 𝐧𝐧𝐧𝐧 − 𝐊𝐊 𝐧𝐧𝐧𝐧 𝐊𝐊 𝐦𝐦𝐦𝐦 𝐊𝐊 𝐦𝐦𝐦𝐦 ) となる.𝑞𝑞(𝐮𝐮) = 𝑁𝑁(𝐮𝐮|𝐦𝐦, 𝐒𝐒)を与えたもとで(15)式の右辺第 1 項は −𝟏𝟏 2 2 ∫ 𝑞𝑞(𝐮𝐮)ln𝑁𝑁(𝐲𝐲|𝐊𝐊 𝐧𝐧𝐧𝐧 𝐊𝐊 −𝟏𝟏 𝐦𝐦𝐦𝐦 𝐮𝐮, 𝜎𝜎 𝐈𝐈)𝑑𝑑𝐮𝐮 = ∫ 𝑁𝑁(𝐮𝐮|𝐦𝐦, 𝐒𝐒)ln𝑁𝑁(𝐲𝐲|𝐊𝐊 𝐧𝐧𝐧𝐧 𝐊𝐊 𝐦𝐦𝐦𝐦 𝐮𝐮, 𝜎𝜎 𝐈𝐈)𝑑𝑑𝐮𝐮 であり,𝐤𝐤 𝐓𝐓𝐢𝐢 を𝐊𝐊 𝐦𝐦𝐦𝐦 の i 番目の列ベクトル(i = 1, 2,…,n)を表すとき 𝐓𝐓 −𝟏𝟏 𝑛𝑛 2 2 𝑁𝑁(𝐲𝐲|𝐊𝐊 𝐧𝐧𝐧𝐧 𝐊𝐊 −𝟏𝟏 𝐦𝐦𝐦𝐦 𝐮𝐮, 𝜎𝜎 𝐈𝐈) = ∏𝑖𝑖=1 𝑁𝑁(𝑦𝑦𝑖𝑖 |𝐤𝐤 𝐢𝐢 𝐊𝐊 𝐦𝐦𝐦𝐦 𝐮𝐮 , 𝜎𝜎 ) 𝐓𝐓 −𝟏𝟏 だから,𝚲𝚲𝐢𝐢 = 𝜎𝜎 −2 𝐊𝐊 −𝟏𝟏 𝐦𝐦𝐦𝐦 𝐤𝐤 𝐢𝐢 𝐤𝐤 𝐢𝐢 𝐊𝐊 𝐦𝐦𝐦𝐦 として −𝟏𝟏 (16) = ∫ 𝑁𝑁(𝐮𝐮|𝐦𝐦, 𝐒𝐒)ln ∏𝑛𝑛𝑖𝑖=1 𝑁𝑁(𝑦𝑦𝑖𝑖 |𝐤𝐤 𝐓𝐓𝐢𝐢 𝐊𝐊 𝐦𝐦𝐦𝐦 𝐮𝐮 , 𝜎𝜎 2 )𝑑𝑑𝐮𝐮 76 (15) (16)
−𝟏𝟏 = ∫ 𝑁𝑁(𝐮𝐮|𝐦𝐦, 𝐒𝐒) ∑𝑛𝑛𝑖𝑖=1 ln𝑁𝑁(𝑦𝑦𝑖𝑖 |𝐤𝐤 𝐓𝐓𝐢𝐢 𝐊𝐊 𝐦𝐦𝐦𝐦 𝐮𝐮, 𝜎𝜎 2 ) 𝑑𝑑𝐮𝐮 よって, 2 = ∑𝑛𝑛𝑖𝑖=1 �ln𝑁𝑁(𝑦𝑦𝑖𝑖 |𝐊𝐊 𝐓𝐓𝐦𝐦𝐦𝐦 𝐊𝐊 −𝟏𝟏 𝐦𝐦𝐦𝐦 𝐦𝐦, 𝜎𝜎 ) − 1 2𝜎𝜎 2 tr(𝐒𝐒𝚲𝚲𝐢𝐢 )� −𝟏𝟏 ℒ1 = (20) = ∑𝑛𝑛𝑖𝑖=1 �ln𝑁𝑁(𝑦𝑦𝑖𝑖 |𝐊𝐊 𝐓𝐓𝐦𝐦𝐦𝐦 𝐊𝐊 𝐦𝐦𝐦𝐦 𝐦𝐦, 𝜎𝜎 2 ) − となり, ln𝑝𝑝(𝐲𝐲|𝐗𝐗) ≥ ℒ1 − 𝐾𝐾𝐾𝐾[𝑞𝑞(𝐮𝐮)||𝑝𝑝(𝐮𝐮)] 2 = ∑𝑛𝑛𝑖𝑖=1 �ln𝑁𝑁(𝑦𝑦𝑖𝑖 |𝐊𝐊 𝐓𝐓𝐦𝐦𝐦𝐦 𝐊𝐊 −𝟏𝟏 𝐦𝐦𝐦𝐦 𝐦𝐦, 𝜎𝜎 ) − 1 2𝜎𝜎 2 1 2𝜎𝜎 2 tr(𝐒𝐒𝚲𝚲𝐢𝐢 ) − tr(𝐒𝐒𝚲𝚲𝐢𝐢 ) − 1 2𝜎𝜎 2 1 2𝜎𝜎 2 𝑘𝑘�𝑖𝑖𝑖𝑖 � 𝑘𝑘�𝑖𝑖𝑖𝑖 � − 𝐾𝐾𝐾𝐾[𝑞𝑞(𝐮𝐮)||𝑝𝑝(𝐮𝐮)] ≡ ℒ2 (17) となる.ここで,𝑘𝑘�𝑖𝑖𝑖𝑖 は𝐊𝐊 𝐧𝐧𝐧𝐧 − 𝐊𝐊 𝐧𝐧𝐧𝐧 𝐊𝐊 −𝟏𝟏 𝐦𝐦𝐦𝐦 𝐊𝐊 𝐦𝐦𝐦𝐦 の i 番目の対角成分を表す(i = 1, 2,…,n).𝑞𝑞(𝐮𝐮)のパラメータである m と S の勾配は 𝜕𝜕ℒ2 𝜕𝜕𝐦𝐦 𝜕𝜕ℒ2 (18) −𝟏𝟏 = 𝜎𝜎 −2 𝐊𝐊 𝐦𝐦𝐦𝐦 𝐊𝐊 𝐦𝐦𝐦𝐦 𝐲𝐲 − 𝚲𝚲𝚲𝚲 1 1 = 𝐒𝐒 −𝟏𝟏 − 𝚲𝚲 (19) � = 𝜎𝜎 −2 𝚲𝚲−1 𝐊𝐊 −𝟏𝟏 𝐦𝐦 𝐦𝐦𝐦𝐦 𝐊𝐊 𝐦𝐦𝐦𝐦 𝐲𝐲 (20) 𝜕𝜕𝐒𝐒 2 2 で与えられ,(18), (19)を 0 とおいて得られる 𝐒𝐒� = 𝚲𝚲 (21) −1 が最適解となる. 勾配降下法が厳密にパラメータの勾配を求める方法であるのに対し,確率的勾配降下法では,厳密にパラ メータの勾配を求めるのではなく,その不偏推定量である確率的勾配を用いる.学習データをあるサイズに 小分けしたとき,小分けした 1 つ 1 つをミニバッチとよぶ.ミニバッチを用いた確率的勾配降下法では,学 習データからランダムに選択された 1 つのミニバッチを用いて確率的勾配を計算する.Hensman et al. (2013) は,自然勾配法 (Amari, 1998) で使われる関数を確率的勾配として用い,ガウス過程のパラメータの勾配を 計算する方法を提案した.モデルパラメータを𝛉𝛉,目的関数を𝑄𝑄(𝛉𝛉),フィッシャーの情報量行列を𝐺𝐺(𝛉𝛉),t 回目の反復計算後のパラメータを𝛉𝛉(𝐭𝐭) と表すとき,自然勾配法(Amari, 1998)では,(t+1)回目でのパラメータ 𝛉𝛉(𝒕𝒕+𝟏𝟏) を (22) 𝛉𝛉(𝐭𝐭+𝟏𝟏) = 𝛉𝛉(𝐭𝐭) + 𝛼𝛼∇𝜃𝜃 𝐺𝐺 −1 (𝛉𝛉(𝐭𝐭) )𝑄𝑄(𝛉𝛉(𝐭𝐭) ) により更新させる.ここで,∇はベクトル微分演算子であり,α は自然勾配法におけるステップサイズであ る.𝑞𝑞(𝐮𝐮)のパラメータである m と S に対して (23) 𝛉𝛉𝟏𝟏 = 𝐒𝐒 −𝟏𝟏 𝐦𝐦, 𝛉𝛉𝟐𝟐 = −𝐒𝐒 −𝟏𝟏 /2 𝐓𝐓 𝛈𝛈𝟏𝟏 = 𝐦𝐦, 𝛈𝛈𝟐𝟐 = 𝐦𝐦𝐦𝐦 + 𝐒𝐒 とおく.指数分布族では自然勾配𝐺𝐺 −1 (𝛉𝛉) ∂ℒ2 / ∂𝛉𝛉は 𝐺𝐺 −1 (𝛉𝛉) ∂ℒ2 ∂𝛉𝛉 = ∂ℒ2 (24) ∂𝛈𝛈 と単純化されることを用いて,(t+1)回目でのパラメータ𝛉𝛉𝟏𝟏,(𝐭𝐭+𝟏𝟏) , 𝛉𝛉𝟐𝟐,(𝐭𝐭+𝟏𝟏) を 1 1 1 −𝟏𝟏 −𝟏𝟏 𝛉𝛉𝟐𝟐,(𝐭𝐭+𝟏𝟏) = − 𝐒𝐒(𝐭𝐭) + 𝛼𝛼 �− 𝚲𝚲 + 𝐒𝐒(𝐭𝐭) � 2 2 2 −𝟏𝟏 −𝟏𝟏 𝛉𝛉𝟏𝟏,(𝐭𝐭+𝟏𝟏) = 𝐒𝐒(𝐭𝐭) 𝐦𝐦(𝐭𝐭) + 𝛼𝛼(𝜎𝜎 −2 𝚲𝚲−1 𝐊𝐊 −𝟏𝟏 𝐦𝐦𝐦𝐦 𝐊𝐊 𝐦𝐦𝐦𝐦 𝐲𝐲 − 𝐒𝐒(𝐭𝐭) 𝐦𝐦(𝐭𝐭) ) により更新させる. 77 (25) (26)
3. SAS Viya によるガウス過程回帰の実装 3.1. GPREG アクションの記法 SAS Viya では,アクションセット(action set)とよばれる関数のグループが用意されており,専用のアクシ ョンセットを用いることで,高度な分析や目的に応じたモデルの生成を容易に行うことができる.アクショ ンセットには,ある特定の処理を行うためのアクション(action)が含まれている.ノンパラメトリックベイズ アクションセット(nonparametric Bayes action set)は,SAS Visual Data Mining and Machine Learning (VDMML) 8.4 にて新規追加されたアクションセットであり,混合ガウスモデルを用いたクラスター分析を行うための GMM アクションと,ガウス過程回帰を行うための GPREG アクションが含まれている(SAS Institute Inc., 2019).GPREG アクションでは,確率的変分推論を用いたガウス過程回帰 (stochastic variational Gaussian process regression; SVGPR)を行うことができる. ・入力変数(説明変数) ,ターゲット変数(出力変数)の指定 INPUT パラメータにて入力変数を,TARGET パラメータにてターゲット変数を指定する. ・誘導点の指定 NINDUCINGPOINTS = により誘導点の個数を指定する.FIXINDUCINGPOINTS = FALSE と指定すること で,データに応じて誘導点が最適化される.SEED パラメータにより,k-平均クラスタリングにより誘導点 を設定する際に用いる乱数のシードを指定する.指定しない場合,コンピュータクロックから乱数のシード がセットされる点は,他の SAS プロシジャ,乱数関数,乱数 CALL ルーチンと同様である. k-平均クラスタリングでは,所与のデータを xi (i = 1, 2,…n), 各クラスを代表する点を𝛍𝛍𝐤𝐤 (k = 1, 2,…,K)とす るとき,𝐱𝐱 𝐢𝐢 と𝛍𝛍𝐤𝐤 の距離を平方ユークリッド距離により定義し,距離が近いほど類似度が高いと考えて所与の データを各クラスへと分類する.xi が属するクラスが k 番目のクラスであることを𝑧𝑧𝑖𝑖 = 𝑘𝑘と表すとき,k-平 均クラスタリングは 2 argmin ∑𝑛𝑛𝑖𝑖=1 ∑𝐾𝐾 𝑘𝑘=1 𝛿𝛿(𝑧𝑧𝑖𝑖 = 𝑘𝑘)‖𝐱𝐱 𝐢𝐢 − 𝛍𝛍𝐤𝐤 ‖ となる𝑧𝑧1:𝐾𝐾 = (𝑧𝑧1 , 𝑧𝑧2 , … , 𝑧𝑧𝐾𝐾 )と𝜇𝜇1:𝐾𝐾 = (𝜇𝜇1 , 𝜇𝜇2 , … , 𝜇𝜇𝐾𝐾 )を求める最適化問題として定式化される(佐藤, 2016).こ こに δ はカッコの等式が成り立てば 1 を,それ以外は 0 をとるクロネッカーのデルタである. ・入力データの分割 入力データを,学習させるためのデータと,学習結果の汎用性を評価するためのデータに分割するために は PARTHBYFRAC パラメータを用いる.入力データを,学習データ(training data),検証データ(validation data あるいは development data),テストデータ(test data)に分割することができ,例えば valid = 0, test = 0.2 と 指定すると,入力データのうち 80%のデータが学習データとして使用され,残り 20%のデータがテストデー タとして使用される.PARTHBYFRAC パラメータの SEED = は,入力データを分割するために用いる乱数 のシードを指定するためのサブパラメータである. 78
・カーネル関数の指定 ガウス過程のカーネル関数𝑘𝑘(𝐱𝐱, 𝐱𝐱′)を指定するためには KERNEL パラメータを用いる.GPREG アクション の KERNEL パラメータでは,周期カーネル(periodic kernel) 𝑘𝑘(𝐱𝐱, 𝐱𝐱 ′ ) = exp(−sin2 (|𝐱𝐱 − 𝐱𝐱 ′ |/2)/𝜃𝜃) = exp(𝜃𝜃1 cos(|𝐱𝐱 − 𝐱𝐱 ′ |/𝜃𝜃2 )) RBF カーネル (radial basis function kernel) 𝑘𝑘(𝐱𝐱, 𝐱𝐱 ′ ) = 𝜃𝜃1 exp(−|𝐱𝐱 − 𝐱𝐱 ′ |2 /𝜃𝜃2 ), 線形カーネル(linear kernel) 𝑘𝑘(𝐱𝐱, 𝐱𝐱 ′ ) = 𝐱𝐱 T 𝐱𝐱 ′ Matern3/2 カーネル 𝑘𝑘(𝐱𝐱, 𝐱𝐱 ′ ) = (1 + √3|𝐱𝐱 − 𝐱𝐱 ′ |/𝜃𝜃)exp(−√3|𝐱𝐱 − 𝐱𝐱 ′ |/𝜃𝜃) Matern5/2 カーネル 𝑘𝑘(𝐱𝐱, 𝐱𝐱 ′ ) = (1 + √3|𝐱𝐱 − 𝐱𝐱 ′ |/𝜃𝜃 + 5|𝐱𝐱 − 𝐱𝐱 ′ |2 /3𝜃𝜃 2 ) の 5 種類のカーネルを指定できる.AUTORELEVANCEDETERMINATION パラメータを用いれば,カーネル 関数を設計するにあたり,関連度自動決定(automatic relevance determination; ARD) (Neal, 1996)を実装するこ とができる.デフォルトは FALSE であり TRUE と指定すると ARD が実装される.例えば,ガウス過程の カーネル関数として KERNEL = RBF により RBF カーネルを指定した場合,i 番目の入力値を xi = (xi1, xi2,…, xiD)と表すとき(i = 1, 2,…n),AUTORELEVANCEDETERMINATION = FALSE とすると 1 𝑘𝑘(𝐱𝐱 𝐧𝐧 , 𝐱𝐱 𝐦𝐦 ) = 𝜃𝜃1 exp �− ∑𝑑𝑑𝑖𝑖=1 2 (𝑥𝑥𝑛𝑛𝑛𝑛 −𝑥𝑥𝑚𝑚𝑚𝑚 )2 𝑙𝑙 �, AUTORELEVANCEDETERMINATION = TRUE とすると ARD が実装された RBF カーネル 1 𝑘𝑘(𝐱𝐱 𝐧𝐧 , 𝐱𝐱 𝐦𝐦 ) = 𝜎𝜎 2 exp �− ∑𝑑𝑑𝑖𝑖=1 2 (𝑥𝑥𝑛𝑛𝑛𝑛 −𝑥𝑥𝑚𝑚𝑚𝑚 )2 𝑙𝑙𝑖𝑖2 � と設定される.デフォルトの FALSE では入力値の各成分が関数に与える影響は一定であるが,TRUE と指 定した場合,𝑙𝑙12 , 𝑙𝑙22 , … , 𝑙𝑙𝐷𝐷2 を決めることによって入力値の各成分が関数に与える影響の大小を設定することが できる. ・最適化アルゴリズムの指定 NLOOPTS パラメータにより,モデルパラメータの最適化アルゴリズムを指定する.GPREG アクション では,確率的勾配降下法 (stochastics gradient descent method; SGD)と適応モーメント法(adaptive moment estimation; Adam)の実行が可能であり,ALGORITHM = ‘SGD’と指定すれば確率的勾配降下法が適用され, ALGORITHM = ‘ADAM’と指定すれば Adam (Kingma and Ba, 2014)が適用される. デフォルトは ALGORITHM = ‘SGD’であり,確率的勾配降下法の最適化アルゴリズム(オプティマイザ ー)のためのパラメータである SGDOPT = にて用意されているサブパラメータ MOMENTUM =, ADAPTIVE LEARNING RATE =, ADAPTIVE DECAY = を用いることで,モーメンタム法や Adadelta (Zeiler, 2012)の実行 も可能である.いずれも,学習データをランダムに並べ替えた上で,学習データを分割することで複数個の サブセットを用意し,いずれか 1 組のサブセットを用いてパラメータを更新する. 79
モデルパラメータを𝜃𝜃,目的関数を Q(𝜃𝜃)と表し,t 回目の反復計算後のパラメータを𝜃𝜃(𝑡𝑡) と表すとき,確率
的勾配降下法では,(t+1)回目でのパラメータ𝜃𝜃(𝑡𝑡+1) を
𝜃𝜃(𝑡𝑡+1) = 𝜃𝜃(𝑡𝑡) − 𝛼𝛼∇𝜃𝜃 𝑄𝑄(𝜃𝜃(𝑡𝑡) )
により更新させる.ここに,∇はベクトル微分演算子であり,α はステップサイズである.なお,ステップ
サイズ α は,機械学習では learning rate(学習率あるいは学習係数)とよばれる.目的関数において平坦域
や鞍点が存在する場合,上記に示した単純な確率的勾配降下法では,パラメータの更新が遅くなることがあ
りえる(原田, 2017)
.この問題を解決するため,モーメンタム法では慣性係数を利用し,
△ 𝜃𝜃(𝑡𝑡) = 𝜇𝜇 △ 𝜃𝜃(𝑡𝑡) − 𝛼𝛼∇𝜃𝜃 𝑄𝑄(𝜃𝜃(𝑡𝑡) )
𝜃𝜃(𝑡𝑡+1) = 𝜃𝜃(𝑡𝑡) +△ 𝜃𝜃(𝑡𝑡+1)
によりパラメータを更新させる.Adadelta では(t+1)回目でのパラメータ𝜃𝜃𝑡𝑡+1 を
𝑣𝑣(𝑡𝑡+1) = 𝜌𝜌𝑣𝑣(𝑡𝑡) + (1 − 𝜌𝜌)�∇𝜃𝜃 𝑄𝑄(𝜃𝜃(𝑡𝑡) ) ∘ ∇𝜃𝜃 𝑄𝑄(𝜃𝜃(𝑡𝑡) )�
△ 𝜃𝜃(𝑡𝑡) = −��𝑠𝑠(𝑡𝑡) + 𝜀𝜀�∇𝜃𝜃 𝑄𝑄(𝜃𝜃(𝑡𝑡) )/��𝑣𝑣(𝑡𝑡+1) + 𝜀𝜀�
𝑠𝑠(𝑡𝑡+1) = 𝜌𝜌𝑠𝑠(𝑡𝑡) + (1 − 𝜌𝜌){△ 𝜃𝜃(𝑡𝑡) ∘△ 𝜃𝜃(𝑡𝑡) }
𝜃𝜃(𝑡𝑡+1) = 𝜃𝜃(𝑡𝑡) +△ 𝜃𝜃(𝑡𝑡)
により更新させる.ここに𝐴𝐴 ∘ 𝐵𝐵は行列 A と行列 B のアダマール積を表す.初期値として𝑣𝑣(0) = 0, 𝑠𝑠(0) = 0と
おき,パラメータが収束するまで反復計算を行う.𝜀𝜀はゼロでの除算を回避するために追加される非常に小
さい定数である.Adam では(t+1)回目でのパラメータ𝜃𝜃(𝑡𝑡+1) を
𝑚𝑚(𝑡𝑡+1) = 𝛽𝛽1 𝑚𝑚(𝑡𝑡) + (1 − 𝛽𝛽1 )∇𝜃𝜃 𝑄𝑄(𝜃𝜃(𝑡𝑡) )
𝑣𝑣(𝑡𝑡+1) = 𝛽𝛽2 𝑣𝑣(𝑡𝑡) + (1 − 𝛽𝛽2 )�∇𝜃𝜃 𝑄𝑄(𝜃𝜃(𝑡𝑡) ) ∘ ∇𝜃𝜃 𝑄𝑄(𝜃𝜃(𝑡𝑡) )�
𝑚𝑚
� (𝑡𝑡+1) = 𝑚𝑚(𝑡𝑡+1) /(1 − 𝛽𝛽1𝑚𝑚+1 )
𝑣𝑣�(𝑡𝑡+1) = 𝑣𝑣(𝑡𝑡+1) /(1 − 𝛽𝛽2𝑚𝑚+1 )
𝜃𝜃(𝑡𝑡+1) = 𝜃𝜃(𝑡𝑡) − 𝛼𝛼𝑚𝑚
� (𝑡𝑡+1) /(�𝑣𝑣�(𝑡𝑡+1) + 𝜀𝜀)
により更新させる.初期値として𝑚𝑚(0) = 0, 𝑣𝑣(0) = 0とおき,パラメータが収束するまで反復計算を行う.こ
こに,α はステップサイズ,𝛽𝛽1 と𝛽𝛽2 はそれぞれパラメータの勾配の指数移動平均の減衰率とパラメータ勾配
の二乗の指数移動平均の減衰率,𝜀𝜀はゼロでの除算を回避するために追加される非常に小さい定数である.
SAS プログラム 1:GPREG アクションによるガウス過程回帰の実行
proc cas;
loadactionset "nonParametricBayes" ;
action nonParametricBayes.gpreg result = r ,
table = { name="sinewave"},
inputs = {{name='x'}},
target = 'y',
seed = 20201104,
nInducingPoints = 10,
fixInducingPoints = TRUE,
80
kernel = "RBF",
autoRelevanceDetermination = TRUE,
partbyfrac = {valid = 0 test = 0.2 seed = 20201105},
nloOpts = {
algorithm = 'ADAM',
optmlOpt = {maxIters = 2000},
sgdOpt = {
learningRate = 0.05,
momentum = 0.8,
adaptiveRate = True,
adaptiveDecay = 0.9,
miniBatchSize = 500
},
printOpt = {printFreq = 100}
}
outInducingPoints = { name = "GpReg_inducing", replace = TRUE},
outVariationalCov = { name = "GpReg_S", replace = TRUE},
savestate = {name = "gpregStore", replace = TRUE}
;
print r ;
run ;
quit ;
4. おわりに
本稿では,ノンパラメトリックベイズモデルのひとつであるガウス過程をとりあげ,簡単に解説した.更
に,SAS VDMML の GPREG アクションによる実装例を紹介した.VDMML は SAS のプラットフォームで
ある SAS Viya を実行基盤としており,VDMML のプログラミングガイド(SAS Institute Inc., 2019)では,人工
的に生成した正弦波データに対する適用例が紹介されている.SAS Cloud Analytic Services (CAS)には,各種
機能を関数化したアクションセットが多数用意されており,GPREG アクションが含まれているンパラメト
リックベイズアクションセットには,混合ガウスモデルを用いたクラスタリングを行うためのアクションセ
ット GMM が用意されている.ガウス過程回帰は,SAS の代わりに JMP の「Gauss 過程」プラットフォーム
でも実行可能である(SAS Institute Inc., 2018).
現在,機械学習の分野で最も多く使用されているプログラミング言語は Python である(小野, 2018,関根,
2018).Python は,コードがシンプルであるがゆえのプログラミングの容易さと豊富なパッケージライブラ
リが魅力であり,ガウス過程を行う GPy が開発されている(https://github.com/SheffieldML/GPy).また機械学
81
習ワークフレームである scikit-learn にて実行可能であるほか, 深層学習ワークフレームである TensorFlow で はガウス過程を扱うパッケージとして GPflow が用意された(https://github.com/GPflow/GPflow).当然のこと ながら Python 以外のプログラミング言語でも実行可能である.MATLAB では,機械学習による解析を行う ためのフレームワークとして Statistics and Machine Learning Toolbox が用意されており,ガウス過程回帰の学 習は関数 fitrgp を用いて,ガウス過程回帰による予測値は関数 predict を用いて,それぞれ実行することが できる(https://jp.mathworks.com/help/stats/gaussian-process-regression-models.html). SAS 社が開発したコンピューティングアーキテクチャ SAS Viya は初めからクラウドで動くように設計さ れたオープンなプラットフォームとなっており,SAS から Python など SAS 以外のプログラミング言語の利 用が可能である.SAS Viya がサポートする Jupiter Notebook から Python の AI ライブラリを利用すること で,ネットワークの各層での処理をひとつずつプログラムする必要がなくなる.SAS Viya の studio インター フェースは,機械学習の手法を SAS 言語でプログラミングし実行できるため,SAS ユーザーにとってはこ ちらのほうが使いやすいかもしれない.一方,SAS Viya を使えない環境であっても,SAS と Python など他 の解析ソフトウェアと連動させることができる.Python から SAS を利用する方法については中嶋(2018) を,SAS から Python を利用する方法については関根(2019)を参照されたい. 参考文献 [1] Amari, S. (1998). Natural gradient works efficiently in learning. Neural Computation, 10, 251–276. [2] Bishop, C. M. (2006). Pattern Recognition and Machine Learning. New York: Springer. (パターン認識と機械学 習:ベイズ理論による統計的予測. 元田浩・栗田多喜夫・樋口知之監訳, 丸善出版, 2012) [3] Hensman, J., Fusi, N., and Lawrence, N. D. (2013). Gaussian Processes for Big Data. In Proceedings of the TwentyNinth Conference on Uncertainty in Artificial Intelligence. [4] Hoffman, M., Blei, D. M., Wang, C. and Paisley, J. (2012). Stochastic variational inference. Journal of Machine Learning Research, 14, 1303–1347. [5] Kingma, D.P. and Ba, J.L. (2014). Adam: A method for stochastic optimization. In Proceedings of the 3rd International Conference for Learning Representations. arXivpreprint arXiv:1412.6980. [6] Neal, R. M. (1996). Bayesian Learning for Neural Networks. Lecture Notes in Statistics, 118. New York: Springer. [7] SAS Institute Inc. (2018). JMP 14 予測モデルおよび発展的なモデル. Cary, NC: SAS Institute Inc. [8] SAS Institute Inc. (2019). SAS Visual Data Mining and Machine Learning 8.4: User's Guide. Cary, NC: SAS Institute Inc. [9] Snelson, E and Ghahramani, Z. (2006). Sparse Gaussian process using pseudo-inputs. In Neural Information Processing System, 13. MIT Press. [10] Titsias, M. K. (2009). Variational learning of inducing variables in sparse Gaussian process. In Artificial Intelligence and Statistics. 567–574. [11] Zeiler, M. D. (2012). ADADELTA: An Adaptive Learning Rate Method. arXivpreprint arXiv:1212.5701. [12] 小野潔. (2018). SAS の目指す AI/機械学習/深層学習とは!! SAS ユーザー総会論文集. 441–475. 82
[13] 佐藤一誠. (2016). 機械学習プロフェッショナルシリーズ ノンパラメトリックベイズ 点過程と統計的機 械学習の数理. 講談社. [14] 須山敦史. (2019). 機械学習プロフェッショナルシリーズ ベイズ深層学習. 講談社. [15] 関根暁史. (2019). SAS から Python を操る. SAS ユーザー総会論文集. [16] 関根崇之. (2018). 60 分でわかる!ディープラーニング最前線. リクルート社. [17] 中嶋優一. (2018). Python による SAS データハンドリング. SAS ユーザー総会論文集. 246. [18] 原田達也. (2017). 機械学習プロフェッショナルシリーズ 画像認識. 講談社. [19] 持橋大地.(2015). ガウス過程の基礎と教師なし学習. 統計数理研究所 H26 年度公開講座. https://www.ism.ac.jp/~daichi/lectures/H26-GaussianProcess/gp-lecture2-daichi.pdf (最終閲覧日:2020 年 8 月 4 日) [20] 持橋大地・大羽成征. (2019). 機械学習プロフェッショナルシリーズ ガウス過程と機械学習. 講談社. 付録 ベイズ推論では,観測されたデータを X,興味のあるパラメータを Z とするとき, 𝑝𝑝(𝐳𝐳|𝐱𝐱) = 𝑝𝑝(𝐱𝐱,𝐳𝐳) 𝑝𝑝(𝐱𝐱) = 𝑝𝑝(𝐱𝐱|𝐳𝐳)𝑝𝑝(𝐳𝐳) (A1) ∫ 𝑝𝑝(𝐱𝐱|𝐳𝐳)𝑝𝑝(𝐳𝐳)𝑑𝑑𝐳𝐳 によって与えられる事後分布𝑝𝑝(𝐳𝐳|𝐱𝐱)を用いる.(A1)によって与えられる事後分布𝑝𝑝(𝐳𝐳|𝐱𝐱)が解析的に求められ ない場合に,近似的な解𝑞𝑞(𝐳𝐳)を得る方法のひとつが変分推論を用いた近似であり,変分近似,変分ヘイズと よばれる.変分近似では,𝑞𝑞(𝐳𝐳)と𝑝𝑝(𝐳𝐳|𝐱𝐱)の間の KL ダイバージェンス 𝐾𝐾𝐾𝐾[𝑞𝑞(𝐳𝐳)||𝑝𝑝(𝐳𝐳|𝐱𝐱)] = ∫ 𝑞𝑞(𝐳𝐳)ln 𝑝𝑝(𝐳𝐳|𝐱𝐱) 𝑞𝑞(𝐳𝐳) 𝑑𝑑𝐳𝐳 (A2) = ∫ 𝑞𝑞(𝐳𝐳)(ln𝑝𝑝(𝐳𝐳|𝐱𝐱) − ln𝑞𝑞(𝐳𝐳))𝑑𝑑𝐳𝐳 を最小とするような変分パラメータ𝛏𝛏を求めることにより,最適な近似解𝑞𝑞 ∗ (𝐳𝐳)を得る.一方で変分近似は, 対数周辺尤度の下界を最大化する確率分布を求める問題としても定式化できる.イェンセン(Jensen)の不等 式を用いれば ln𝑝𝑝(𝐱𝐱) = ln ∫ 𝑝𝑝(𝐱𝐱, 𝐳𝐳)𝑑𝑑𝐳𝐳 = ln ∫ 𝑞𝑞(𝐳𝐳) ≥ ∫ 𝑞𝑞(𝐳𝐳)ln 𝑝𝑝(𝐱𝐱,𝐳𝐳) 𝑞𝑞(𝐳𝐳) 𝑝𝑝(𝐱𝐱,𝐳𝐳) 𝑞𝑞(𝐳𝐳) 𝑑𝑑𝐳𝐳 (A3) 𝑑𝑑𝐳𝐳 = 𝓛𝓛(𝛏𝛏) となる.𝓛𝓛(𝛏𝛏)は対数周辺尤度の下界となっており,(周辺尤度をエビデンスとよぶことから)エビデンスの変 分下界(variational lower bound of evidence)あるいはエビデンス下界(evidence lower bound; ELBO)とよばれる. 𝓛𝓛(𝛏𝛏) = ∫ 𝑞𝑞(𝐳𝐳)ln = ∫ 𝑞𝑞(𝐳𝐳)ln 𝑝𝑝(𝐱𝐱,𝐳𝐳) 𝑞𝑞(𝐳𝐳) 𝑑𝑑𝐳𝐳 𝑝𝑝(𝐳𝐳|𝐱𝐱)𝑝𝑝(𝐱𝐱) 𝑞𝑞(𝐳𝐳) 𝑑𝑑𝐳𝐳 83
= ∫ 𝑞𝑞(𝐳𝐳)(ln𝑝𝑝(𝐳𝐳|𝐱𝐱) + ln𝑝𝑝(𝐱𝐱) − ln𝑞𝑞(𝐳𝐳))𝑑𝑑𝐳𝐳 = ∫ 𝑞𝑞(𝐳𝐳)ln𝑝𝑝(𝐳𝐳|𝐱𝐱)𝑑𝑑𝐳𝐳 + ln𝑝𝑝(𝐱𝐱) − ∫ 𝑞𝑞(𝐳𝐳)ln𝑞𝑞(𝐳𝐳)𝑑𝑑𝐳𝐳 = ln𝑝𝑝(𝐱𝐱) + ∫�𝑞𝑞 (𝐳𝐳)ln𝑝𝑝(𝐳𝐳|𝐱𝐱) − 𝑞𝑞(𝐳𝐳)ln𝑞𝑞(𝐳𝐳)�𝑑𝑑𝐳𝐳 だから (A4) = ln𝑝𝑝(𝐱𝐱) − ∫ 𝑞𝑞(𝐳𝐳)�ln𝑞𝑞(𝐳𝐳) − ln𝑝𝑝(𝐳𝐳|𝐱𝐱)�𝑑𝑑𝐳𝐳 ln𝑝𝑝(𝐱𝐱) − 𝓛𝓛(𝛏𝛏) = ∫ 𝑞𝑞(𝐳𝐳)�ln𝑞𝑞(𝐳𝐳) − ln𝑝𝑝(𝐳𝐳|𝐱𝐱)�𝑑𝑑𝐳𝐳 (A5) = 𝐾𝐾𝐾𝐾[𝑞𝑞(𝐳𝐳)||𝑝𝑝(𝐳𝐳|𝐱𝐱)] となり,対数周辺尤度 p(x)と変分下界との差分は,𝑞𝑞(𝐳𝐳)と𝑝𝑝(𝐳𝐳|𝐱𝐱)の間の KL ダイバージェンスに一致する. 対数周辺尤度 p(x)は変分パラメータ𝛏𝛏に関わらず一定であるため,𝑞𝑞(𝐳𝐳)と𝑝𝑝(𝐳𝐳|𝐱𝐱)の間の KL ダイバージェンス を最小にする𝑞𝑞 ∗ (𝐳𝐳)は変分下界𝓛𝓛(𝛏𝛏)を最大にすることがわかる. 連絡先 E-mail: yada.shinjo.7h@kyoto-u.ac.jp 84
SASから始めるRPA ~SASからtsClinical Metadata Desktop Toolsを操る~ 関根 暁史 (藤本製薬株式会社) SAS lets Python do Robotic Process Automation. Satoshi Sekine Fujimoto Pharmaceutical Corp. 要旨 PC-SAS から Python の PyAutoGUI モジュールに命令して、富士通の tsClinical(無料の CDISC デファイ ン-XML 作成ツール)の GUI 操作を自動化させることとした。 また MS ワードも自動操作させることとした。 キーワード:PC-SAS,RPA,tsClinical Metadata Desktop Tools,Python,PyAutoGUI,PyInstaller,MS Word 1. はじめに 業務効率化のために RPA(Robotic Process Automation)という方法が近年流行している。RPA とは、 GUI 操作といった日常業務によくある単純な反復作業(例えば GUI 画面でのマウス&クリック操作)をロ ボット作業に委ねるというものである。 Python の PyAutoGUI モジュールは正に RPA を実現するためのツールであり、事前に用意していた画 像ファイルと実際の GUI 画面とのパターンマッチングにより、マウスを移動させ自動で GUI ボタンを クリックさせる機能を持つ。 本論文では、PC-SAS から PyAutoGUI に命令して富士通の tsClinical Metadata Desktop Tools(無料の CDISC Define.xml Generator)の GUI 操作を自動化させることとした。この PyAutoGUI が行っていた工 程を、PyInstaller モジュールは EXE ファイル化することができるので、最終的には Python に頼ること なく PC-SAS だけで RPA を達成できるようになる。 また MS Word の GUI 操作の自動化についても併せて解説する。 85
2. RPA とは 近年 DX(デジタルトランスフォーメーション)という言葉が流行っているが、RPA もその 1 つであ る。RPA とは、GUI のアイコンを自動でマウス&クリックさせるなどして、主に事務作業を省力化さ せることである。RPA の特徴としては(1)コーディングなしでロボットが動く。(2)既存のシステムには 影響を与えない。(3)IT システムに影響しないためユーザー部門主導で導入できる。などが挙げられ る。本論文では、RPA を実現するためのツール PyAutoGUI を用いて、富士通 tsClinical Metadata Desktop Tools および MS Word を自動実行することとする。 3. tsClinical Metadata Desktop Tools を操る 3-1. PyAutoGUI による Define.xml 作成操作 tsClinical Metadata Desktop Tools とは富士通のフリーの CDISC Define.xml 作成ツールである。先ずは SAS により tsClinical の main.properties ファイルの内容に追記する。main.properties に必要な PATH 情報 さえ記入されれば、後は GUI ボタンを押すだけの作業に持ち込める。 properties フォルダの中の main.properties ファイル 次に Python の PyAutoGUI モジュールを使用するのであるが、事前に以下のような GUI アイコンのス クリーンショット(画像ファイル)を準備しておく。 PyAutoGUI モジュールは、上記画像ファイルと同じ画像パターンが PC 画面上に見つかれば、そこに マウスを自動で移動させて行き、PC 画面上の GUI ボタンを自動でクリックさせる。上記の一連の作業 は PC-SAS の 1 つのプログラムが制御している。 画像のパターンマッ チングにより Generate ボタンを自 動で押させる Python の PyAutoGUI 命令 = SAS が一連のプログラムを制御 86
PyAutoGUI の動きとしては、①「Generate」ボタンを押して→②「Define.xml has been created」の文言 が出てきたら→③「×」ボタンを押下→④「Yes」ボタンを押下する工程となり、これにより Define.xml が出来上がる。同じ画像パターンを見つけるのに時間が掛かる場合は、別途 opencv-contribpython パッケージをインストールすることで、工程が高速化することがある。 3-2. Jupyter Notebook でも操作できる 前項では PC-SAS から Python に命令していたが、もちろん Jupyter Notebook(Anaconda3) + SASPy の操 作に切り替えても構わない。 3-3. マウス座標での操作 上記までの作業が 1 回転でもしていれば、GUI ボタンの絶対座標が判明するので、次回からは画像パ ターンマッチングを省略して、マウス座標をクリックするだけのプログラムに変更することも可能であ る。このプログラムコードは巻末の付録に掲載した(プログラム 1)。 Generate ボタンの座標 (961,456)を自動で押さ せるだけのプログラム に変更も可能 マウス絶対座標 画像のパターンマッチングをしていたときは、画像パターンが見つかるまでの時間が次の GUI ボタン を押すまでの待機時間となっていた。しかしマウス座標を使用して直接ボタンを押す方法では、次の ボタンを押すまでの待機時間が取れないので、適度なスリープ時間を行程に挟み込む必要がある。そ のようなとき Python の time.sleep()関数が役立つであろう。 87
3-4. PyInstaller 上記までに出来上がっていた Python スクリプトファイル(拡張子.py)は、PyInstaller モジュールを使う ことで EXE ファイルに変換することが出来る。つまり Python が存在しない環境であっても PC-SAS が 直接 EXE ファイルを叩くことで RPA が実現できるようになる。 直接制御 SAS EXE ファイル PyInstaller モジュールは Python インターフェースで使うのではなく、コマンドプロンプトで使うことに 注意されたい。 3-5. Define.xml 作成以外の操作 tsClinical Metadata Desktop Tools には Define.xml の作成以外にも、Define.xml から Excel ファイルにコ ンバートする機能や、Define.xml のバリデーション(Pinnacle21 のバリデーションとは異なる)をする機能 が備わっている。それらの機能も基本的に上記までの方法と同様の方法で操ることが出来る。 4. MS Word を操る Word ファイルの全文字フォントを一斉に MS 明朝+Times New Roman に変換するプログラムを考え る。以下のような GUI アイコンの画像ファイルを事前準備する。 前章まではマウス操作だけを扱っていたが、PyAutoGUI はキーボード操作もできる。例えば全文書の 選択には Ctrl+A を押すが、pgui.hotkey("ctrl","a")のようにキーボードを押すことができる。工程として は、①フォントのボタンを押して→②「MS明朝」を選択し→③「Times New Roman」を選択し→④「×」 ボタンを押下して終了し→⑤「保存」ボタンを押下してファイルを上書き保存する。本プログラムは巻 末の付録に掲載した(プログラム 2)。 Word の自動操作は VBA でもできるではないかと思われるかも知れないが、GUI と CUI では作成物 に差ができることがある。PyAutoGUI では半角ギリシャ文字が Times New Roman に変換されたが、VBA では全角 MS 明朝となってしまう。前者の方がよりライターから好まれる体裁であろう。 88
5. まとめ PyAutoGUI モジュールを使うことにより tsClinical Metadata Desktop Tools の全ての機能を自動化する ことができた。これにより CUI 操作のできる Pinnacle21 に比べて Define-XML 作成において遜色がなく なった。また MS Word 操作のように GUI を自動化する方が CUI 操作よりも有利な成果物ができる場合 もあった。さらに Python スクリプトを EXE 化することで、Python に依存しない工程に持って行くこと も可能であった。RPA は AI とは異なるものであるが、本論文は最も近いニュアンスであった人工知能・ AIカテゴリーに含めさせて頂いた。 参考文献 ・ Al Sweigart (2017).退屈なことは Python にやらせよう ―ノンプログラマーにもできる自動化処理プログ ラミング,オライリ-・ジャパン ・ 関根 暁史 (2019).SAS から Python を操る,SAS ユーザー総会 2019 論文集 ・ http://sasonediver.blog.fc2.com/ 89
付録
*「プログラム1.sas」;
/*----------------------------------------------------------------------------------以下のパスを記入してSASプログラムを使用してください。
-------------------------------------------------------------------------------------*/
*---富士通tsc-desktopフォルダーの置き場所(フルパス記入);
%let _path=C:\tsc-desktop-103-oss\tsc-desktop;
*---ADaM用specかSDTM用specか選択(ADaM/SDTM);
%let _select=ADaM;
*---ADaM用specの場合ARMを挿入するか否か(true/false);
%let _arm=true;
*---エクセルspecの保存場所指定(フルパス記入);
%let _inpath=C:\tsc-desktop-103-oss\tsc-desktop\excel;
*---エクセルspecファイル名(拡張子ごと記入);
%let _infile=ADaM_metadata_template_20170815.xlsx;
*---Define-XML出力場所指定(フルパス記入);
%let _outpath=C:\tsc-desktop-103-oss\tsc-desktop;
*---出力Define-XMLファイル名(拡張子ごと記入);
%let _outfile=define.xml;
*---Pictureファイル保存場所(フルパス記入);
*%let _picture=hoge\picture;
filename _temp "&_outpath.";
data _null_;
*call symputx("figure",tranwrd(strip("&_picture."),"\","/"));
call symputx("_xpython","'"||tranwrd(strip(pathname("_temp")),'','" "')||'\pgui.py'||"'" );
run;
filename Python "&_outpath.\pgui.py" encoding="utf-8";
proc stream outfile=Python resetdelim="br"; begin
# coding: utf-8 br newline;
*import os br newline;
*os.chdir("&figure.") br newline;
from time import sleep br newline;
import pyautogui as pgui br newline;
/*while True: br newline;
c1=pgui.locateCenterOnScreen("01Generate.png") br newline;
if c1: br newline;
break br newline;*/
90
c1=(961,456) br newline; print(c1) br newline; sleep(8) br newline;*8秒待機; pgui.moveTo(c1) br newline; pgui.click() br newline; /*while True: br newline; c2=pgui.locateCenterOnScreen("02created.png") br newline; if c2: br newline; break br newline;*/ c2=(211,549) br newline; print(c2) br newline; sleep(5) br newline;*5秒待機; pgui.moveTo(c2) br newline; pgui.click() br newline; /*while True: br newline; c3=pgui.locateCenterOnScreen("03Close.png") br newline; if c3: br newline; break br newline;*/ c3=(994,15) br newline; print(c3) br newline; sleep(2) br newline;*2秒待機; pgui.moveTo(c3) br newline; pgui.click() br newline; /*while True: br newline; c4=pgui.locateCenterOnScreen("04Yes.png") br newline; if c4: br newline; break br newline;*/ c4=(490,415) br newline; print(c4) br newline; pgui.moveTo(c4) br newline; pgui.click() br newline; ;;;; filename _compath "&_path."; filename indef "&_path./properties/main.properties"; data def; infile indef firstobs=1 pad; input @1 _txt $char32767.; if substr(_txt,1,15)='e2dDatasetType=' then _txt="e2dDatasetType=&_select."; 91
if substr(_txt,1,25)='e2dIncludeResultMetadata=' then _txt="e2dIncludeResultMetadata=&_arm.";
infile=tranwrd(tranwrd(tranwrd("&_inpath.\&_infile.",'/','\'),'\','\\'),':','\:');
if substr(_txt,1,22)='e2dDataSourceLocation=' then _txt='e2dDataSourceLocation='||strip(infile);
outfile=tranwrd(tranwrd(tranwrd("&_outpath.\&_outfile.",'/','\'),'\','\\'),':','\:');
if substr(_txt,1,18)='e2dOutputLocation=' then _txt='e2dOutputLocation='||strip(outfile);
text="'cd "||strip(pathname("_compath"))||"'";
call symputx("xcommand",text);
run;
filename outdef "&_path./properties/main.properties";
data _null_;
set def;
file outdef;
put +(kverify(_txt," ")-1) _txt;
run;
option noxwait noxsync;
x &_xpython.;
data _null_;
x=sleep(2);
run;
option xsync;
x &xcommand.;
x 'tsc-desktop.bat';
option xwait noxsync;
92
*「プログラム2.sas」;
/*----------------------------------------------------------------------------------以下のパスを記入してSASプログラムを使用してください。
-------------------------------------------------------------------------------------*/
*---文字フォントを変更したい Word ファイルが置いてあるフォルダ(パス記入);
%let _inpath=.;
*---文字フォントを変更したい Word ファイル名(拡張子ごと記入, .rtf も可);
%let _infile=Class.rtf;
*---画像ファイル保存場所(パス記入);
%let _picture=./picture;
filename _pict "&_picture.";
data _null_;
call symputx("picture",pathname("_pict"));
run;
filename _temp "&_inpath.";
data _null_;
call symputx("figure",tranwrd(strip("&picture."),"\","/"));
call symputx("_wopen","'"||tranwrd(strip(pathname("_temp")||"\&_infile."),'','" "')||"'" );
call symputx("_xpython","'"||tranwrd(strip(pathname("_temp")),'','" "')||'\pgui.py'||"'" );
run;
option noxwait noxsync;
x &_wopen.;
filename Python "&_inpath.\pgui.py" encoding="utf-8";
proc stream outfile=Python resetdelim="br"; begin
# coding: utf-8 br newline;
import os br newline;
os.chdir("&figure.") br newline;
from time import sleep br newline;
import pyautogui as pgui br newline;
while True: br newline;
c1=pgui.locateCenterOnScreen("01Font.png") br newline;
if c1: br newline;
break br newline;
*c1=(401,147) br newline;
print(c1) br newline;
pgui.moveTo(c1) br newline;
93
pgui.click() br newline; pgui.hotkey("Enter") br newline; pgui.hotkey("ctrl","a") br newline; pgui.moveTo(c1) br newline; pgui.click() br newline; while True: br newline; c2=pgui.locateCenterOnScreen("02Mincho.png") br newline; if c2: br newline; break br newline; *c2=(302,317) br newline; print(c2) br newline; pgui.moveTo(c2) br newline; pgui.click() br newline; pgui.moveTo(c1) br newline; pgui.click() br newline; while True: br newline; c3=pgui.locateCenterOnScreen("03Times.png") br newline; if c3: br newline; break br newline; *c3=(328,323) br newline; print(c3) br newline; pgui.moveTo(c3) br newline; pgui.click() br newline; pgui.moveTo(c1) br newline; pgui.click() br newline; while True: br newline; c4=pgui.locateCenterOnScreen("04Close.png") br newline; if c4: br newline; break br newline; *c4=(1086,85) br newline; print(c4) br newline; pgui.moveTo(c4) br newline; pgui.click() br newline; while True: br newline; c5=pgui.locateCenterOnScreen("05Save.png") br newline; if c5: br newline; break br newline; *c5=(538,544) br newline; print(c5) br newline; 94
pgui.moveTo(c5) br newline; pgui.click() br newline; ;;;; x &_xpython.; 95
統計理論 / 生物統計 ・ 医薬関連 96
中間解析を伴う生物学的同等性試験のデザイン検討 ○橋本 隆正、舟尾 暢男 (武田薬品工業株式会社 日本開発センター 生物統計室) Two-stage designs for bioequivalence studies Takamasa Hashimoto, Nobuo Funao Statistical & Quantitative Sciences, Takeda Pharmaceutical Company Limited 要旨 後発医薬品の生物学的同等性試験ガイドラインでは、本試験で中間解析を行い、この結果による追加データ 取得が認められている。本稿では固定デザイン、群逐次デザイン、例数再算定を伴う群逐次デザインの比較 を行う。 キーワード:生物学的同等性試験、クロスオーバーデザイン、例数設計、中間解析、群逐次デザイン(group sequential design)、アダプティブ・デザイン(adaptive design)、inverse normal method、例数再算定 1. はじめに 本邦の「後発医薬品の生物学的同等性試験ガイドライン」が昨年改正され、令和 3 年 4 月より本格適用とな った。統計解析における大きな変更点として「予試験の結果を生物学的同等性の評価に用いることはできな い」 「原則として、本試験とは別に例数追加試験を実施し、本試験のデータと合わせて解析することは認めな い」ことが挙げられ、 「予試験の結果をそのまま生物学的同等性試験のデータとして評価に用いることができ る」「例数追加試験は 1 回に限る」「追加試験では検定の多重性による第 1 種の過誤の確率の増大が問題にな るが、生物学的同等性試験においては(中略)あまり問題にしなくてよい」等の記載が削除された。それに 代わり、生物学的同等性の評価は本試験においてのみ行い、もし追加データを取得する場合は、第 1 種の過 誤確率を制御した上で中間解析を実施し、中間解析結果に基づき十分な検出力が担保できる例数を設定する こととなった。 本稿では、Kieser and Rauch(2015)の記法に従い、通常の(中間解析を計画しない)生物学的同等性試験に おける例数設計方法を紹介した後、中間解析を計画する生物学的同等性試験について、例数再算定を計画す ることも含んだ例数設計方法を提案する。次に、通常のデザイン(以下「固定デザイン」、fixed design) 、中間 解析を計画するが例数再算定は行わないデザイン(以下「群逐次デザイン」、group sequential design)、中間解 析と例数再算定の両方を計画するデザイン(以下「アダプティブ・デザイン」、adaptive design)の性能をシミ ュレーションにて評価する SAS マクロを紹介した上で、考察を行う。最後に、生物学的同等性試験のデザイ ン検討・試験実施を行う際の留意点を述べる。 97
2. 生物学的同等性試験 生物学的同等性試験を行う目的は、先発医薬品(以下、標準製剤)に対する後発医薬品(以下、試験製剤) の生物学的な同等性を保証することにあり、通常、標準製剤と試験製剤のバイオアベイラビリティ(有効成 分の未変化体又は活性代謝物が体循環血中に入る速度及び量)を比較し、バイオアベイラビリティが同等で あることをもって「生物学的に同等な製剤」とする。試験は原則としてクロスオーバー法で行い、被験者の 各投与群への割付は無作為に行う。血液を採取体液と する場合には、単回投与試験では AUC( t 最終サンプリ ング時間 t までの血中濃度-時間曲線下面積) 及び Cmax (最高血中濃度の実測値、以下同)を、多回投与試験 投与時期 1 投与時期 2 投与群 1 試験製剤𝑇 標準製剤𝑅 投与群 2 標準製剤𝑅 試験製剤𝑇 では AUCτ(定常状態に達した後の一投与間隔τ内の血中濃度-時間曲線下面積)及び Cmax を生物学的同等 性評価パラメータとする。これらのパラメータは対数正規分布することが多いため、通常はパラメータを対 数変換した上で解析し、各製剤の生物学的同等性評価パラメータの対数値の平均値の差の 90%信頼区間が log(0.80)~log(1.25)の範囲にあるとき、すなわち各製剤の生物学的同等性評価パラメータの平均値の比の 90% 信頼区間が 0.80~1.25 の範囲にあるとき、試験製剤と標準製剤は生物学的に同等と判定する。この代わりに、 有意水準 5%の 2 つの片側検定で評価してもよい。 本稿では試験製剤(𝑇)と標準製剤(𝑅)について 2 剤 2 期クロスオーバー法(上図)にて試験を行うことを 想定し、試験全体の有意水準として片側 5%を設定する。話を簡単にするため、生物学的同等性評価パラメー タのうち Cmax について議論を進める。 3. 固定デザインの例数設計 Kieser and Rauch(2015)の記法に従って、前章で規定した通常の生物学的同等性試験(以下、固定デザイン) のための数式を展開する。まず、試験製剤𝑇と標準製剤𝑅との比較を行うため、以下のモデルを考える。 「後発 医薬品の生物学的同等性試験ガイドライン」QA-41 に従い、持ち越し効果はモデルに含めない。 𝑋 𝜇 𝜋 𝑠 𝑒 (1) 𝑋 𝜇 :製剤(𝑇又は𝑅) 𝜋 :投与時期(1 又は 2) 𝑠 :投与群𝑖、被験者𝑗の変量効果 ~ 𝑁 0, 𝜎 、𝜎 は被験者間分散 𝑒 𝑛 :試験全体の例数(≠各投与群の例数) :Cmax の実測値を対数変換した値 :誤差 ~ 𝑁 0, 𝜎 、𝜎 は被験者内分散(なお、被験者内の変動係数𝐶𝑉は𝐶𝑉 exp 𝜎 1となる) 上記のモデル(1)より信頼区間(2)を計算することで、生物学的同等性の評価を行うことが出来る(𝛼 0.05)。 2𝜎 𝑛 (2) 𝑋 𝑋 𝑡 , , 𝑋 𝑋 𝑡 , 2𝜎 𝑛 𝑋 、𝑋 :それぞれ試験製剤𝑇と標準製剤𝑅における Cmax の実測値を対数変換した後の平均 𝑡 𝜎 :𝜎 の推定値、𝜎 は例えば「各投与群の平方和」の和を2 𝑛 , :自由度𝑛 2の𝑡分布の 1 𝛼 パーセンタイル点 98 2 で除した値にて推定
上記の信頼区間(2)を用いた生物学的同等性の評価は、以下の仮説に関する検定を行うことに相当する。 𝐻 :𝐻 ∪ 𝐻 vs. 𝐻 : 𝐻 ∩ 𝐻 𝐻 :𝜇 𝜇 log 1.25 vs. 𝐻 : 𝜇 𝜇 log 1.25 𝐻 :𝜇 𝜇 log 0.80 vs. 𝐻 : 𝜇 𝜇 log 0.80 (3) 𝑡 上記の帰無仮説(3)は、以下の統計量を用いた 2 つの片側検定にて検定することが出来、𝑇 𝑇 𝑡 , かつ のとき𝐻 を棄却、すなわち生物学的同等と判定する。 , 𝑇 𝑛𝑋 2 𝑋 𝑇 𝑛𝑋 2 𝑋 log 1.25 log 0.80 (5) 𝜎 / exp 𝜇 、被験者内分散𝜎 、有意 exp 𝜇 以上の枠組みにおいて、製剤間のパラメータの母平均の比𝐺𝑀𝑅 水準𝛼の下で、検出力1 (4) 𝜎 𝛽をもって生物学的同等性を示すことが出来る例数は「式(6)を満たす最小の𝑛」と計 算される。 𝐹 𝐹 𝑥, 𝑛 1.25 𝐺𝑀𝑅 𝜎 2/𝑛 log 2 :自由度𝑛 𝑡 , ,𝑛 2 𝐹 log 1.25 ⋅ 𝐺𝑀𝑅 𝜎 2/𝑛 𝑡 , ,𝑛 2 1 𝛽 (6) 2の𝑡分布の累積分布関数 例として「製剤間のパラメータの母平均の比𝐺𝑀𝑅 0.95、𝜎 0.2、𝛼 0.05」の下で、検出力90%を担保す る例数をプログラム 3.1(補遺に掲載、以下同)の SAS マクロ %FixedD にて計算すると試験全体で 26 例(1 群 13 例)と計算される。 %FixedD(_GMR=0.95, _SIGMA=0.2, _ALPHA=0.05, _POWER=0.9) ; 4. 群逐次デザインの例数設計 「後発医薬品の生物学的同等性試験ガイドライン」QA-11 では「原則として、本試験とは別に例数追加試験 を実施し、本試験のデータと合わせて解析することは認めない。 (中略)ただし、予試験の結果を含めた事前 情報から予期した以上に個体内分散が大きくなり、生物学的同等性を示すことができないリスクを考慮し、 中間解析結果に基づく追加データ取得を含むプロトコルを組むことは可能である。追加データの取得は、第 1 種の過誤確率を制御した上で、中間解析結果に基づき十分な検出力が担保できる例数で実施することを、1 回に限り認める。中間解析結果に基づく追加データ取得を含むプロトコルにおいて、第 1 種の過誤確率を制 御するために、各解析(中間解析、最終解析)における有意水準を片側 5%よりも小さく設定する場合には、 有意水準に対応した信頼区間により統計評価を行う。 」とある。これを踏まえて、本章では以下の手順にて中 間解析を伴うデザイン(以下、群逐次デザイン)を計画することを想定する。この群逐次デザインは、各解 析時の有意水準は片側 5%よりも小さくなるが、生物学的同等性を判定する機会が最大 2 回ある上、第 1 ステ 99
ージで生物学的同等と判定される(試験を終了する)機会も残されているという利点がある。なお、ここで は中間解析後の症例数再算定は考えない。 ① 各ステージの計画例数(𝑛 、𝑛 )と、試験全体の第 1 種の過誤確率が片側 5%以下となるように各ステー ジの第 1 種の過誤確率(𝛼 、𝛼 )を設定する。 ② 第 1 ステージとして、2~3 章で規定した固定デザインにて例数𝑛 の試験を実施し、生物学的同等性の評 価(中間解析)を行う。ただし、有意水準を𝛼 とする。 ③ ②にて生物学的同等性が示された場合は試験を終了する。そうでない場合は、第 1 ステージと同じデザ インにて第 2 ステージを実施した後(例数は①で規定した𝑛 )、第 1 ステージと第 2 ステージのデータを 併合した上で、生物学的同等性の評価(最終解析)を行う。ただし、有意水準を𝛼 とする。 例として「製剤間のパラメータの母平均の比𝐺𝑀𝑅 体の𝛼 0.95、𝜎 0.2、各ステージの例数𝑛 𝑛 26、試験全 0.05」の下で、検出力を計算することを考える。まず、各ステージは等例数で、かつ生物学的同等性 試験の性質を考慮した上で、試験全体の第 1 種の過誤確率を適切に制御するため Pocock の方法を使用し、 𝛼 𝛼 0.030367と設定する。別の方法を使用したい場合は、例えば seqdesign プロシジャの method にて 指 定 ・ 計 算 す る こ と が 出 来 る ( 候 補 と し て 、 POC[Pocock の 方 法 ] 、 OBF[O'Brien-Fleming の 方 法 ] 、 ERRFUNCPOC[Pocock 型の𝛼消費関数]、ERRFUNCOBF[O'Brien-Fleming 型の𝛼消費関数]等がある)。 proc seqdesign bscale=pvalue ; POCOCK: design alpha=0.05 alt=upper stop=reject info=cum(0.5,1) nstages=2 method=POC ; run ; 次に、プログラム 4.1 の SAS マクロ %GroupSequentialD を実行すると、検出力(変数 POWER)は 99.3%、 ステージ 2 への移行確率(変数 STAGE2)は 14.8%、試験全体の平均症例数(変数 ASN)は 29.8 例と計算さ れる。 %GroupSequentialD(_GMR=0.95, _SIGMA=0.2, _N1=26, _N2=26, _ALPHA1=0.030367, _ALPHA2=0.030367) ; 100
5. アダプティブ・デザインの検定方法 本章では、以下の手順にて、中間解析と例数再算定の両方を計画するデザイン(以下、アダプティブ・デザ イン)を計画する。このアダプティブ・デザインは、群逐次デザインの利点をそのまま引き継いだ上で、第 1 ステージの結果に応じて第 2 ステージの例数を変更することも出来、試験全体の第 1 種の過誤確率を片側 5% 以内に抑えることが出来る。 ① 各ステージの計画例数(𝑛 、𝑛 )と、試験全体の第 1 種の過誤確率が片側 5%以下となるように各ステー ジの第 1 種の過誤確率(𝛼 、𝛼 )を設定する。 ② 第 1 ステージとして、固定デザインにて例数𝑛 の試験を実施し、生物学的同等性の評価(中間解析)を 行う。ただし、有意水準を𝛼 とする。 ③ ②にて生物学的同等性が示された場合は試験を終了する。そうでない場合は、第 1 ステージの結果に応 じて例数再算定を行い、第 2 ステージの例数を見直す(計画例数である𝑛 を修正しない場合もあり得る)。 その後、第 1 ステージと同じデザインにて第 2 ステージを実施した後、第 1 ステージと第 2 ステージの データを inverse normal method にて結合した上で、生物学的同等性の評価(最終解析)を行う。ただし、 有意水準を𝛼 とする。inverse normal method は、例えば Wassmer and Brannath(2016)に詳細な解説があ る。 上記①~②は群逐次デザインと全く同じである。②にて生物学的同等性が示されなかった場合、第 1 ステー ジの結果に応じて例数再算定を行うが、inverse normal method を用いるため、どのような例数再算定方法を用 いても試験全体の第 1 種の過誤確率を片側 5%以内に抑えることが出来る(ただし検出力には影響する)。例 数再算定後の第 2 ステージの例数を𝑛∗ とするが、𝑛∗ の計算については後ほど述べる。 𝑛 とする。Kieser and Rauch 上記③について、各ステージの重みを𝑤 とし(𝑠:ステージ番号)、本稿では𝑤 (2015)では以下の「検定方法 1」を inverse normal method としている。 検定方法 1 第 1 ステージにて、式(4)及び式(5)の𝑇 、𝑇 から計算された𝑝値のうち大きい方を𝑝 とし、同様の計算で第 2 ステージの𝑝値を𝑝 とする(各𝑝値は独立となる) 。また、𝛷 ∙ を標準正規分布の累積分布関数、𝛷 正規分布の分位点関数(逆関数)とする。Kieser and Rauch(2015)は、𝛷 ∗ 1 ∙ を標準 𝑝 が標準正規分布に従うと ∗ し、中間解析と最終解析にてそれぞれ以下の統計量𝑇 、𝑇 で検定を行う方法を提案しているように見受けら れるが、各𝑝 は「2 つの𝑝値の最大値」であるため、帰無仮説の下でも一様分布に従わず、よって𝛷 ∗ 1 𝑝 ∗ も標準正規分布に従わない。ただし、以下の関係式から仮に𝑇 、𝑇 が標準正規分布に従うとして検定を行っ た場合、保守的な検定となる。なお、𝑇 ∗ を構成する際、第 2 ステージの重み𝑤 を計画症例数である𝑛 ではな く実際の症例数である𝑛∗ にて構成すると、試験全体の第 1 種の過誤確率が有意水準以下に制御できなくなる ことに留意する。 𝑇∗ : 𝑇∗ : ※ 𝐴 𝛷 1 𝑤𝛷 𝑁 0,1 𝑝 1 𝑝 𝑤 𝛷 𝑤 𝑤 (7) 1 𝑝 𝑁 0,1 (8) 𝐵:確率変数𝐴は確率変数𝐵よりも stochastic order の意味で小さい ところで、各ステージにおいて、式(4)及び式(5)に相当する統計量をそれぞれ𝑇 、𝑇 とすると、𝑇 と𝑇 を別々 に結合することも出来る(検定方法 2) 。両検定方法の性能は類似することが多いが、 「検定方法 1」は「検定 方法 2」よりも保守的となる点に注意する。なお、次章の例数再算定方法はいずれの検定方法にも対応する。 101
検定方法 2 1 各ステージにて、𝑇 、𝑇 から計算された𝑝値をそれぞれ𝑝 、𝑝 とする。𝛷 𝑝 と𝛷 1 𝑝 は標準正規 分布に従う。まず、中間解析では「方法 1」の式(7)にて検定を行う。次に、最終解析では以下の𝑇 、𝑇 に て検定を行い、両方の検定結果が有意である場合は生物学的に同等と判定する。 「検定方法 1」と同様、第 2 ステージの重み𝑤 を𝑛 ではなく𝑛∗ にて構成すると、試験全体の第 1 種の過誤確率が有意水準以下に制御でき なくなることに留意する。 𝑇 : 𝑇 : 𝑤𝛷 1 𝑤 𝛷 𝑝 𝑤 𝑤𝛷 1 1 𝑝 1 𝑝 ~ 𝑁 0,1 (9) ~ 𝑁 0,1 (10) 𝑤 𝑤 𝛷 𝑝 𝑤 𝑤 6. アダプティブ・デザインの例数再算定手法 Kieser and Rauch(2015)では、各統計量が「分散既知の標準正規分布」に従っている仮定の下で、 「第 1 ステ ージの統計量で条件付けた場合に、第 2 ステージで有意となる条件付検出力」を導出している。この式展開 を𝑡統計量に置き換えて例数再算定を行う方法を「例数再算定方法 1」とする。 例数再算定方法 1 各ステージにおいて式(4)及び式(5)に相当する統計量(𝑇 、𝑇 )、式(9)及び式(10)で定義した統計量(𝑇 𝑇 、 )、第 2 ステージの棄却限界値𝑐 を準備する。即ち、𝜎 を推定値でなく既知であるとすると、これらの統 計量は正規分布に従うことに注意する。例数再算定は、以下の条件付検出力が1 𝛽を超える𝑛∗ を探索すれば 良い。ただし、ここでは試験予算やスケジュールなどの試験実務上の制約を考慮して、実際に探索する際は 𝑛∗ の範囲(𝑛 𝑛∗ 𝑛 𝑃 𝑐 𝜏∗ 𝑇 𝑛 𝑛 𝑛 𝜏∗ 𝑛 𝑛 𝑛∗ /√2𝑛 𝑇 𝑇 𝜏∗ 𝑐 |𝑇 )を事前に定めることとする。 𝛷 𝑐 √𝑛 log 1.25 𝑛∗ 𝑇 √𝑛 𝑇 √𝑛 √𝑛 𝛷 𝑐 𝜏 ∗ √𝑛 √𝑛 𝑇 √𝑛 𝑛∗ 𝑇 √𝑛 (11) log 0.80 /𝜎 「例数再算定方法 1」は、 「分散既知の標準正規分布」に従う統計量を𝑡統計量に置換えているため、厳密性に 欠け、一般的な生物学的同等性試験のような症例数が少ない場合、正規近似の精度は悪くなる。そこで本稿 では以下の「例数再算定方法 2」を提案する。 例数再算定方法 2 式(8)を用いて、「第 1 ステージの統計量(式(7)の𝑇 ∗ )で条件付けた場合に、第 2 ステージで有意となる条件 付検出力」を計算すると以下となる。 𝑃𝑟 𝑇 ∗ 𝑐 | 𝑇∗ 𝑃𝑟 𝑐 |𝑝 (12) = 𝑃𝑟 𝑝 102 1 𝛷 𝑐 𝛷 1 𝑝 |𝑝
つまり、式(12)の最後の式の中にある1 𝛷 𝑐 𝛷 1 𝑝 (≡ 𝛼 ∗ とおく)を第 2 ステージの有 意水準とみなして例数設計を行うことに相当する。式(12)をさらに変形すると、以下の条件付検出力が得られ 𝛽を超える𝑛∗ を探索すればよい。実はこれは、式(6)の𝛼を𝛼 ∗ に置き換えることで、条件 るので、その値が1 付検出力を求めることと等価になることが分かる。なお、 「例数再算定方法 1」同様に、実際に探索する際は 𝑛∗ の範囲(𝑛 𝐹 𝑛∗ log 𝜎 𝑛 1.25 𝐺𝑀𝑅 2/𝑛∗ )を事前に定めることとする。 𝑡 , 𝑛∗ ∗, ∗ 2 𝐹 log 1.25 ⋅ 𝐺𝑀𝑅 𝜎 2/𝑛∗ 5~6 章の計算例として「製剤間のパラメータの母平均の比𝐺𝑀𝑅 𝑛 26、試験全体の𝛼 𝑡 0.95、𝜎 , 𝑛∗ ∗, ∗ 2 (13) 0.2、各ステージの例数𝑛 0.05」の下で、検出力を計算することを考える。まず、4 章の例と同じく第 1 種の 過誤確率として Pocock の方法を使用し、𝛼 𝛼 0.030367と設定する。次に、例数再算定時に目標とする 検出力を 90%とし、例数再算定後の第 2 ステージの例数𝑛∗ の範囲を 12~26 例(計画例数を超えない)とす る。プログラム 6.1 の SAS マクロ %AdaptiveD を実行すると、検出力(変数 POWER1: 「検定方法 1」での検 出力、変数 POWER2: 「検定方法 2」での検出力)は 99.2%、ステージ 2 への移行確率(変数 STAGE2)は 14.5%、試験全体の平均症例数(変数 ASN)は 29.8 例と計算される。なお、SAS マクロ %AdaptiveD の引数 _METHOD=1 で「例数再算定方法 1」を、引数_METHOD=2 で「例数再算定方法 2」を適用するが、今回の例 ではいずれも同様の結果となった。 なお、5 章で述べたように、条件付検出力がある範囲に入った場合のみ例数再算定を行う等、ここで示した方 法以外のどのような例数再算定方法を適用しても inverse normal method を用いる限り、試験全体の第 1 種の 過誤確率を片側 5%以内に抑えることが出来る。 %AdaptiveD(_GMR=0.95, _SIGMA=0.2, _N1=26, _N2=26, _N2min=12, _N2max=26, _ALPHA1=0.030367, _ALPHA2=0.030367, _POWER=0.9, _METHOD=1) ; 7. 各デザインの性能比較を行う例 生物学的同等性試験を計画する際の、 「固定デザイン」 「群逐次デザイン」 「アダプティブ・デザイン」の性能 比較を行う例を挙げる。Kieser and Rauch(2015)にて同様の考察が行われているが「デザイン間で例数の相 違があり単純な比較が難しい」 「アダプティブ・デザインの例数再算定方法が明記されていない」等の問題が ある。 デザイン共通の設定:製剤間のパラメータの母平均の比𝐺𝑀𝑅 𝜎 0.2又は0.3(想定は𝜎 0.2)、目標とする検出力 103 90% 0.9, 0.95又は 1(想定は𝐺𝑀𝑅 0.95)、
26又は52、𝛼 0.05 固定デザイン:例数𝑛 群逐次デザイン:各ステージの例数𝑛 アダプティブ・デザイン:各ステージの計画例数𝑛 範囲:12 𝑛∗ 𝑛 26、各ステージの第 1 種の過誤確率𝛼 𝑛 52、例数再算定時に目標とする検出力 𝛼 0.030367 26、例数再算定後の第 2 ステージの例数の 90%、各ステージの第 1 種の過誤確率𝛼 𝛼 0.030367 表 7.1(分散が想定通り)及び表 7.2(分散が想定よりも大きい)にて結果を示す。まず、𝐺𝑀𝑅と𝜎 が想定通 26)で検出力を 90%以上担保することが出来た。次に、𝐺𝑀𝑅のみ想定よ りである場合、固定デザイン(𝑛 0.9)や𝜎 のみ想定よりも大きい場合(表 7.2 の𝐺𝑀𝑅 りも小さい場合(表 7.1 の𝐺𝑀𝑅 イン(𝑛 0.95)は、固定デザ 26)では検出力が著しく低下する一方、アダプティブ・デザインが最も検出力が高く、かつ平均 症例数は 48.00~54.09 例であり、固定デザイン(𝑛 52)よりも同様又はやや少ない結果となった。群逐次 デザインはアダプティブ・デザインよりも平均症例数が少ないが、検出力の面ではやや劣る結果となった。 ただし、群逐次デザインとアダプティブ・デザインでは解析を 2 回実施する可能性があり、中間解析のため のデータ収集とクリーニング、中間解析の準備・実施に一定期間かかることから、試験実施期間が限られて いる場合は固定デザイン(𝑛 52)を選択する可能性も十分にある。 また、𝐺𝑀𝑅が想定より小さく、かつ𝜎 も想定より大きい場合(表 7.2 の𝐺𝑀𝑅 0.9)は、いずれのデザイン も検出力が低下したが、その中でもアダプティブ・デザインが最も検出力が高かった(70 %弱)。ただし、ア ダプティブ・デザインの平均症例数は 63.12 例となり、例数(≒試験実施のための予算)が限られている状況 ではアダプティブ・デザインを選択・例数再算定後の第 2 ステージの例数𝑛∗ の範囲を設定する際に注意が必 要となる。 表 7.1:各デザインの性能比較結果(𝜎 0.2、シミュレーション回数=500000 回) 𝑮𝑴𝑹 デザイン 𝟎. 𝟗 𝑮𝑴𝑹 𝟎. 𝟗𝟓 𝑮𝑴𝑹 𝟏 固定デザイン(𝒏 𝟐𝟔) 検出力 64.85% 90.68% 97.42% 固定デザイン(𝒏 𝟓𝟐) 検出力 90.31% 99.61% 99.99% 群逐次デザイン 検出力 86.97% 99.31% 99.98% 第 2 ステージ移行確率 45.00% 14.63% 5.02% 平均症例数 37.70 例 29.80 例 27.31 例 アダプティブ・デザイン 検定方法 1 での検出力 95.12% 99.94% >99.99% (例数再算定方法 2) 検定方法 2 での検出力 95.04% 99.94% >99.99% 第 2 ステージ移行確率 44.80% 14.57% 4.99% 平均症例数 48.00 例 32.86 例 28.25 例 104
表 7.2:各デザインの性能比較結果(𝜎 0.3、シミュレーション回数 𝑮𝑴𝑹 デザイン 𝟎. 𝟗 𝑮𝑴𝑹 500000 回) 𝟎. 𝟗𝟓 𝑮𝑴𝑹 𝟏 固定デザイン(𝒏 𝟐𝟔) 検出力 36.51% 56.40% 64.40% 固定デザイン(𝒏 𝟓𝟐) 検出力 62.25% 88.68% 96.23% 群逐次デザイン 検出力 56.52% 84.84% 94.06% 第 2 ステージ移行確率 73.87% 57.37% 50.32% 平均症例数 45.21 例 40.92 例 39.08 例 アダプティブ・デザイン 検定方法 1 での検出力 68.37% 93.06% 98.04% (例数再算定方法 2) 検定方法 2 での検出力 69.09% 94.04% 99.00% 第 2 ステージ移行確率 73.83% 57.28% 50.36% 平均症例数 63.12 例 54.09 例 50.36 例 8. 補足事項 検出力・必要例数の計算方法に関する補足 式(6)や式(13)は、𝑡分布による近似により検出力や必要例数を計算している(以下、近似法)。一方、張・安藤 (2014)で紹介されている Owen の Q 関数を用いた正確な計算を行うことも出来る(以下、正確法)。常識的 な想定の下、目標とする検出力が 80%や 90%である場合は、近似法と正確法を用いた例数設計結果は、同じ か 2 例だけ異なるのみであることから、本稿でのシミュレーション・プログラムは近似法を採用した。 ただし、アダプティブ・デザインにおける例数再算定時に起こり得る「検出力算出時の𝛼(式(13)では𝛼 ∗ )が 小さい」 「𝜎 の推定値が大きい」場合等では、近似法と正確法による検出力計算結果に差が生じ、状況によっ ては、近似法による検出力が負と算出される場合もある。よって、アダプティブ・デザインにおける例数再 算定時に「条件付検出力が●%よりも小さい場合は例数を更新しない」等、80%や 90%よりも低い条件での条 件付検出力の基準を設ける場合は、近似法を正確法に切り替える等の配慮が必要となる。 𝒏 𝑮𝑴𝑹 𝝈𝑾 𝜶 正確法による検出力 近似法による検出力 26 1.00 0.2 0.030367 95.40% 94.91% 26 0.95 0.2 0.030367 86.39% 86.20% 26 0.90 0.2 0.030367 56.73% 56.08% 26 0.85 0.2 0.030367 20.55% 19.51% 26 0.80 0.2 0.030367 3.04% 3.04% 26 1.00 0.2 0.000100 9.03% -27.74% 26 0.95 0.2 0.000100 6.25% -18.27% 26 0.90 0.2 0.000100 1.91% -5.16% 26 0.85 0.2 0.000100 0.23% -0.68% 26 0.80 0.2 0.000100 0.01% -0.05% 26 1.00 0.5 0.030367 1.12% -27.71% 26 0.95 0.5 0.030367 1.05% -25.90% 26 0.90 0.5 0.030367 0.85% -20.88% 26 0.85 0.5 0.030367 0.57% -14.26% 26 0.80 0.5 0.030367 0.32% -8.13% 105
試験終了後の信頼区間計算に関する補足 「後発医薬品の生物学的同等性試験ガイドライン」QA-11 では「中間解析結果に基づく追加データ取得を含 むプロトコルにおいて、第 1 種の過誤確率を制御するために、各解析(中間解析、最終解析)における有意 水準を片側 5%よりも小さく設定する場合には、有意水準に対応した信頼区間により統計評価を行う。」とあ る。まず、群逐次デザインの場合は、各ステージの第 1 種の過誤確率を𝛼 、𝛼 と設定しているので、中間解 析と最終解析の信頼区間は、それぞれ𝛼 、𝛼 を用いて計算を行えばよいこととなる。次に、アダプティブ・ デザインの場合、inverse normal method(検定)を基礎としているため、 「有意水準に対応した信頼区間」の算 出が困難である。代替案としては、Wassmer and Brannath(2016)で紹介されている stagewise ordering による 推定方法がある。第 1 ステージで試験が終了した場合は、 「群逐次デザインにおける中間解析時の信頼区間 (𝛼 を用いた信頼区間の計算)」に帰着するので、ここでは第 2 ステージに移行した場合を考える(以下、 Wassmer and Brannath(2016)の記法に合わせる)。 各ステージの点推定値を𝜃 、その標準誤差をse 、第 1 ステージの有意水準を𝛼 とおく。inverse normal method に関する結合関数を 𝐶 𝑝 , 𝑝 100 1 𝛷 𝑤𝛷 1 𝑤 𝛷 𝑝 1 𝑝 とすると、stagewise ordering による 𝑎 % 信頼下限は「関数𝑄 𝑝 , , 𝑝 , の値がちょうど𝑎となる𝛿」と計算される。よって、𝑎 の場合は両側 90% CI、𝑎 0.05, 0.95 0.5の場合は点推定値(median unbiased point estimation)を計算することになる。 𝑄 𝑝 , ,𝑝 , 𝛼, 1 𝑐 𝑥, 𝑦 𝑐 𝑝 , ,𝑝 , 𝑑𝑦𝑑𝑥 (14) , 1 𝛼, 1 𝑐 𝑥, 𝑦 𝛷 𝛷 1 𝑐 𝑝 , ,𝑝 , 𝛼 、𝑝 , 1 𝛷 :定義関数 例として「各ステージの例数を 16 例(等例数)、点推定値である𝐺𝑀𝑅(対数スケール)をそれぞれ 0.1625 log 0.85 と 0.0513 水準𝛼 log 0.95 、標準誤差をそれぞれ0.075 0.3/4 と0.05 0.2/4 、第 1 ステージの有意 0.030367」という状況で、プログラム 8.1 の SAS マクロ %StagewiseOrderingEst にて stagewise ordering による 90%両側信頼区間(対数スケール)を計算すると 0.17318, 0.02146 、元のスケールで 0.84099, 0.97877 と計算される。 %StagewiseOrderingEst(_N1=16, _N2=16, _DIFF1=-0.1625, _DIFF2=-0.0513, _SEM1=0.075, _SEM2=0.05, _ALPHA1=0.030367, _A=0.05) ; * Lower confidence limit ; %StagewiseOrderingEst(_N1=16, _N2=16, _DIFF1=-0.1625, _DIFF2=-0.0513, _SEM1=0.075, _SEM2=0.05, _ALPHA1=0.030367, _A=0.95) ; * Upper confidence limit ; 予試験に関する補足 予試験を行う場合、群逐次デザインやアダプティブ・デザインを行う必要が無いという考えがあるかもしれ ないが、 「後発医薬品の生物学的同等性試験ガイドライン」QA-10 より「既知の情報から、必要例数及び体液 採取間隔を含む適切な試験法を計画できない場合には、予試験を行う必要がある。予試験実施の有無に関わ 106
らず、申請時には本試験の試験計画の妥当性について、十分説明できるようにしておくこと。なお、予試験 の結果を生物学的同等性の評価に用いることはできない。」ことから、予試験はあくまで本試験を実施するた めの情報取得が目的であり、検証的な位置づけの試験になり得ない。また、予試験を実施した場合でも、予 試験は少数例での実施となることが多く、この予試験の結果を含めた事前情報を得たとしても、被験者内分 散が想定よりも大きくなることで生物学的同等性を示すことが出来ないリスクは付きまとう。よって、生物 学的同等性試験を実施する際、固定デザインに加えて群逐次デザインやアダプティブ・デザインも含めて検 討を行うことが望ましいと考える。 9. まとめ 後発医薬品の生物学的同等性試験を実施するための試験デザインとして「固定デザイン」 「群逐次デザイン」 「アダプティブ・デザイン」を取り上げ、各デザインの統計的事項を整理した後、各デザインの性能をシミ ュレーションにて評価する SAS マクロを紹介し、性能比較を行う一例を示した。また、生物学的同等性試験 のデザイン検討・試験実施を行う際の一助として「検出力・必要例数の計算方法」 「試験終了後の信頼区間計 算」 「予試験」の観点から留意点を述べた。本稿で紹介した SAS マクロは改変が難しくないため、例えばアダ プティブ・デザインのアダプテーション・ルールを修正・追加する場合、これらの SAS マクロを活用いただ けるものと考える。 参考文献 後発医薬品の生物学的同等性試験ガイドライン(薬生薬審発 0319 第 1 号令和 2 年 3 月 19 日) https://www.pmda.go.jp/review-services/drug-reviews/about-reviews/p-drugs/0008.html Byron Jones and Michael G. Kenward (2014) "Design and Analysis of Cross-Over Trials (3rd Edition)", Chapman & Hall/CRC Meinhard Kieser and Geraldine Rauch (2015) "Two-stage designs for cross-over bioequivalence trials", Statistics in Medicine Gernot Wassmer and Werner Brannath (2016) "Group Sequential and Confirmatory Adaptive Designs in Clinical Trials", Springer 張 方紅、安藤 英一(2014) 「生物学的同等性試験における例数設計:正確、近似と漸近」SAS ユーザー 総会 2014 107
補遺:本文に掲載していないが引用したプログラム
プログラム 3.1:マクロ %FixedD
%macro FixedD(_GMR=0.95, _SIGMA=0.2, _ALPHA=0.05, _POWER=0.9, _Nmax=10000) ;
data N1(drop=Ta) ;
POWER=0 ;
N
=2 ;
do while(POWER < &_POWER. and N < &_Nmax.) ;
N
=N+1 ;
Ta
=quantile('T', 1-&_ALPHA., N-2) ;
POWER=cdf('T', log(1.25/&_GMR.)/(&_SIGMA*sqrt(2/N))-Ta, N-2) cdf('T', -log(1.25*&_GMR.)/(&_SIGMA*sqrt(2/N))+Ta, N-2) ;
end ;
N=N+modz(N,2) ;
run ;
proc print ; run ;
%mend ;
プログラム 4.1:マクロ %GroupSequentialD
%macro GroupSequentialD(_GMR=0.95, _SIGMA=0.2, _N1=26, _N2=26, _ALPHA1=0.030367, _ALPHA2=0.030367, _IT=100000) ;
data STAGE ;
call streaminit(777) ;
SD_2=sqrt(2)*&_SIGMA. ;
do IT=1 to &_IT. ;
do I=1 to &_N1. ;
STAGE=1 ;
DIFF =rand('NORMAL', log(&_GMR.), SD_2) ;
output ;
end ;
do I=&_N1.+1 to &_N1.+&_N2. ;
STAGE=2 ;
DIFF =rand('NORMAL', log(&_GMR.), SD_2) ;
output ;
end ;
end ;
run ;
proc summary data=STAGE ;
where STAGE=1 ;
var
DIFF ;
by
IT ;
output out=S1 mean=MEAN_1 var=VAR_1 ;
run;
proc summary data=STAGE ;
var DIFF ;
by IT ;
output out=S2 mean=MEAN_2 var=VAR_2 ;
run;
data N2 ;
merge S1 S2; by IT ;
DF
= &_N1. - 2 ;
SD2_H =(&_N1. - 1) * VAR_1 / DF / 2 ;
LOWER1=MEAN_1 - sqrt(2*SD2_H/&_N1.) * quantile('T', 1-&_ALPHA1., DF) ;
UPPER1=MEAN_1 + sqrt(2*SD2_H/&_N1.) * quantile('T', 1-&_ALPHA1., DF) ;
N
=&_N1. + &_N2. ;
DF
=N-2 ;
SD2_H =(N-1) * VAR_2 / DF / 2 ;
LOWER2=MEAN_2 - sqrt(2*SD2_H/N) * quantile('T', 1-&_ALPHA2., DF) ;
UPPER2=MEAN_2 + sqrt(2*SD2_H/N) * quantile('T', 1-&_ALPHA2., DF) ;
STAGE2=ifn( LOWER1 >= log(0.80) and UPPER1 <= log(1.25), 0, 1) ;
POWER =ifn((LOWER2 >= log(0.80) and UPPER2 <= log(1.25)) or (1-STAGE2), 1, 0) ;
ASN
=&_N1. + STAGE2*&_N2. ;
run ;
proc means data=N2 ;
var POWER STAGE2 ASN ;
run ;
%mend ;
108
プログラム 6.1:マクロ %AdaptiveD
%macro AdaptiveD(_GMR=0.95, _SIGMA=0.2, _N1=26, _N2=26, _N2min=12, _N2max=26, _ALPHA1=0.030367, _ALPHA2=0.030367,
_POWER=0.9, _METHOD=1, _IT=100000) ;
data STAGE1 ;
call streaminit(777) ;
SD_2=sqrt(2)*&_SIGMA. ;
do IT=1 to &_IT. ;
do I=1 to &_N1. ;
STAGE=1 ;
DIFF =rand('NORMAL', log(&_GMR.), SD_2) ;
output ;
end ;
end ;
run ;
proc summary data=STAGE1 ;
var
DIFF ;
by
IT ;
output out=S1 mean=MEAN_1 var=VAR_1 ;
run;
data S1 STAGE2 ;
length ZONE $20. ;
set S1 ;
S2_H=(&_N1.-1)*VAR_1/(&_N1.-2)/2 ;
T1U =(MEAN_1-log(1.25)) * sqrt(&_N1./(2*S2_H)) ;
T1L =(MEAN_1-log(0.80)) * sqrt(&_N1./(2*S2_H)) ;
P1U = cdf('T', T1U, &_N1.-2) ;
P1L =1-cdf('T', T1L, &_N1.-2) ;
P1 =max(P1U,P1L) ;
if (. < P1 < &_ALPHA1.) then do ;
ZONE
="BE at Stage1" ;
N2TILDA=0 ;
end ;
else do ;
ZONE="NOT BE at Stage1" ;
%if &_METHOD=1 %then %do ; * Based on Conditional Power ;
N2TILDA=&_N2min. ;
CPTILDA=0 ;
do while(CPTILDA < &_POWER. and N2TILDA < &_N2max.) ;
N2TILDA =N2TILDA+2 ;
TAUTILDA=log(1.25/0.8) / sqrt(2*(&_N1.+&_N2.)) / sqrt(S2_H) * ( &_N1. + sqrt(&_N2.*N2TILDA) ) ;
CPTILDA =probnorm((-probit(1-&_ALPHA2.)*sqrt(&_N1.+&_N2.)-T1U*sqrt(&_N1.))/sqrt(&_N2.)sqrt(N2TILDA/&_N1.)*T1U) - probnorm(((probit(1-&_ALPHA2.)-TAUTILDA)*sqrt(&_N1.+&_N2.)T1U*sqrt(&_N1.))/sqrt(&_N2.)-sqrt(N2TILDA/&_N1.)*T1U) ;
end ;
%end ;
%else %do ; * Based on Adjusted Alpha ;
ALPHA2 = 1-probnorm( sqrt((&_N1.+&_N2.)/&_N2.)*probit(1-&_ALPHA2.)-sqrt(&_N1./&_N2.)*probit(1-P1) ) ;
POWER
= 0 ;
N_TMP
= 2 ;
SIGMA
= sqrt(S2_H) ;
do while(POWER < &_POWER. and N_TMP < &_N2max.) ;
N_TMP = N_TMP+1 ;
Ta
= quantile('T', 1-ALPHA2, N_TMP-2) ;
POWER = cdf('T', log(1.25/exp(MEAN_1))/(SIGMA*sqrt(2/N_TMP)) - Ta, N_TMP-2) cdf('T', -log(1.25*exp(MEAN_1))/(SIGMA*sqrt(2/N_TMP)) + Ta, N_TMP-2) ;
end ;
N_TMP
= N_TMP + modz(N_TMP,2) ;
N2TILDA = max(N_TMP, &_N2min.) ;
%end ;
end;
output s1 ;
call streaminit(123) ;
do I=1 to N2TILDA ;
IT
=IT ;
109
STAGE=2 ;
SD_2 =sqrt(2)*&_SIGMA. ;
DIFF =rand('NORMAL', log(&_GMR.), SD_2) ;
output STAGE2 ;
end ;
run ;
proc summary data=STAGE2 ;
where STAGE=2 ;
var
DIFF ;
by
IT ;
output out=S2 mean=MEAN_2 var=VAR_2 ;
run ;
data N3 ;
merge S1 S2 ;
by
IT ;
S2_H=(N2TILDA-1)*VAR_2/(N2TILDA-2)/2 ;
T2U =(MEAN_2-log(1.25))*sqrt(N2TILDA/(2*S2_H)) ;
T2L =(MEAN_2-log(0.80))*sqrt(N2TILDA/(2*S2_H)) ;
W1 =sqrt(&_N1./(&_N1.+&_N2.)) ;
W2 =sqrt(&_N2./(&_N1.+&_N2.)) ;
P2U= cdf('T', T2U, N2TILDA-2) ;
P2L=1-cdf('T', T2L, N2TILDA-2) ;
P2 =max(P2U,P2L) ;
T =W1*probit(1-P1)+W2*probit(1-P2) ;
POWER1=0 ;
if (ZONE="BE at Stage1" or T > probit(1-&_ALPHA2.)) then POWER1=1 ;
Tu =W1*probit(1-P1U)+W2*probit(1-P2U) ;
Tl =W1*probit(1-P1L)+W2*probit(1-P2L) ;
POWER2=0 ;
if (ZONE="BE at Stage1" or (Tu > probit(1-&_ALPHA2.) and Tl > probit(1-&_ALPHA2.))) then POWER2=1 ;
if (ZONE="BE at Stage1") then ASN=&_N1. ;
else ASN=&_N1.+N2TILDA ;
if ZONE="BE at Stage1" then STAGE2=0 ; else STAGE2=1 ;
run ;
proc means data=N3 ;
var POWER1 POWER2 STAGE2 ASN ;
run ;
%mend ;
プログラム 8.1:マクロ %StagewiseOrderingEst
%macro StagewiseOrderingEst(_N1=16, _N2=16, _DIFF1=-0.1625, _DIFF2=-0.0513, _SEM1=0.075, _SEM2=0.05,
_ALPHA1=0.030367, _A=0.05, _GRID=1000, _ITER=20) ;
data SO ;
a
= &_A. ; * (100 x a)% CL (a=0.05,0.5,0.95) ;
DF1
= &_N1.-2 ;
DF2
= &_N2.-2 ;
W1
= sqrt(&_N1.)/sqrt(&_N1.+&_N2.) ;
W2
= sqrt(&_N2.)/sqrt(&_N1.+&_N2.) ;
LOW = -0.7 ; * log(0.5) ;
HI = 0.7 ; * log(2.0) ;
do I=1 to &_ITER. ;
D
= (LOW + HI)/2 ;
A1D = ifn(&_ALPHA1.=0, 0, 1-probnorm(probit(1-&_ALPHA1.)-D/&_SEM1.)) ;
_BYX = (1-A1D-1/(&_GRID.-1))/(&_GRID.-1) ;
_BYY = (&_GRID.-3)/(&_GRID.-1)**2 ;
QD_a = 0 ;
do X=A1D to (1-_BYX) by _BYX ;
do Y=(1/&_GRID.) to (1-1/&_GRID.) by _BYY ;
COMB1 = 1-probnorm(W1*probit(1-X) + W2*probit(1-Y)) ;
PD1
= 1-cdf('T', (&_DIFF1.-D)/&_SEM1., DF1) ;
PD2
= 1-cdf('T', (&_DIFF2.-D)/&_SEM2., DF2) ;
COMB2 = 1-probnorm(W1*probit(1-PD1) + W2*probit(1-PD2)) ;
110
if (COMB1 <= COMB2) then QD_a = QD_a +1 ; end ; end ; if (QD_a*_BYX*_BYY + A1D - a < 0) then LOW=D ; else HI=D ; end ; output ; label a="Percentile" D="Value" ; run ; proc print data=SO label ; var a D ; run ; %mend ; 以上 111
RMSTの概要とSASでの実装について ○中川雄貴1 (1イーピーエス株式会社 統計解析部) RMST Outline and Implementation in SAS Yuki Nakagawa Statistics Analysis Department, EPS Corporation 要旨 生存時間解析の代表的な手法であるハザード比では比例ハザード性が前提とされるが、比例ハザード性が 成立しない場合、結果を正しく解釈ができない問題がある。近年、比例ハザード性が成立しない場合での代 替の指標として、ある特定時点(境界時間)までの生存曲線下面積(Restricted mean survival time, RMST)を 用いた解析手法が注目されている。現在、SAS での RMST の実装方法には、LIFETEST Procedure の timelim= オプションと、SAS9.4 m6 から導入された rmst オプションがある。これら 2 つのオプションを使用し、RMST やその標準誤差を求める際、境界時間までのイベントの件数が 0 件の場合の挙動と 1 件の場合の挙動、境界 時間以降のデータがなく、最後がイベントの場合の挙動と最後が打ち切りの場合の挙動が、それぞれオプシ ョンにより異なることが確認できた。そこで、本稿では、RMST のメリット・デメリットを含めた概要と RMST を SAS で実装する際に使用するオプションに伴う挙動の相違点を報告する。 キーワード:RMST, 生存時間解析, LIFETEST Procedure, timelim=オプション, rmst オプション 1. 緒言 1.1 はじめに 生存時間解析とは、ある基準時刻から目的のイベントが起こるまでの時間を対象とする解析手法の総称で ある。医学分野では、死亡や病気の再発がイベントとして定義されることが多い[1]。生存時間解析の代表的 手法として、Cox 比例ハザードモデルによるハザード比が挙げられ、長年に渡り定型的に用いられてきた。 この手法には比例ハザード性の成立が前提とされている。しかし、時間経過によって生存割合の差が開いた り、また逆に小さくなり生存時間曲線が交差したりする場合などでは比例ハザード性が成立せず、ハザード 比が治療効果の大きさとして解釈できない値となることが問題となる。また、比例ハザード性の成立・不成 立にかかわらず、ハザードの増減の解釈が困難である点も指摘されている[2]。 このような比例ハザード性が成立しない場合の代替手法として、境界内平均生存時間(Restricted mean survival time, RMST)を用いた解析手法が注目されている[2][3]。RMST についての製薬協医薬品評価委員会デ ータサイエンス部会主催によるシンポジウム[4]が 2018 年に開催されており、SAS ユーザー総会においても企 画セッション[5]に取り上げられている。 112
本稿では、RMST の概要と LIFETEST Procedure での実装方法、並びに LIFETEST Procedure の timelim=オプ ションと SAS9.4 m6 から使用が可能となった rmst オプションの相違点を報告する。 1.2 RMST の数学的背景 RMST は「ある特定の時点(境界時間)内でのイベント発生までの時間に対する平均値」と定義されてお り、 「境界時間までの生存曲線下面積」とも言い換えることが可能である[6][7]。RMST の数学的背景は以下の � (𝜏𝜏)は次式で表すことができる。 ようになり[8][9]、ある境界時間𝜏𝜏までの RMST の推定量RMST τ 𝑁𝑁 ∗ 0 𝑖𝑖=1 � (τ) = � 𝑆𝑆̂(𝑡𝑡) 𝑑𝑑𝑑𝑑 = � 𝑆𝑆̂(𝑡𝑡𝑖𝑖−1 )(𝑡𝑡𝑖𝑖 − 𝑡𝑡𝑖𝑖−1 ) + 𝑆𝑆̂(𝑡𝑡𝑁𝑁∗ )(τ − 𝑡𝑡𝑁𝑁∗ ) RMST (1) ここで、𝑆𝑆̂(𝑡𝑡)は Kaplan-Meier 法による生存曲線の推定量、𝑁𝑁 ∗ は境界時間𝜏𝜏内のイベントの異なる発生時点数、 𝑡𝑡𝑖𝑖 は𝑖𝑖番目のイベント発生時点である。式(1)を図式化(Fig1.1)すると以下のようになり、網掛け部分が RMST � (𝜏𝜏)となる。 の推定量RMST Fig 1.1 RMST の概要図 � (𝜏𝜏)の標準誤差𝜎𝜎�は以下の式(2-1)で求められる。 また、RMST 𝑁𝑁 ∗ ここで、 𝑚𝑚 𝑑𝑑𝑖𝑖 𝐴𝐴2𝑖𝑖 𝜎𝜎� = � � 𝑌𝑌𝑖𝑖 (𝑌𝑌𝑖𝑖 − 𝑑𝑑𝑖𝑖 ) 𝑚𝑚 − 1 (2-1) 𝑖𝑖=1 τ 𝐴𝐴𝑖𝑖 = � 𝑆𝑆̂(𝑡𝑡) 𝑑𝑑𝑑𝑑 𝑡𝑡𝑖𝑖 𝑁𝑁 ∗ 𝑚𝑚 = � 𝑑𝑑𝑖𝑖 (2-2) (2-3) 𝑗𝑗=1 𝑚𝑚は境界時間までのイベント数、𝑌𝑌𝑖𝑖 はイベントが発生した時点𝑡𝑡𝑖𝑖 でのリスク集合の大きさ、そして𝑑𝑑𝑖𝑖 は時点𝑡𝑡𝑖𝑖 のイベント数を表す。 一方で、式(2-1)に�(𝑚𝑚 − 1)/𝑚𝑚を掛けた値を標準誤差(式(3))とする報告もある。ただし、どちらの標 準誤差が良いという指針はなく、SAS もオプションによってデフォルトで出力される標準誤差が異なってい る。 113
𝑁𝑁∗ 𝑚𝑚 − 1 𝑑𝑑𝑖𝑖 𝐴𝐴2𝑖𝑖 𝜎𝜎� × � = �� 𝑌𝑌𝑖𝑖 (𝑌𝑌𝑖𝑖 − 𝑑𝑑𝑖𝑖 ) 𝑚𝑚 (3) 𝑖𝑖=1 RMST の両側 100(1−𝛼𝛼)%信頼区間の算出は以下の式(4)によって求められる。𝑧𝑧𝛼𝛼�2 は標準正規分布の上側 100 × 𝛼𝛼⁄2%点である。 � (𝜏𝜏) ± 𝑧𝑧𝛼𝛼� 𝜎𝜎� RMST 2 (4) � 𝐴𝐴 (𝜏𝜏) − RMST � 𝐵𝐵 (𝜏𝜏) RMST (5) さらに、群 B を基準として群 A と群 B の RMST の群間差を評価する時、群間差は式 (5) 、その両側 100(1−𝛼𝛼)% 信頼区間は式(6)で求めることができる。 � 𝐵𝐵 (𝜏𝜏) ± 𝑧𝑧𝛼𝛼� �𝜎𝜎 � 𝐴𝐴 (𝜏𝜏) − RMST RMST �𝐴𝐴 2 + 𝜎𝜎 �𝐵𝐵 2 2 (6) この節では RMST の数学的背景について述べたが、式(1)から式(6)まで、いずれも比較的簡単な数式 であることが見て取れる。 1.3 RMST のメリット及びデメリット RMST のメリットとして、2 群比較を行う際に、比例ハザード性が成立しない場合の代替指標として扱う ことができる点が挙げられる[3][10]。さらに、Fig 1.1 からも明らかである様に、イベントが発生したある時点 (または無作為化時点)から次の時点までの生存曲線下面積の総和であり、無作為化時点(𝑡𝑡 = 0)から境 界時間(𝑡𝑡 = 𝜏𝜏)までの平均生存時間であるため、推定量として臨床的に解釈しやすい[7]。また、時点生存割 合や生存時間の中央値は、その一時点の情報のみで評価されることに対して、RMST は境界時間までの生存 曲線を反映することができている[11]。 RMST を使用する際の注意点は、明確な根拠を持つ妥当な境界時間を設定する必要があることである。妥 当な境界時間とは、臨床家によってコンセンサスが得られた時点や、類似の試験で使用された時点などであ る。明確な根拠を持つ境界時間がない場合、平均生存時間の近似となるよう、十分に長い期間を設定するこ とが推奨されている[6]。 2. SAS による RMST の実装 本稿では LIFETEST Procedure の timelim=オプションと rmst オプションの 2 種類の紹介をする。 2.1 timelim=オプション ods output で出力される Means は本来、平均生存時間の推定値を出力するものである。最後に観察された データが打ち切りである場合、生存曲線下面積が閉じられないために曲線下面積が定義できず、平均生存時 間が推定できないという問題が生じる[12]。このような状況下において、ある特定の時点を指定し、平均生存 時間の推定を可能とするためのオプションが timelim=オプションである。LIFETEST Procedure の User’s Guide を参照すると timelim=オプションのデフォルトは「the largest event time(イベントが観察された最終時点)」 となっている[9]。 この timelim=オプションを使用して、ある特定の時点として境界時間𝜏𝜏を指定することで、RMST となる生 存曲線下面積を求めることができる。timelim=オプションを使用した場合のコード例は以下のようになる[9]。 114
/* CODE 1 */ ods output Means=[output for RMST]; proc lifetest data=[input dataset] conftype=loglog alpha=0.05 timelim=[𝜏𝜏]; time AVAL*CNSR(1); strata TRTP; run; TRTP:治療群 AVAL:イベント or 打ち切りまでの時間 CNSR=0:イベント, CNSR=1:打ち切り 𝜏𝜏:境界時間 timelim=オプションを使用する場合の注意点として、LIFETEST Procedure に入力するデータセット[input dataset]内における境界時間より後のイベントは全て打ち切りに変換する必要がある。LIFETEST Procedure の User’s Guide の timelim=オプションの説明として「This option is ignored if the largest observed time is an event time.」と記載がある。そのため、timelim=オプションで指定した時点より後でイベントが発生している場合に、 timelim=オプションが無視されてしまうため、このような処理が必要となる。 また、strata ステートメントを使用し、ods output 内で Means を指定することにより、各群の RMST の推定 値とその標準誤差をデータセットとして出力することができる。しかしながら、群間差は出力できず、1.2 節 で述べた式(5)と式(6)を使用してデータステップを踏むことにより算出する必要がある。 以下のデータセット(Table 2.1.1)を使用して、timelim=オプションを使用し、境界時間を𝜏𝜏=30 とした場合 の RMST の推定した結果を例示する。 Table 2.1.1 使用したデータセット data00(CNSR=0:イベント, CNSR=1:打ち切り) ods output の Means で出力されたデータセットを以下のようになる。Mean が RMST の推定値、StdErr がそ の標準誤差であり、式(2-1)で求められたものとなる。 Table 2.1.2 timelim=オプションによる RMST の推定結果 115
2.2 rmst オプション rmst オプションは SAS 9.4 m6 から実装されたオプションである。rmst オプションを使用した場合のコード 例は以下のようになる[9]。 /* CODE 2 */ ods output RMST=[output for RMST] RMSTdiff=[output for difference]; proc lifetest data=data01 conftype=loglog alpha=0.05 rmst (tau=[𝜏𝜏] bc); time AVAL*CNSR(1); strata TRTP / diff=control("B"); run; rmst オプションでは、括弧の中のサブオプション tau=で境界時間を指定する。また、rmst オプションを使 用した場合、デフォルトで出力される標準誤差は式(3)で求められるものとなっている。timelim=オプショ ンで出力される式(2-1)の標準誤差を出力する場合には、rmst オプションのサブオプション bc を指定すれ ば良い。 さらに、群間差を評価する際には、timelim=オプション使用時には 2.1 節で記述した数式に従って群間差 をデータステップにより算出する必要があるが、rmst オプション使用時には、strata ステートメントの diff= オプションにより群間差を出力でき、control("B")の箇所でどの群を基準とするかを指定できる。ods output で RMSTdiff を指定することにより RMST の群間差及びその標準誤差を格納したデータセットが出力され る。Table 2.1.1 のデータセットを用いて、rmst オプションを使用した場合の RMST の推定とその群間差の出 力について紹介する。今回、サブオプション bc は使用せず、境界時間は𝜏𝜏=30 とした。 Table 2.2.1 rmst オプションによる RMST の推定結果 Table 2.2.2 rmst オプションによる RMST の群間差 (ods output RMST=で出力) (ods output RMSTdiff =で出力) 上記の結果より、rmst オプションを使用した場合は、Estimate が RMST の推定値、StdErr が RMST の標準 誤差となるが、Table 2.2.1 で得られた RMST の推定値は Table 2.1.2 で出力された値と一致している一方、 Table 2.2.1 標準誤差は Table 2.1.2 のそれに�(𝑚𝑚 − 1)/𝑚𝑚をかけた値と等しいものとなっている(𝑚𝑚は境界時間 𝜏𝜏までのイベント数)。また、Table 2.2.2 で群 B を基準(群 A−群 B)とした RMST の群間差をその標準誤 差を求めることができる。 このように rmst オプションを使用することで、群間差を求めることが容易になる。また、timelim=オプシ ョンを使用する際に入力するデータセット内における境界時間より後のイベントを打ち切りに変換する必要 がないため、誤った解析結果を出力するリスクを低減できることもメリットとなる。 3. timelim=オプションと rmst オプションの比較 timelim=オプションと rmst オプションの比較を行った。本稿では、RMST の推定値の出力について焦点を 当てるため、strata ステートメントを使用せず、1 群での例示を行う。また、rmst オプションではサブオプシ ョン bc を指定していない。 116
3.1 境界時間𝜏𝜏内にイベントが発生しない場合 まず、境界時間𝜏𝜏内にイベントが発生しない場合について挙動の確認を行った。このような場合を図示す ると、Fig 3.1.1 のようになり、この検証を行うにあたり、以下のデータセット(Table 3.1.1)を使用した。 AVAL はイベント/打ち切りまでの時間であり、CNSR は 0 がイベントを、1 が打ち切りを示すものである。 Table 3.1.1 使用したデータセット data01 Fig 3.1.1 境界時間内のイベントがない状態の模式図 ここで、境界時間を𝜏𝜏=5 として timelim=オプションと rmst オプションのそれぞれで RMST とその標準誤 差の推定を行った。 なお、データセット data01 は境界時間𝜏𝜏=5 より後にイベント(CNSR=0)が発生しているため、timelim= オプションを使用する場合は、LIFETEST Procedure に入力する前にこれらを打ち切り(CNSR=1)に変換し た。それぞれの結果を以下の Table 3.1.2 と Table 3.1.3 に示す。 Table 3.1.2 timelim=オプションの出力 Table 3.1.3 rmst オプションの出力 (イベントの発生無し) (イベントの発生無し) timelim=オプションを使用した場合、RMST の推定値、その推定値の標準誤差はいずれも欠損となり、推 定が不可能であった。ods output の Means は平均生存時間の推定値を出力するものであり、平均生存時間の 推定量𝜇𝜇̂ の定義は以下のものとなる[9]。 𝐷𝐷 𝜇𝜇̂ = � 𝑆𝑆̂(𝑡𝑡𝑖𝑖−1 )(𝑡𝑡𝑖𝑖 − 𝑡𝑡𝑖𝑖−1 ) (7) 𝑖𝑖=1 ここで、𝐷𝐷は異なる発生時点数である。RMST の定義である式(1)と比較すると、平均生存時間の定義式 (7)には式(1)の第 2 項がない。そのため、境界時間内にイベントがなかった場合、推定できない。一 方、rmst オプションを使用した場合は、timelim=オプションとは異なり、Table 3.1.3 に示したように RMST とその標準誤差が出力された。 3.2 境界時間𝜏𝜏内にイベントが 1 件のみ発生している場合 次に、境界時間𝜏𝜏内にイベントが 1 件のみ発生している場合の挙動について確認を行った。このような場 合を図示すると、Fig 3.2.1 のようになる。 117
Fig 3.2.1 境界時間内のイベントが 1 件のみ発生している状態の模式図 Table 3.1.1 で示した data01 を使用し、境界時間を𝜏𝜏=15 として 3.1 節と同様の解析を行った結果を以下に示 す。 Table 3.2.1 timelim=オプションの出力 Table 3.2.2 rmst オプションの出力 (イベントが 1 件発生) (イベントが 1 件発生) 境界時間までに 1 件イベントが発生している場合、いずれのオプションを使用した場合でも RMST の推 定値は算出が可能であった。しかし、標準誤差については timelim=オプションでは欠測となり、rmst オプシ ョンでは求めることができた。 これは、2 章で述べたようにオプションによってデフォルトで使用される標準誤差の算出方法が異なるた めである。timelim=オプションでは、式(2-1)を使用して標準誤差を算出するが、式内に𝑚𝑚/(𝑚𝑚 − 1)がある (𝑚𝑚は境界時間𝜏𝜏までのイベント数)。したがって、イベントが 1 件のみの場合には、分母に 0 が現れてし まうために算出が不可能となる。一方で、rmst オプションは式(3)を使用しているために、イベントが 1 件であっても、標準誤差を算出できる。 3.3 境界時間以降のデータがなく、最後がイベントの場合 続いて、境界時間𝜏𝜏以降のデータがなく、最後に観測されたデータがイベントであった場合の挙動につい て確認を行った。このような場合を図示すると、Fig 3.3.1 のようになる。 Fig 3.3.1 境界時間以降のデータがなく、最後がイベントの状態の模式図 Table 3.1.1 で示した data01 を使用し、境界時間を𝜏𝜏=30 とすることで、最後の観測データであるイベント よりも大きな時間を設定し、RMST の推定を行った。以下がそれぞれの結果となる。 118
Table 3.3.1 timelim=オプションの出力 (境界時間以降のデータがなく、最後がイベント) Fig 3.3.2 rmst オプション使用時のログの出力 (境界時間以降のデータがなく、最後がイベント) timelim=オプションを使用した場合、Fig 3.3.1 で示した網掛け部分の曲線下面積が RMST の推定値として 出力された。Fig 3.3.1 は最後の観測がイベントであり、曲線下面積が閉じられた状態である。そのため、境 界時間𝜏𝜏を大きくしても算出される RMST の推定値は同値のままとなる。 一方、rmst オプションを使用した場合、Fig 3.3.2 に示したようにログに境界時間が最終観測時点より大き いことを示す Error メッセージが出力され、RMST は推定されない。Fig 3.3.1 からは曲線下面積自体を求め ることは可能なように見えるが、RMST の定義からは外れてしまうため、推定が不可能になっているものと 考えられる。 3.4 境界時間以降のデータがなく、最後が打ち切り 最後に、境界時間𝜏𝜏以降のデータがなく、最後に観測されたデータが打ち切りであった場合の挙動につい て確認を行った。このような場合を図示すると、Fig 3.4.1 のようになる。 Table 3.4.1 使用したデータセット data02 Fig 3.4.1 境界時間以降のデータがなく、最後が打ち切 りの状態の模式図 このような想定として、上記のデータセット data02(Table 3.4.1)を使用した。最終の観測時点が 20 であ り、打ち切りとした。今回は境界時間を𝜏𝜏=30 と𝜏𝜏=40 の 2 つを設定し、timelim=オプションと rmst オプショ ンのそれぞれの結果を以下に示す。 Table 3.4.1 𝜏𝜏=30 の timelim=オプションの出力 (境界時間以降のデータがなく、最後が打ち切り) Fig 3.4.2 rmst オプション使用時のログの出力 Table 3.4.2 𝜏𝜏=40 の timelim=オプションの出力 (境界時間以降のデータがなく、最後が打ち切り) (境界時間以降のデータがなく、最後が打ち切り) timelim=オプションを使用した場合、Fig 3.4.1 で示した斜線による網掛け部分の曲線下面積と横線による 網掛け部分の曲線下面積の和が RMST として出力された。境界時間が𝜏𝜏=30 の Table 3.4.1 と境界時間が𝜏𝜏=40 の Table 3.4.2 を比較すると、データが変わっていないにもかかわらず、𝜏𝜏=40 で算出された値が大きいもの 119
となった。今回使用したデータは Fig 3.4.1 で示したように、最後の観測が打ち切りであり、曲線下面積が閉 じられていない。このように、最終生存時間が打ち切りである場合、最終観測時点の生存割合のまま、境界 時間𝜏𝜏までデータを引き延ばして計算が行われており、境界時間𝜏𝜏を大きくすればするほど出力される RMST の値は大きいものとなってしまう。 なお、rmst オプションを使用した場合は、Fig 3.4.2 に示したように 3.3 節と同様の Error がログに出力さ れ、RMST は推定されない。 4. まとめ Table 4 にこれまでの内容をまとめた。 Table 4 RMST とその標準誤差の推定値の SAS オプションによる出力の有無 𝜏𝜏までにイベントが 最終観測時点が𝜏𝜏より小さく、 0件 1件 最後がイベント 最後が打ち切り timelim= RMST 無 有 有 有 オプション 標準誤差 無 無 有 有 rmst RMST 有 有 無 無 オプション 標準誤差 有 有 無 無 このように、使用するオプションにより出力の有無が変わることに加え、算出される値が必ずしも妥当で はないことが示された。したがって、RMST の解析を行う際は、以下の 4 点を確認することが推奨される。 1. 境界時間𝜏𝜏までのイベント発生数 2. 最終観測時点のデータが打ち切りかイベントか 3. 最終観測時点と境界時間𝜏𝜏の前後関係 4. どのオプションを使用して解析を行っているか 本稿で取り上げたシチュエーションは比較的稀なものと考えられるが、RMST が探索的な評価項目として 扱われ、境界時間𝜏𝜏が複数設定される場合や、イベントの発生が少ないことが見込まれる場合には、同様の 状況が起こることが考えられる。このような場合に備えて、予め解析の計画段階から取り扱いを決めておく 必要があると考える。 5. 参考文献 [1] 大橋 靖雄, 浜田 知久馬. 生存時間解析-SAS による生物統計. 東京大学出版会 (1995) [2] 堀口 みき, 吉山 友二. がん臨床試験の統計解析手法に関する最近の話題と医療薬学への応用: ハザード比の問題およびそれに代わる要約指標の紹介. 医療薬学 44(12). pp. 589―598 (2018) [3] Uno H, Claggett B, Tian L, Inoue E, Gallo P, Miyata T, Schrag D, Takeuchi M, Uyama Y, Zhao L, Skali H, Solomon S, Jacobus S, Hughes M, Packer M, Wei LJ. Moving beyond the hazard ratio in quantifying the between-group difference in survival analysis. J Clin Oncol 32(22):2380-5 (2014) 120
[4] 日本製薬工業協会. 「生存時間解析の評価指標に関する最近の展開 -RMST(restricted mean survival time)を理解する-」を開催. http://www.jpma.or.jp/about/issue/gratis/newsletter/html/2018/87/87t8-01.html (最終確 認日 2021 年 09 年 01 日) [5] 長谷川 貴大, 田中 慎一, 棚瀬 貴紀, 若菜 明, 淀 康秀, 飯森 孝行, 鵜飼 裕之, 仲川 慎太郎, 三澤 早 織. 生存時間解析の評価指標に関する最近の展開 -RMST(restricted mean survival time)を理解する-. SAS ユ ーザー総会 2018 年論文集. pp.355-427 (2018) [6] 日本製薬工業協会 医薬品評価委員会 データサイエンス部会. 生存時間型応答の評価指標 -RMST (restricted mean survival time を理解する-. Ver 2.0 (2019) [7] Calkins, K.L., Canan, C.E., Moore, R.D. et al. An application of restricted mean survival time in a competing risks setting: comparing time to ART initiation by injection drug use. BMC Med Res Methodol 18, 27 (2018). [8] Royston, P., Parmar, M.K. Restricted mean survival time: an alternative to the hazard ratio for the design and analysis of randomized trials with a time-to-event outcome. BMC Med Res Methodol 13, 152 (2013). [9] SAS Institute Inc., Cary, NC. SAS/STAT 15.2® User’s Guide The LIFETEST Procedure (2018) [10] Karrison T, Kocherginsky M. Restricted mean survival time: Does covariate adjustment improve precision in randomized clinical trials? Clin Trials. 15(2):178-188. (2018) [11] Everardo D Saad, John R Zalcberg, Julien Péron, Elisabeth Coart, Tomasz Burzykowski, Marc Buyse, Understanding and Communicating Measures of Treatment Effect on Survival: Can We Do Better?, JNCI: Journal of the National Cancer Institute, 110(3), pp. 232–240, (2018) [12] Elisa T. Lee., John Wenyu Wang., Statistical Methods for Survival Data Analysis Third Edition., John Wiley & Sons, Inc. (2003) 121
統計理論 / SAS ・ JMP教育 122
各種のダミー変数を用いた最小 2 乗平均と 95%信頼区間の実際 高橋 行雄 BioStat 研究所(株) Lsmeans for various dummy variables and their 95% confidence interval Yukio Takahashi BioStat Research Co.,Ltd. 要旨: 最小 2 乗平均とは何か.SASユーザならば,LSMEANSとして何の疑いもなく使っている のが,SAS以外の統計ソフトのユーザにとっては,謎めいた統計量として認識されている. 「最小 2 乗平均」は,竹内ら(1989) , 「統計学辞典」の索引にも載っていない方言みたいなものである.守 屋ら(2018)は,Rのlsmeansパッケージの紹介をしているが,LSMEANSの謎は解き明かされてい ない.そこで,Excelの行列関数により,この論文で用いられているデータを用い,例示されている LSMEANSとその標準誤差を再現することにより謎解きをする.さらに,SASのGLMプロシジャで 用いられているダミー変数,JMPの対比型ダミー変数を使った場合についても同様にExcelの行列 関数によってLSMEANSを再現する.なぜLSMEANSの謎が解き明かされてこなかったか.第 1 の 理由は,ダミー変数を用いたデザイン行列に基づいた分散分析が一般化していないこと,第 2 に は,繰り返しが不揃いの場合の分散分析に関する取り組みが欠如していること,第 3 には,行列計 算を用いた例示が毛嫌いされている,第 4 には,LSMEANSの分散の計算に不可欠なパラメータの 共分散行列の活用事例が見いだされないこと,などが原因である. キーワード: 最小 2 乗平均,Lsmeans,SAS/GLM,R,JMP,SAS/GENMOD,ダミー変数 1. はじめに 検索エンジンを使って, 「最小 2 乗平均」 について書かれている論文を探したところ,守屋ら(2018) の「R パッケージを用いた最小 2 乗分散分析と最小 2 乗平均値の算出」が見いだされた.彼らは, データ数が不揃いの実験データの解析のために SAS の GLM プロシジャに代えて,R の lsmeans パ ッケージの使用法について論じている. 守屋らは,「各要因のグループ(水準)内のデータ数が等しい釣り合い型データ(balanced data) に対しては通常の生物統計学の教科書で紹介されている分散分析法が適用でき,EXCEL のような 広く普及している表計算ソフトでも対応できる.一方,データ数が等しくない不釣り合い型データ (unbalanced data)や分析に共変量を含むケースは通常の分散分析の手法ではなく最小 2 乗分散分 析法を用いる必要がある」ことを提示している. 1 123
そのために, 「SAS の GLM プロシジャで実行されることが多かった.しかし,SAS は有料でし かも高価であったため,実行できる環境は非常に限定されていた」と述べ,最近,R 環境において も lsmeans パッケージが提供されたので,SAS の GLM プロシジャでの Lsmeans と比較検討した結 果を報告している.論文には,表 1 に示すように(因子 A,因子 B,共変量 x,反応変数 y)につい ての 15 個のデータが示されている. 表1 因子A A1 A2 A3 守屋らの 2 因子共分散データ 因子B 共変量 x 反応 y 350 970 400 1000 360 980 350 980 B2 340 970 390 990 B1 340 950 410 980 B2 430 990 390 980 400 990 B1 320 940 330 930 B2 390 1000 420 1000 374.67 976.67 平均 反応 y :1 日当たりの増体量 B1 解析モデルとして,交互作用を含むモデル 反応 y = A + B + A×B +共変量 x についての最小 2 乗平均を提示し,R の lsmeans パッケージの結果が,SAS の GLM プロシジャの Lsmeans の結果と一致することを報告している. 2. (1,-1)対比型デザイン変数を用いた場合の最小 2 乗平均 表 1 のデータに対して,JMP の「モデルのあてはめ」で用いられている対比型デザイン変数(ダ ミー変数)を表 2 に示す.交互作用は,因子 A と因子 B の水準の組み合わせで,交互作用 A B に 表 2 (1,-1)対比型のデザイン変数 A A1 A2 A3 平均 a1 a2 1 0 -1 0 0 1 -1 0 B B1 B2 平均 b1 1 -1 0 2 124 A×B A1 B1 B2 A2 B1 B2 A3 B1 B2 a 1b 1 1 -1 0 0 -1 1 a 2b 1 0 0 1 -1 -1 1
対し( a1b1 ,a2 b1 )のようにデザイン変数間の積で定義する.表 3 にデザイン変数を組み込み,Excel で回帰分析を適用した結果を示す. 表3 i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 対比型のデザイン行列を用いた Excel による回帰係数の推定 ――― デザイン行列 X ――― 共変量 反応 A B A×B A B x 0 a 1 a 2 b 1 a 1b 1 a 2b 1 x y A1 B1 1 1 0 1 1 0 350 970 1 1 0 1 1 0 400 1000 1 1 0 1 1 0 360 980 B2 1 1 0 -1 -1 0 350 980 1 1 0 -1 -1 0 340 970 A2 B1 1 0 1 1 0 1 390 990 1 0 1 1 0 1 340 950 B2 1 0 1 -1 0 -1 410 980 1 0 1 -1 0 -1 430 990 1 0 1 -1 0 -1 390 980 A3 B1 1 -1 -1 1 -1 -1 400 990 1 -1 -1 1 -1 -1 320 940 1 1 330 930 B2 1 -1 -1 -1 1 -1 -1 -1 1 1 390 1000 1 -1 -1 -1 1 1 420 1000 Excelによる回帰分析 分散分析表(「定数に0を使用」をon) 自由度 変動 分散 7 14314030 2044861 回帰 8 670.4128 83.8016 σ ^2 残差 15 14314700 合計 係数 切片 x0 a1 a2 b1 a1b1 a2b1 x 0 718.1167 13.4238 -9.8560 1.8400 -6.3315 7.0782 0.6927 標準誤差 #N/A 32.6778 3.6307 3.6833 2.4822 3.8031 3.6833 0.0877 t #N/A 21.9757 3.6973 -2.6759 0.7413 -1.6648 1.9217 7.8996 P-値 #N/A 0.0000 0.0061 0.0281 0.4797 0.1345 0.0909 0.0000 パラメータの共分散行列 Σ ( βˆ ) は, 7 15 のデザイン行列 X と誤差分散 ˆ 2 83.8016 を用いて Σ ( βˆ ) ( X T X ) 1ˆ 2 Minverse( Mmult( Transpose( X の範囲) , X の範囲) ) * ˆ 2 として表 4 に示すように計算される. 表4 (1,-1)対比型デザイン行列に対するパラメータの共分散行列 Σ ( βˆ ) β0 β1 β2 β3 β4 β5 β6 ―― A ―― ―― A×B ―― 共変量 B x0 a1 a2 b1 a 1b 1 a 2b 1 x 1067.84 -40.4806 45.2430 -18.6617 53.2160 -44.4671 -2.8575 -40.4806 13.1821 -7.5441 -0.8258 -2.8635 2.1125 0.1089 13.5665 45.2430 -7.5441 -0.0356 2.7211 -0.3755 -0.1217 6.1613 -0.9824 -18.6617 -0.8258 -0.0356 0.8115 0.0513 53.2160 -2.8635 2.7211 -0.9824 14.4635 -8.1527 -0.1474 -44.4671 2.1125 -0.3755 0.8115 -8.1527 13.5665 0.1217 0.0077 -2.8575 0.1089 -0.1217 0.0513 -0.1474 0.1217 T -1 2 パラメータの共分散行列 Σ (β ^)=(X X ) σ ^ 表 5 に対比型デザイン変数を用いた因子 A,因子 B および交互作用 A×B の各水準の Lsmeans を示す.この計算は,それぞれに対応する Lsmeans のデザイン変数を xi ベクトルとし,推定され たパラメータベクトルを β̂ としたときに,因子 A の第 1 水準 A1 は, a1 1 ,それ以外は 0,共変量 x については,表 1 に示した総平均 374.67 とし,991.06 が Lsmeans として推定されている. 3 125
yˆ A1 x16 βˆ x 0 a 1 a 2 b 1 a 1b 1 a 2b 1 x 1 1 0 0 0 0 374.67 表5 i 16 17 18 19 20 21 22 23 24 25 26 A B A1 A2 A3 B1 B2 A1 B1 B2 A2 B1 B2 A3 B1 B2 β^ 718.1167 = 13.4238 -9.8560 1.8400 -6.3315 7.0782 0.6927 991.06 y ^A1 最小 2 乗平均(Lsmeans)と SE の推定 ――― デザイン行列 X ――― 反 最小2乗 ― A― B A×B 共変量 応 平均 分散 x 0 a 1 a 2 b 1 a 1b 1 a 2b 1 x y y^ Var (y ^) 991.06 19.7243 1 1 0 0 0 0 374.67 1 0 1 0 0 0 374.67 967.78 18.7249 1 -1 -1 0 0 0 374.67 974.07 17.6261 1 0 0 1 0 0 374.67 979.47 13.1335 1 0 0 -1 0 0 374.67 975.79 10.9665 986.57 28.1013 1 1 0 1 1 0 374.67 1 1 0 -1 -1 0 374.67 995.55 48.6673 1 0 1 1 0 1 374.67 976.70 42.6192 1 0 1 -1 0 -1 374.67 958.86 37.5322 1 -1 -1 1 -1 -1 374.67 975.16 43.5546 1 -1 -1 -1 1 1 374.67 972.97 28.1526 標準 誤差 SE 4.4412 4.3272 4.1983 3.6240 3.3116 5.3011 6.9762 6.5283 6.1264 6.5996 5.3059 95%信頼区間 L 95% U 95% 980.82 1001.30 957.80 977.76 964.38 983.75 971.12 987.83 968.16 983.43 974.34 998.79 979.46 1011.64 961.64 991.75 944.73 972.99 959.94 990.38 960.74 985.21 さらに分散と SE は,パラメータの共分散行列 Σ ( βˆ ) を用いて, T Var ( yˆ A1 ) x16 Σ ( βˆ ) x16 = x 0 a 1 a 2 b 1 a 1b 1 a 2b 1 1 1 0 0 0 x 0 374.67 1067.8 -40.48 45.24 -18.66 53.22 -44.47 -2.86 -40.5 13.18 -7.54 -0.83 -2.86 2.11 0.11 45.2 -7.54 13.57 -0.04 2.72 -0.38 -0.12 6.16 -0.98 -18.7 -0.83 -0.04 0.81 0.05 53.2 -2.86 2.72 -0.98 14.46 -8.15 -0.15 -44.5 2.11 -0.38 0.81 -8.15 13.57 0.12 -2.9 0.11 -0.12 0.05 -0.15 0.12 0.01 T -1 2 パラメータの共分散行列 Σ (β ^)=(X X ) σ ^ Var (y^ A1) 1 = 19.7243 1 0 SE 4.4412 0 0 0 375 として計算されている.表 6 に守屋ら(2018)の R の lsmeans パッケージによる最小 2 乗平均の算出 例を示す.Excel で求めた Lsmeans と SE が,一致することが確かめられる. 表6 FactorA A1: a A2: b A3: c R の lsmeans パッケージによる最小 2 乗平均の算出例 lsmean 991.0573 967.7775 974.0657 SE df lower.CL upper.CL 4.441210 8 980.8159 1001.2988 4.327225 8 957.7989 977.7561 4.198345 8 964.3843 983.7472 守屋ら(2018)の表 3 の一部を抜粋・編集 4 126 .group 2 1 12
探索的な解析では,何らかの結果のグラフ表示が欠かせない.JMP の予測プロファイルよるグラ フ表示,グラフ・ビルダーによる層別散布図を示そう.JMP による 2 因子交互作用と共変量を含む 最小 2 乗法での解析で「因子プロファイルプロファイル」を選択すると,図 1 に示すような予測 プロファイルが表示される.マウスで因子 A の A1 を選択し,因子 B の B1 を選択した結果(ディフ ォルト)が示されている.共変量 x は,最小 2 乗平均の推定のために総平均 374.67 が自動的にセッ トされている.この条件下で反応 y の推定値が,986.57(974.34,998.79)と表示され,表 5 に示さ れている推定値 ŷ と分散 Var ( yˆ ) を使い 95%信頼区間は (L95%, U 95%)=yˆ A1B1 t (0.05,8) Var ( yˆ A1B1 ) 986.57 2.3060 28.1013 (974.34, 998.79) となり,図 1 の上段の結果に一致する.因子 A は A1 水準のまま,因子 B を B2 水準に変更したのが 図 1 の下段である.因子 A のプロファイルの上段と下段でプロファイルが明らかに異なるのは,交 互作用を解析モデルに含めたからである. A1,B1,x =374.67 に設定 A1,B2,x =374.67 に設定 図1 交互作用モデルに対する JMP の予測プロファイル 図 2 に JMP のグラフ・ビルダーでの結果を示す.最小 2 乗平均の図 1 と比べることにより,探 索的な解析結果についての理解が深まると思われる. 5 127
図2 グラフ・ビルダーによる層別散布図によるデータの俯瞰 3. SAS の GLM プロシジャでのデザイン変数(ダミー変数) これまでは, (1,1)対比型デザイン変数を用いた Lsmeans を Excel で再現してきたのであるが, SAS の GLM プロシジャでのデザイン変数は,各因子の最後の水準を基準としているので,表 7 最 後の水準を基準とした(1,0)型デザイン変数が用いられている.この結果として最小 2 乗平均の 推定方法が謎めく原因となっている.そこで, (1,0)型デザイン変数を使って Lsmeans を Excel で 再現することにより,謎解きをする. 表7 A A1 A2 A3 平均 a1 1 0 0 1/3 最後の水準を基準とした(1,0)型デザイン変数 a2 0 1 0 1/3 B B1 B2 平均 b1 1 0 1/2 A×B A1 B1 B2 A2 B1 B2 A3 B1 B2 a 1b 1 1 0 0 0 0 0 a 2b 1 0 0 1 0 0 0 表 8 に示すように,因子 A の各水準の Lsmeans を求めるためには,因子 A のデザイン変数 a 1 と a 2 を使い,因子 B のデザイン変数 b1 には,デザイン変数の平均としての (1 / 2) を用い,Lsmeans は, yˆ x βˆ 991.057 として計算されている.もちろん,表 6 に示した R の lsmeans パッケージの 1.16 1.16 結果に一致している.因子 B の場合は,因子 A のデザイン変数 a 1 と a 2 には,3 水準の平均 (1 / 3) を用いる.なお,交互作用については,因子 A と因子 B のデザイン変数の組み合わせによる積で 与える. 表 2 に示した対比型のデザイン行列の場合は,それぞれのデザイン変数の合計および平均はゼロ なであるが,表 7 に示した最後の水準を基準とした SAS の GLM プロシジャの場合の平均は,1 / 3 6 128
と 1 / 2 となり,表 8 に示すように,因子 A の Lsmeams の算出のために因子 B については,その水 準平均 1 / 2 を与える必要がある.同様に因子 B の Lsmeams の算出のために因子 A については,そ の水準平均 1 / 3 を与える必要がある.R のパッケージの場合は,最初の水準を基準としているので, 本質的には SAS の GLM プロシジャと同様のデザイン変数であり,Lsmeans の推定には,求めたい 因子以外の因子のデザイン変数について,該当する因子の水準平均を用いる必要がある. 表8 GLM 式デザイン行列に対する Lsmeans を求めるためのデザイン変数 i A B x0 1.16 A1 1 1.17 A2 1 1.18 A3 1 1.19 B1 1 1.20 B2 1 1.21 A1 B1 1 1.22 1 B2 1.23 A2 B1 1 1.24 1 B2 1.25 A3 B1 1 1.26 1 B2 T β^ = 最小2乗 ―――― デザイン変数 ―――― 反応 ― A― A×B B 共変量 平均 分散 x y y^ Var (y ^) a1 a2 b 1 a 1b 1 a 2b 1 0 374.67 1 0 0.50 0.50 991.057 19.7243 0 0.50 374.67 0 1 0.50 967.778 18.7249 0 0 374.67 0 0 0.50 974.066 17.6261 0.33 0.33 1 0.33 0.33 374.67 979.473 13.1335 0.33 0.33 0 0 0 374.67 975.794 10.9665 1 0 1 1 0 374.67 986.566 28.1013 1 0 0 0 0 374.67 995.549 48.6673 0 1 1 0 1 374.67 976.696 42.6192 0 1 0 0 0 374.67 958.859 37.5322 0 0 1 0 0 374.67 975.159 43.5546 0 0 0 0 0 374.67 972.972 28.1526 β 0^ 713.4557 x0 β 1^ β 2^ 22.5765 -14.1131 a1 a2 β 3^ β 4^ 2.1865 -11.1697 b1 a 1b 1 β 5^ 15.6498 a 2b 1 標準 誤差 SE 4.4412 4.3272 4.1983 3.6240 3.3116 5.3011 6.9762 6.5283 6.1264 6.5996 5.3059 β 6^ 0.6927 x これらの SAS の GLM プロシジャにおける最小 2 乗平均については,高橋ら(1989)の 16-6 節 に行列計算に SAS/IML を用いた推定方法が示されているのであるが,GLM プロシジャの推定可能 関数をベースにした説明となっており,他の形式のダミー変数を用いた場合について応用しづらい 説明となっている.そこで,他の形式のダミー変数の場合と同様の考え方にそって Excel の行列計 算を用いて最小 2 乗平均の推定方法を示した. 4. R 言語などでの最初の水準を基準にする場合のデザイン変数 最初の水準を基準にする場合について,SAS の GLM プロシジャでの最後の水準を基準とする場 合を参考にして,Lsmeans の計算のための(0,1)型デザイン変数を表 9 に示し,表 10 にこれらを 反映した(0,1)型デザイン行列を用いて Excel の回帰分析の結果を示す. 表9 A A1 A2 A3 平均 a2 0 1 0 1/3 最初の水準を基準とした(0,1)型デザイン変数 a3 0 0 1 1/3 B B1 B2 平均 b2 0 1 1/2 7 129 A×B A1 B1 B2 A2 B1 B2 A3 B1 B2 a 2b 2 0 0 0 1 0 0 a 3b 2 0 0 0 0 0 1
表 10 最初の水準を基準とする Excel による回帰係数の推定 ―――― デザイン行列 ―――― ― A ―B A×B 共変量 反応 i A B x 0 a 2 a 3 b 2 a 2b 2 a 3b 2 x y 0 350 970 2.01 A1 B1 1 0 0 0 0 2.02 1 0 0 0 0 0 400 1000 2.03 1 0 0 0 0 0 360 980 0 350 980 2.04 B2 1 0 0 1 0 2.05 1 0 0 1 0 0 340 970 0 390 990 2.06 A2 B1 1 1 0 0 0 2.07 1 1 0 0 0 0 340 950 2.08 B2 1 1 0 1 1 0 410 980 2.09 1 1 0 1 1 0 430 990 2.10 1 1 0 1 1 0 390 980 2.11 A3 B1 1 0 1 0 0 0 400 990 2.12 1 0 1 0 0 0 320 940 2.13 B2 1 0 1 1 0 1 330 930 2.14 1 0 1 1 0 1 390 1000 2.15 1 0 1 1 0 1 420 1000 Excelによる回帰分析 分散分析表(「定数に0を使用」をon) 自由度 変動 分散 回帰 7 14314030 2044861 残差 8 670.41 83.8016 合計 15 14314700 係数 標準誤差 0 #N/A 切片 x0 727.0489 32.8702 -9.8700 a2 8.3682 -11.4067 a3 8.4026 8.9832 b2 8.6394 a2b2 -26.8196 13.3170 a3b2 -11.1697 12.4595 0.6927 0.0877 x t #N/A 22.1188 -1.1795 -1.3575 1.0398 -2.0139 -0.8965 7.8996 P-値 #N/A 0.0000 0.2721 0.2117 0.3288 0.0788 0.3962 0.0000 β0 β1 β2 β3 β4 β5 β6 デザイン行列は,表 8 と表 10 は異なるので,当然ながらパラメータの推定値も異なる.表 11 で 示すパラメータの共分散行列は,表 4 と比較すると共変量 x の分散 0.0077 は一致するが,他は全く 異なることが確認される. 表 11 β0 β1 β2 β3 β4 β5 β6 最初の水準を基準とした場合のパラメータの共分散行列 切片 x0 1080.4513 -42.1571 -56.3803 -99.0499 227.0588 155.9427 -2.8446 ― A― ― A×B ― B a2 a3 b2 a 2b 2 a 3b 2 -42.1571 -56.3803 -99.0499 227.0588 155.9427 70.0269 28.3183 28.8949 -72.5255 -29.6637 70.6035 28.3183 29.8559 -33.3156 -73.2944 74.6398 -83.2891 -78.4839 28.8949 29.8559 -72.5255 -33.3156 -83.2891 177.3416 94.0526 -29.6637 -73.2944 -78.4839 94.0526 155.2380 0.0384 0.0769 0.1922 -0.5382 -0.3460 T -1 2 パラメータの共分散行列 Σ (β ^)=(X X ) σ ^ 共変量 x -2.8446 0.0384 0.0769 0.1922 -0.5382 -0.3460 0.0077 表 12 に最初の水準を基準とした場合の Lsmeans を求めるためのデザイン変数ベクトルを示す. 因子 A の Lsmeans を求めるために他の因子 B にはデザイン変数 b2 の平均とし,共変量 x はデータ の総平均とする.交互作用 A×B は,デザイン変数の掛け算で求める.因子 A の各水準の Lsmeans は, yˆ x βˆ 991.057 として計算され,表 5 に示した lsmeasn パッケージの結果に一致する.因 A1 2.16 T 子 A1 の標準誤差は,Var ( yˆ A1 ) x2.16 Σ ( βˆ ) x2.16 19.7243 の平方根で 4.4412 と推定されていて,表 6 の 結果に一致する. 8 130
表 12 最初の水準を基準とした場合の Lsmeans を求めるためのデザイン変数 i A B x0 1 2.16 A1 1 2.17 A2 1 2.18 A3 1 2.19 B1 1 2.20 B2 A B 1 2.21 1 1 1 2.22 B2 1 2.23 A2 B1 1 2.24 B2 1 2.25 A3 B1 1 2.26 B2 最小2乗 ―――― デザイン変数 ―――― ― A― A×B 反応 B 共変量 平均 a2 a3 b 2 a 2b 2 a 3b 2 x y y^ 991.057 0 0 0.50 0 0 374.67 0 1 0 0.50 0.50 374.67 967.778 0 0.50 0 1 0.50 374.67 974.066 0.33 0.33 0 0 0 374.67 979.473 0.33 0.33 1 0.33 0.33 374.67 975.794 0 0 0 0 0 374.67 986.566 0 0 1 0 0 374.67 995.549 1 0 0 0 0 374.67 976.696 1 0 1 1 0 374.67 958.859 0 1 0 0 0 374.67 975.159 0 1 1 0 1 374.67 972.972 分散 Var (y ^) 19.7243 18.7249 17.6261 13.1335 10.9665 28.1013 48.6673 42.6192 37.5322 43.5546 28.1526 標準 誤差 SE 4.4412 4.3272 4.1983 3.6240 3.3116 5.3011 6.9762 6.5283 6.1264 6.5996 5.3059 因子 B の各水準の Lsmeans は,因子 A のデザイン変数( a2 , a3 )の平均値 1/3=0.3333 とし,交 互作用 A×B は,デザイン変数の掛け算で求める.このように謎めいた Lsmeans も Excel の行列計 算の活用により,身近な統計量として使われるようになることを期待したい. 5. 最小 2 乗平均を使いこなすために 「最小 2 乗平均」は,SAS の GLM プロシジャで繰り返しが不揃いの多因子実験データに対し, 不揃いなセルの平均の平均を用いた「調整済み平均(推定値)」であり,量的因子が含まれる場合に は,それぞれの算術平均を用いた推定値である.と言っても理解に苦しむだけで,他者への説明も オウム返し的に「線形モデルにおいて残差の平方和が最小となるように他の要素を推定して求めら れる平均のこと」などの苦し紛れの説明も WEB で見いだされ,謎が更に深まるばかりである. 私自身は,複雑な実験計画における調整済み平均と「最小 2 乗平均」が一致することを確認した ことで「最小 2 乗平均」を理解してきた.また,共分散分析において,従来の解析法の「切片の差」 ではなく共変量の算術平均を用いた推定値としての「最小 2 乗平均」の差とする GLM プロシジャ の出力に「なるほど」と感動したことを思い出す. さて,SAS の方言として「最小 2 乗平均」を認識し続けていたのだが,R の lsmeans パッケージ の出現により,ようやく統計用語として認知されはじめたのだと喜びに堪えない.R の lsmeans パ ッケージの開発者 Lenth(2016)は,GLM プロシジャの「最小 2 乗平均」を熟知した上で,GLM と は異なる R で一般的に用いられているダミー変数に対してパッケージを提供したのであろう.ま た,それを歓迎し紹介する論文を見いだせたこともうれしい限りである. さて, 「最小 2 乗平均」とは何を明らかにするためには,デザイン行列を用いた回帰分析による パラメータの推定だけではなく,パラメータの共分散行列を可視化した解析手順を示すことが不可 欠である.線形モデルの理論でパラメータの共分散行列は, ( X T X ) 1ˆ 2 として示されているのであ るが,それを用いた計算事例をほとんど見いだすことができない.GLM プロシジャの内部で使わ れていることは確かであるが,それを外部出力として取り出すことができない.パラメータの共分 散行列 ( X T X ) 1ˆ 2 を出力したとしても,行列計算なしにそれを活用するすべがないし,ユーザの要 望としても出されたことがないのであろう. 9 131
救いの神は,Excel の行列関数である. 「最小 2 乗平均」の謎解きは,SAS/IML 行列計算言語を使 って行なったのであるが,なかなか難儀であり,啓蒙活動を途中で放棄してしまった.その後,Excel で反復計算を伴う非線形最小 2 乗法,重み付き反復回帰分析による一般化線形モデルなどの啓蒙活 動を通じ, 「最小 2 乗平均」についても Excel を用い謎解きを行なう必要性を強く感じた. SAS のみでは,能動的に「最小 2 乗平均」に迫ることは不可能であり,Excel の分析ツールよる 回帰分析,さらにデザイン行列を用いたパラメータの共分散行列の計算,デザイン変数ベクトルを 用いた Lsmeans の計算,その分散の計算に 2 次形式での推定にチャレンジして頂きたい.Excel に よる行列計算に不慣れな場合には,サイエンティスト社の「基礎セミナー じっくり勉強すれば身 につく統計入門」シリーズの第 7 回の高橋行雄(2013),「回帰分析・再入門 -統計ソフトが対応してい ない生物統計の各種の課題を Excel でサクサク解こう-」を一読してもらいたい. 参 考 文 献 1) 魚住龍史(2014),LS-Means 再考-GLM と PLM によるモデル推定後のプロセス-,SAS ユーザ ー 総 会 論 文 集 : 449-463 , https://www.sas.com/content/dam/SAS/ja_jp/doc/event/sas-user- groups/sugj2014.pdf 2) 高橋行雄,大橋靖雄,芳賀敏郎(1989),SAS による実験データの解析,307-333,東京大学出版会. 3) 高橋行雄(2013),回帰分析・再入門 -統計ソフトが対応していない生物統計の各種の課題を Excel でサクサク解こう-,https://scientist-press.com/wp-content/uploads/2019/07/seminar7.pdf 4) 高橋行雄(2021),最尤法によるポアソン回帰入門,499-456,カクワークス社. 5) 高橋行雄(2020),続高橋セミナー第 9 回 最尤法によるポアソン回帰分析入門 <第 13 章>最小 2 乗平均の謎を予測プロファイルで解く,https://www.yukms.com/biostat/takahasi2/rec/009-13.htm 6) 竹内啓ら(1989),統計学辞典,1135,東洋経済. 7) 三輪哲久(2015),推定可能関数による TypeII,TypeIII,TypeIV の違いの説明,SAS ユーザー総会 論文集:184-156,https://www.sas.com/content/dam/SAS/ja_jp/doc/event/sas-user-groups/sugj2015.pdf 8) 守屋和幸,広岡博之(2018),R パッケージを用いた最小 2 乗分散分析と最小 2 乗平均値の算出,日 畜会報 Vol.89:1-6. https://www.jstage.jst.go.jp/article/chikusan/89/1/89_1/ 9) Lenth RV. (2016), Least-Squares Means : The R Package lsmeans, Journal of Statistical Software 69, 133. https://www.jstatsoft.org/article/view/v069i01/v69i01.pdf 10) Little R.C., Stroup W.W. and Freund R.j.(2020), SAS for Linear Models 4th ed.:163-227,SAS Institute. 10 132
企画セッション 133
Prioritized Outcome Approachを適用した 重み付きWin ratioの性能評価 ○寺本 明日香1、上村 鋼平1、坂巻 顕太郎2 (1東京大学大学院生物統計情報学講座、2横浜市立大学データサイエンス推進センター) 近年、複合評価項目の構成要素に優先順位をつけてpairwise comparisonを行うprioritized outcome approachに よる解析が注目を集めている[1]。この手法によって算出されるwin loss統計量[2] はペア毎の勝敗の総数によっ て構築されるため統計量が容易に算出でき、直感的に理解ができる点が特徴であるが、複合評価項目の構成 要素間の治療効果の方向が一貫しないまま評価されるリスクを内在しており、このような場面では解釈が難 しくなることが問題点とされている。そこで本研究では、限局性前立腺癌患者に対するFocal therapyの有効性 を検証する観察研究への適用を想定して、複合評価項目の構成要素間の治療効果の方向が一致しないペアに ペナルティを与える重み付きwin ratioを提案し、その性能を評価することを目的とする。 構成要素間の相関を考慮したシミュレーション実験により、既存のwin loss統計量であるwin ratioとwin odds、 および提案法の点推定値、分散、検出力を算出し、性能比較を行った。シミュレーション実験により、複合 評価項目の構成要素間の相関が負の傾向にある場合に、提案法の点推定値および分散が既存の手法より高く なることが確認された。また、優先順位が2番目の評価項目で治療効果が見られるシナリオでは提案法の検出 力が既存の手法よりも上昇した。 治療効果の方向が不一致である場合にペナルティを与える事で、情報量が減りばらつきが大きくなるもの の、1つの評価項目では有意差が見込めない場合や、治療効果を推定したい評価項目間の相関が負の傾向にあ る場合に提案法を用いることで、推定効率が上昇する可能性がある。しかしながら本研究の提案法は、評価 項目の構成要素に完全な優先順位が付け ていないアルゴリズムであるため、従来のPrioritized outcome approachの概念から逸脱している可能性がある。よって、複合評価項目の構成要素間の治療効果の方向が不一 致である場合の解釈の難しさを軽減するprioritized outcome approachと従来の複合評価項目の解析の中間に位 置する解析手法として位置づけられると考えられる。 [1] Buyse M. Generalized pairwise comparisons of prioritized outcomes in the two-sample problem. Stat Med. 2010; 29(30):3245-3257. [2] Pocock SJ, Ariti CA, Collier TJ, Wang D. The win ratio: a new approach to the analysis of composite endpoints in clinical trials based on clinical priorities. Eur Heart J. 2012; 33(2):176-182. 134
Prioritized Outcome Approachを適用した 重み付きWin ratioの性能評価 ○寺本 明日香1、上村 鋼平1、坂巻 顕太郎2、小路 直3 (1東京大学大学院 生物統計情報学講座 2横浜市立大学 データサイエンス推進センター 3東海大学 医学部外科学系 腎泌尿器科学) Performance Evaluation of Weighted Win Ratio Applying Prioritized Outcome Approach Asuka Teramoto 1, Kohei Uemura 1, Kentaro Sakamaki 2, Sunao Shoji 3 1 Biostatistics and bioinformatics course, University of Tokyo 2Center for Data Science, Yokohama City University 3 Nephrology and Urology, Department of Surgery, Faculty of Medicine , Tokai University 要旨: 複合評価項目の構成要素に優先順位をつけてペアワイズ比較を行うwin loss 統計量の評価項目間の相関への影響を検討する。また、構成要素間の治療効 果の不一致に対する対策案を示し、その性能を評価する キーワード: 複合評価項目, pairwise comparison, prioritized outcome approach, win ratio, win odds, 治療効果の不一致 2 135
発表構成 • 背景 - モチベーション研究 - prioritized outcome approach • 本発表の目的 • Win loss統計量 • シミュレーション実験 • まとめ • 参考文献 3 モチベーション研究 限局性前立腺癌患者に対するFocal therapyの有効性評価 背景 • 男性の罹患率第2位 (厚生労働省健康局がん・疾病対策課全国がん登録 罹患数・率報告, 2017) • 50代から患者数が急増 • 年間90,000人以上が診断 • 進行が遅く、ステージⅠ-Ⅲ期の5年生存率は85%以上 • 根治的治療後の主な合併症は尿失禁と性機能障害 (回復率60-96%) 低リスク群 中リスク群 高リスク群 監視療法 Focal therapy 根治的治療(ロボット支援前立腺全摘除術) (日本泌尿器科学会 前立腺癌診療ガイドライン2016年版, 2016) 136 4
モチベーション研究 限局性前立腺癌患者に対するFocal therapyの有効性評価 Focal therapy 高密度焦点式超音波を使用して腫瘍範囲のみを治療し、正常組織を可能な限り温存する 従来の生検 • 針を刺す位置、本数にばらつき有 - 癌の正確な位置を把握するのが難しい 新しい生検 (先進医療認定) • MRIと経直腸的超音波の画像を融合させた画像をガイド - 癌の位置、悪性度、サイズが正確に把握できる 腫瘍範囲(周辺)のみに超音波を照射することが可能 前立腺がんに対するフォーカルセラピー(前立腺部分治療) https://www.youtube.com/watch?v=lfueCMOMuM8&t;=80s 東海大学医学部外科学系泌尿器科学 小路直准教授より提供 5 モチベーション研究 限局性前立腺癌患者に対するFocal therapyの有効性評価 特徴 • 局所的な治療のため治療範囲外の再発が多い (2年無再発生存率:83.3%) - 再発後も根治的治療という選択肢が残されている • 尿失禁イベントはほとんど発生しない (小路ら, 2018) - 根治的治療と比較するとQOLの観点で有効性が認められる可能性 • 再発とともにQOLの維持にも重点が置かれる領域 (日本泌尿器科学会 前立腺癌診療ガイドライン2016年版, 2016) ロボット支援前立腺全摘除術を対照としたFocal therapyの有効性評価 生化学的再発に対する非劣性、排尿機能に対する優越性を検証 主要評価項目 生化学的再発, 排尿機能 6 137
複数の評価項目に対する解析 ❶ Co-primary Endpoint • 複数の評価項目全てにおける有効性を示す • 有意差が示されれば、有効性を強く主張することができる • 検出力の低下が懸念される ❷ 複合評価項目 • 複数の評価項目を組み合わせた評価での有効性を示す • イベント発生件数の増加や必要症例数の減少が見込まれる • 複数の評価項目を対等に扱った評価の方法 - 評価項目間の治療効果の方向が一貫しないまま評価されるリスク有 7 Prioritized outcome approach (Buyse, 2010) Time-to-first-event 重要度の高い評価項目から順に群間比較 • 死亡 入院 Ex) Time-to-eventに対する解析 Time-to-first-event - 先に発生した入院までの時間を採用 - 重要度の高い評価項目に関する情報を活用できない Prioritized outcome approach - 後に発生した死亡までの時間を採用 死亡 Prioritized outcome approach 入院 • - 重要度の高い評価項目の情報を取り逃がさない 8 138
Win loss統計量 評価項目1 • Generalized pairwise comparison の一種 • Prioritized outcome approachを利用 • ペア毎に”勝利” ”引き分け” ”敗北”を割り当て 𝑊𝑖𝑛 𝑅𝑎𝑡𝑖𝑜 𝑁 𝑁 𝑊𝑖𝑛 𝑂𝑑𝑑𝑠 𝑁 𝑁 治療群 勝利 引き 分け 治療群 勝利 引き 分け 治療群 敗北 (Dong et al, 2019) 治療群 敗北 𝑁 ∶ 治療群の勝利ペア総数、𝑁 : 対照群の勝利ペア総数 𝑁 ∶ 引き分けペア総数 統計量 治療群 勝利 治療群 勝利 (Pocock et al, 2012) 0.5𝑁 0.5𝑁 評価項目2 治療群 敗北 治療群 敗北 9 Win loss統計量 解釈 • 直感的に分かりやすく、統計量の算出が容易 • アウトカム全体の治療効果を包括的に示す指標 (Brunner et al, 2021) WR = 1.0 / WO = 1.0 → 治療群と対照群の勝利確率が同等 WR > 1.0 / WO > 1.0 → 治療群の勝利確率が高く、治療効果あり WR < 1.0 / WO < 1.0 → 対照群の勝利確率が高く、治療効果なし 欠点 • アウトカムに優先順位を付けづらい場面での適用が難しい • アウトカム間で治療効果の方向が異なる場面では解釈が難しい (FDA, Multiple Endpoints in Clinical Trials Guidance for Industry, 2017) 10 139
本発表の目的 評価項目間で治療効果の方向が一致しないペアにペナルティを与える 重み付き win loss 統計量の提案 Prioritized outcome approach 勝利 評価項目間で勝敗の方向が異なっていても 評価項目1の勝敗が統計量に反映されてしまう 敗北 評価項目間の治療効果の方向の不一致を考慮 した複合評価項目の解析手法の提案 勝利 勝利 引き 分け 勝利 敗北 勝利 勝利 敗北 引き 分け 敗北 敗北 敗北 11 本発表の目的 Weighted Win Ratio 評価項目間で勝敗の方向が逆転しているペアの勝敗スコアを0.5に半減させる 𝑾𝑾𝑹 𝑵𝒕 𝑵𝒄 勝利 勝利 勝利 引き 分け 敗北 勝利 勝利 引き 分け 勝利 敗北 勝利 𝑵𝒓𝒕 勝利 敗北 𝑵𝒓𝒄 引き 分け 敗北 𝑵𝒕 勝利 勝利 引き 分け 𝟎. 𝟓𝑵𝒓𝒕 𝟎. 𝟓𝑵𝒓𝒄 敗北 敗北 𝑵𝒄 敗北 敗北 敗北 敗北 12 140
本発表の目的 Weighted Win Ratio 評価項目間で勝敗の方向が逆転しているペアの勝敗スコアを0.5に半減させる 勝利 勝利 評価項目間の治療効果の不一致に ペナルティを与える重み 勝利 𝑵𝒕 敗北 引き 分け 勝利 敗北 勝利 𝑵𝒓𝒕 勝利 敗北 𝑵𝒓𝒄 引き 分け 敗北 Prioritized outcome approachでは 治療群勝利として評価されてしまう 評価項目1での非劣性を考慮した 治療群を救い出す重み 𝑵𝒄 敗北 モチベーション研究に沿った アルゴリズム 敗北 13 Win loss統計量 Win ratio Win odds Weighted win ratio 治療群の勝敗指示関数 𝜙 𝑋 ,𝑌 1 X 0 X 𝑌 𝑌 𝜙 𝑋 ,𝑌 1 X 0.5 X 0 X 𝑌 𝑌 𝑌 𝜙 𝑋 ,𝑌 1 X 0.5 X 0 X 𝑌 𝑌 𝑌 対照群の勝敗指示関数 𝜙 𝑋 ,𝑌 𝑋 𝑌 1 X 0 X 𝑌 𝑌 𝑋 , … , 𝑋 ∶ 治療群患者のアウトカム(𝑘 𝑌 , … , 𝑌 ∶ 対照群患者のアウトカム(𝑘 𝜙 𝑋 ,𝑌 1 1 𝟎. 𝟓 0 𝑋 𝑋 𝑿𝟏 𝑌 ∩ 𝑋 𝑌 𝑌 ∩ 𝑋 𝑌 𝒀𝟏 ∩ 𝑿𝟐 𝒀𝟐 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒 𝜙 𝑋 ,𝑌 1 1 𝟎. 𝟓 0 𝑋 𝑋 𝑿𝟏 𝑌 ∩ 𝑋 𝑌 𝑌 ∩ 𝑋 𝑌 𝒀𝟏 ∩ 𝑿𝟐 𝒀𝟐 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒 1,2) 1,2) 14 141
Win loss統計量 U統計量の性質より、各群の勝利確率の推定値が算出される 1 𝑚𝑛 𝑈 𝑋 𝑋 , … , 𝑋 ∶ 治療群患者の観測値(𝑖 𝑌 𝑌 ,…,𝑌 ∶ 対照群患者の観測値(𝑗 𝑣 : 1 治療群, 2 対照群 𝜙 𝑋 ,𝑌 1, … , 𝑚) 1, … , 𝑛) 信頼区間導出方法 • ブートストラップ法 (Pocock et al, 2012) • Permutation test (Verbeeck et al, 2019) • 正規近似 (Dong et al, 2016, Bebu et al, 2016) - 勝敗のアルゴリズムに関わらず適用可能な分散導出方法 𝑙𝑜𝑔 𝑤𝑖𝑛 𝑟𝑎𝑡𝑖𝑜 𝑈 𝑈 𝑙𝑜𝑔 ~ 𝐴𝑁 𝑙𝑜𝑔 𝜏 𝜎 , 𝜏 𝜏 𝜎 𝜏 2 𝜎 𝜏 𝜏 15 Win loss統計量 (Bebu et al, 2016) U統計量の性質より 治療群と対照群の勝利確率推定値の同時分布は漸近的に正規分布に従う 𝑁 𝑈 𝑈 𝜏 𝜏 0 𝜎 , 0 𝜎 ~ 𝐴𝑁 𝜉 𝜉 𝜎 𝜎 𝜎 𝑁 𝜉 Cov 𝜙 𝑋 , 𝑌 , 𝜙 𝑋 , 𝑌 ′ 𝑢 𝑁 𝑛 𝐸 𝜙 𝑋 ,𝑌 ,𝜏 𝑚, 𝜏 1,2 / 𝑣 1, 2) / 𝜉 Cov 𝜙 𝑋 , 𝑌 , 𝜙 𝑋 ′, 𝑌 𝐸 𝜙 𝑋 ,𝑌 𝑋 , 𝑌 ′:ペアの相手以外の患者の観測値 例) 𝜎 の導出過程( 𝑖 1, 𝑗 1) 𝜉 Cov 𝜙 𝑋 , 𝑌 , 𝜙 𝑋 , 𝑌 𝐏 𝑿𝟏 𝒀𝟏 ∩ 𝑿𝟏 𝒀𝟏 𝑷 𝑿𝟏 𝒀𝟏 𝜉 Cov 𝜙 𝑋 , 𝑌 , 𝜙 𝑋′ , 𝑌 𝐏 𝑿𝟏 𝒀𝟏 ∩ 𝑿′𝟏 𝒀𝟏 𝑷 𝑿𝟏 𝒀𝟏 𝟐 𝟐 16 142
Win loss統計量
proc sql;
ペア生成
create table win as
select a.*, b.*
from treatment as a, control as b
order by id_trt, id_con;
quit;
data phi_trt;
各群の指示関数
set compare;
by id_trt id_con;
𝜙 𝑋 ,𝑌
if wincat in ('b') then phi=1;
else phi=0;
run;
data compare;
set win;
勝敗判定
by id_trt id_con;
wincat = ' ';
if var_con > var_trt then wincat=‘a’;
else if var_con < var_trt then wincat='b';
else if var_con = var_trt then wincat='t';
run;
data phi_con;
set compare;
by id_trt id_con;
if wincat in ('a') then phi=1;
else phi=0;
run;
𝜙 𝑋 ,𝑌
…
17
Win loss統計量
𝜉
Cov 𝜙 𝑋 , 𝑌 , 𝜙 𝑋 , 𝑌
proc means data = temp noprint;
var phi;
output out = tau sum=tau;
run;
1
𝑃 𝑋
𝑌
𝜙 𝑋 ,𝑌
𝑚𝑛
data tau;
set tau;
tau_final = (tau/(n_trt * n_con))**2;
run;
proc means data = temp noprint;
by id_trt;
var phi;
output out=temp2 sum=sum_1;
run;
P 𝑋
𝑌 ∩𝑋
𝑌
𝑃 𝑋
𝑌
data temp3;
set temp2;
sum_phi = sum_1*(sum_1 - 1);
run;
proc means data=temp3 noprint;
var sum_phi;
output out = xi_1011 sum=xi_1011;
run;
P 𝑋
𝑌 ∩𝑋
1
𝑚𝑛 𝑛
𝑌
𝜙 𝑋 ,𝑌 𝜙 𝑋 ,𝑌
data xi_1011;
1
merge xi_1011 tau;
xi_1011 = (xi_1011 / (n_trt * n_con * (n_con-1)))
- tau_final;
run;
1
Dong et al, 2016プログラムより改編
18
143
シミュレーション実験 ❶ win ratio と win odds の評価項目間の相関への影響を比較 ❷ win loss 統計量 / 既存の手法と比較した提案法の性能評価 勝利 勝利 評価指標 解析手法 引き 分け • 点推定値 • Win ratio • Log(Win ratio) 分散 • Win odds • 検出力(αエラー) • 提案法(weighted win ratio) • 逆転ペア割合の差 • 固定順序法(検出力のみ) (➀ - ②) 敗北 オッズ比による評価 敗北 ➀ 勝利 ➁ 引き 分け 敗北 19 シミュレーション実験 (対照群[%] vs 治療群[%]) • アウトカム:二値×二値 • イベント発生割合 : 25%, 35%, 45% • サンプルサイズ 𝑁 𝑛 (𝑛 治療効果なし 45% vs 25% 35% vs 25% 45% vs 45% 25% vs 35% 評価項目1 効果あり 45% vs 25% 𝑚 : 200例 𝑚 評価項目2 治療効果あり 100) • 帰無仮説 H ∶ φ 1.0 • 対立仮説 H ∶ φ 1.0 • 有意水準 𝛼 :片側2.5% • シミュレーション回数 :1,000回 シナリオ1 シナリオ2 シナリオ3 シナリオ4 35% vs 25% シナリオ5 シナリオ6 シナリオ7 シナリオ8 25% vs 25% シナリオ9 シナリオ10 シナリオ11 H₀ シナリオ12 25% vs 35% シナリオ13 シナリオ14 シナリオ15 シナリオ16 効果なし 20 144
シミュレーション実験 • 相関:条件付き確率 𝜌 𝜌 𝑃 𝑋 1 𝑋 1 0, 0.5, 0.75 評価項目2 𝑋 :評価項目1の観測アウトカム、𝑋 :評価項目2の観測アウトカム - 帰無仮説の下でのイベント間の相関が概ね 負の相関、無相関、正の相関となった 評価項目 あり あり 0 1 合計 条件付き確率 0.5 0.75 Treatment -0.997 0.090 0.556 Control -0.997 0.099 0.557 なし 𝒂𝝆 𝑏 𝑎𝜌 𝑏 なし 𝑎 1 𝜌 1 𝑏 𝑎 1 𝜌 1 合計 𝑏 𝑎 1 𝑎 1.0 𝑎 ∶ 評価項目1 (最重要評価項目)発生割合 𝑏 ∶ 評価項目2 発生割合 - 傾向としての「負の相関」「無相関」「正の相関」 21 シミュレーション実験 結果(検出力、逆転ペア割合) (対照群[%] vs 治療群[%]) 22 145
まとめ ❶ 両評価項目に治療効果が見られる場面での検出力上昇に貢献 • 単一アウトカムでは有意差が見込めない場合 ❷ Prioritized outcome approachで見逃されていた解釈ミスの軽減 ❸ Prioritized outcome approachの概念からの逸脱 • アウトカムに完全な優先順位が付けられていない - 複合評価項目との中間に位置づけられるのではないか 23 限界点 勝利 勝利 ❶ 二値×二値の場合は非劣性マージンが設定出来ない • 勝利 1つ目の評価項目での群間差に着目 - 群間差が一定の範囲以内の場合に引き分けに分類 引き 分け 勝利 引き 分け - 群間差によってペナルティの度合いを変化させる • 評価項目に連続量やTime-to-eventを含めた拡張が必要 ❷ 3つ以上の評価項目を用いた場合の“逆転”の定義 • “勝利→敗北→勝利” “敗北→敗北→勝利” • 2変量よりも治療効果の逆転の定義が難しくなる 敗北 敗北 敗北 勝利 勝利 引き 分け 敗北 敗北 敗北 敗北 24 146
参考文献 • Buyse M. Generalized pairwise comparisons of prioritized outcomes in the two-sample problem. Stat Med. 2010; 29(30): 3245-3257. • Pocock SJ, Ariti CA et al. The win ratio: a new approach to the analysis of 複合評価項目s in clinical trials based on clinical priorities. Eur Heart J. 2012; 33(2):176-182. • Dong G, Hoaglin D, et al. The Win Ratio: On Interpretaton and Handling of Ties. Stat Biopharm Res. 2019; 12(1): 1-14. • Verbeeck J, Ozenne B, et al. Evaluation of inferential methods for the net benefit and win ratio statistics. J Biopharm Stat. 2020; 30(5):765-782. • Dong G, Li D, et al. A generalized analytic solution to the win ratio to analyze a 複合評価項目 considering the clinical importance order among components. Pharm Stat. 2016 Sep;15(5):430-7. • Bebu I, Lachin JM. Large sample inference for a win ratio analysis of a composite outcome based on prioritized components. Biostatistics. 2016;17(1):178-187. • Brunner E, Vandemeulebroecke M, et al. Win odds: An adaptation of the win ratio to include ties. Stat Med. 2021;40(14):3367-3384. • Food and Drug Administration. Multiple Endpoints in Clinical Trials Guidance for Industry, draft guidance. https://www.fda.gov/regulatory-information/search-fda-guidance-documents/multiple-endpoints-clinical-trials-guidanceindustry (2021年11月9日アクセス可能) • 日本泌尿器科学会 前立腺癌診療ガイドライン2016年版, 2016. • 小路 直, 平岩 真一郎, 小川 貴博ら. MRI-TRUS 融合画像ガイド下生検により診断された限局性前立腺癌に対する 高密度焦 点式超音波療法をもちいた Focal Therapy:1 年間の前向き臨床試験成績. 日本泌尿器科学会雑誌. 2018; 109(4): 194-203. 25 補足資料 ❶ U統計量の漸近正規性に基づく同時分布とwin ratioの分散導出 Notation. 𝑘個のアウトカムに対して、 • 𝑋 𝑋 , … , 𝑋 : 治療群患者の観測アウトカム • 𝑌 𝑌 ,…,𝑌 • 𝑋 𝑋 ,…,𝑋 : 治療群患者の観測値 (𝑖 1, … , 𝑚) • 𝑌 𝑋 ,…,𝑋 : 対照群患者の観測値 (𝑗 1, … , 𝑛) • 𝑠 𝜙 𝑋 , 𝑌 : 各群の勝敗に関する指示関数 𝑣 • 𝑠 𝜙 𝑋 ,𝑌 𝜙 𝑋 ,𝑌 • 𝜏 𝐸 𝜙 𝑋 ,𝑌 : 対照群患者の観測アウトカム 𝑢, 𝑣 1,2 1,2 :各群の勝利確率 𝑣 1,2 - 𝑢, 𝑣 : 治療群 (1 ∶ 治療群 / 2 ∶ 対照群) • 𝑁 𝑚 𝑛 ∶ サンプルサイズ 147 26
補足資料 ❶ U統計量の漸近正規性に基づく同時分布とwin ratioの分散導出 𝝈𝒗𝒖 𝟏 𝒖𝒗 𝝃 𝑵𝒕 𝟏𝟎 𝐍 𝟏 𝒖𝒗 𝝃 𝑵𝒄 𝟎𝟏 𝒖 𝟏, 𝟐 / 𝒗 / 𝜉 𝟏, 𝟐) 𝜉 Cov 𝜙 𝑋 , 𝑌 , 𝜙 𝑋 , 𝑌 ′ Cov 𝜙 𝑋 , 𝑌 , 𝜙 𝑋 ′, 𝑌 ➀ 𝜉 Cov 𝜙 𝑋 , 𝑌 , 𝜙 𝑋 , 𝑌 P 𝑋 𝑌 ∩𝑋 𝑌 𝑃 𝑋 𝑌 ➁ 𝜉 Cov 𝜙 𝑋 , 𝑌 , 𝜙 𝑋′ , 𝑌 P 𝑋 𝑌 ∩ 𝑋′ 𝑌 𝑃 𝑋 𝑌 ➂ 𝜉 Cov 𝜙 𝑋 , 𝑌 , 𝜙 𝑋 , 𝑌 P 𝑋 𝑌 ∩𝑋 𝑌 𝑃 𝑋 𝑌 ➃ 𝜉 Cov 𝜙 𝑋 , 𝑌 , 𝜙 𝑋′ , 𝑌 P 𝑋 𝑌 ∩𝑋 𝑌 𝑃 𝑋 𝑌 ➄ 𝜉 Cov 𝜙 𝑋 , 𝑌 , 𝜙 𝑋 , 𝑌 P 𝑋 𝑌 ∩𝑋 ➅ 𝜉 Cov 𝜙 𝑋 , 𝑌 , 𝜙 𝑋′ , 𝑌 P 𝑋 𝑌 ∩𝑋 𝑌 𝑌 𝑃 𝑋 𝑌 𝑃 𝑋 𝑌 𝑃 𝑋 𝑌 𝑃 𝑋 𝑌 27 補足資料 ❶ U統計量の漸近正規性に基づく同時分布とwin ratioの分散導出 𝝈𝒗𝒖 𝟏 𝒖𝒗 𝝃 𝑵𝒕 𝟏𝟎 𝐍 𝜉 𝟏 𝒖𝒗 𝝃 𝑵𝒄 𝟎𝟏 𝒖 𝟏, 𝟐 / 𝒗 Cov 𝜙 𝑋 , 𝑌 , 𝜙 𝑋 , 𝑌 ′ / 𝜉 𝟏, 𝟐) Cov 𝜙 𝑋 , 𝑌 , 𝜙 𝑋 ′, 𝑌 𝑃 𝑋 𝑌 E 𝜙 𝑋 ,𝑌 1 𝑚𝑛 𝑠 P 𝑋 𝑌 ∩𝑋 𝑌 1 mn 𝑛 1 𝑠 ·𝑠 · 𝑠· 𝑃 𝑋 𝑌 E 𝜙 𝑋 ,𝑌 1 𝑚𝑛 𝑠 P 𝑋 𝑌 ∩𝑋 𝑌 1 𝑚𝑛 𝑚 1 𝑠· 𝑠· 𝑠· P 𝑋 𝑌 ∩𝑋 𝑌 1 𝑚𝑛 𝑛 P 𝑋 𝑌 ∩𝑋 𝑌 1 𝑚𝑛 𝑚 1 𝑠 ·𝑠 · 𝑠· P 𝑋 𝑌 ∩𝑋 𝑌 1 𝑚𝑛 𝑛 1 𝑠 ·𝑠 · 𝑠· 1 𝑠· 𝑠· 𝑠· P 𝑋 𝑌 ∩𝑋 𝑌 1 𝑚𝑛 𝑚 1 𝑠· 𝑠· 𝑠· 28 148
補足資料 ❶ U統計量の漸近正規性に基づく同時分布とwin ratioの分散導出 𝝈𝒗𝒖 𝟏 𝒖𝒗 𝝃 𝑵𝒕 𝟏𝟎 𝐍 𝜉 ①𝜉 1 𝑚𝑛 𝑛 ②𝜉 ③𝜉 𝟏 𝒖𝒗 𝝃 𝑵𝒄 𝟎𝟏 𝒖 𝟏, 𝟐 / 𝒗 Cov 𝜙 𝑋 , 𝑌 , 𝜙 𝑋 , 𝑌 ′ 1 𝑠 ·𝑠 · 𝑠· 1 𝑚𝑛 1 𝑚𝑛 𝑚 1 𝑠· 𝑠· 𝑠· 1 𝑚𝑛 1 𝑚𝑛 𝑛 1 𝑠 ·𝑠 · 𝑠· 1 𝑚𝑛 𝟏, 𝟐) / 𝜉 Cov 𝜙 𝑋 , 𝑌 , 𝜙 𝑋 ′, 𝑌 𝑠 𝑠 𝑠 ④𝜉 1 𝑚𝑛 𝑚 1 𝑠· 𝑠· 𝑠· ⑤𝜉 1 𝑚𝑛 𝑛 1 𝑠 ·𝑠 · 𝑠· 1 𝑚𝑛 𝑠 1 𝑚𝑛 𝑠 ➅𝜉 1 𝑚𝑛 𝑚 1 𝑠· 𝑠· 𝑠· 1 𝑚𝑛 𝑠 1 𝑚𝑛 𝑠 1 𝑚𝑛 𝑠 29 補足資料 (❷ win ratioの漸近正規性の証明) 𝑔 U ,U log 𝑈 log 𝑈 としてデルタ法を適用する 、 、 、 𝑔 τ ,𝜏 1 𝜕 𝑔 𝜏 2! 𝜕U より、二変数のテーラー展開をすると、 2𝜏 𝜏 𝜕g 𝜕g 𝜕U 𝜕U 𝜏 𝜕 𝑔 𝜕U log 𝜏 log 𝜏 1 2 log 𝜏 log 𝜏 log 𝜎 𝜎 1 𝜏 1 𝜏 𝜏 𝑈 2 𝜏 𝜏 𝑈𝑈 𝜏 𝑈 log 𝜏 log 𝜏 上記の式より、𝑔 τ , 𝜏 の期待値と分散は、 E 𝑔 τ ,𝜏 𝐸 𝜕𝑔 𝜕𝜏 𝜕𝑔 𝜕𝜏 V 𝑔 τ ,𝜏 𝜎 𝜏 𝜎 𝜏 𝜏 𝑈 1 2 𝜎 𝜏 𝜎 𝜏 2 𝜎 𝜎 1 𝜏 1 𝜏 𝜏 𝜏 𝑈𝑈 𝜏 𝑈 𝜎 𝜎 𝜕𝑔 𝜕𝜏 𝜕𝑔 𝜕𝜏 𝝈𝟏𝟏 𝝉𝟐𝟏 𝝈𝟐𝟐 𝝉𝟐𝟐 log 𝜏 log 𝜏 1 𝜏 1 𝜏 𝟐 𝜎 𝜎 𝜏 𝜏 𝐥𝐨𝐠 𝝍 𝝈𝟏𝟐 𝝉𝟏 𝝉𝟐 30 149
補足資料 (❸ 両イベント発生確率とデータ生成) • 両イベント発生確率𝝆を設定することで、他のセルが一意に定まる • 𝜌 𝑏/𝑎 → イベント2の発生割合を超えるため、データ生成が出来ない • 𝜌 𝑏/𝑎 → イベント間が無相関(=独立にイベント発生) • 一様分布を計算された各セルの値で分割する形でデータ生成 イベント2 あり イベント 1 𝒂𝝆 あり なし 合計 なし 𝑏 𝑎𝜌 𝑏 1 𝑎 1 𝜌 𝑏 𝑎 1 1 合計 𝑎 𝜌 𝑏 1 𝑎 1.0 𝑎 ∶ イベント1(最重要評価項目)発生割合 𝑏 ∶イベント2発生割合 𝝆 ∶ 両イベント発生確率 31 補足資料 ❹ シナリオ毎の両イベント発生 確率とポリコリック相関係数 32 150
比例ハザード性が成立しない 生存時間データにおけるペアワイズ比較 ○坂巻 顕太郎 (横浜市立大学データサイエンス推進センター) Generalized pairwise comparisons for non-proportional hazards data Kentaro Sakamaki Center for Data Science, Yokohama City University 要旨: 比例ハザード性が成立しない場合の治療効果の評価方法はいくつかある。 本発表では、Net Benefitの考え方を拡張し、その方法をSASを使って実行する。 キーワード: Non-proportional hazards, Generalized pairwise comparisons, Immune checkpoint inhibitor, (neo)adjuvant chemotherapy 2 151
免疫チェックポイント阻害薬の比較試験 Wolchok JD, et al. N Engl J Med. 2017. 3 術前・術後補助化学療法の比較試験 Ando N, et al. Ann Surg Oncol. 2012. 152 4
治療の特徴 • 免疫チェックポイント阻害薬の比較試験 – 効果の無い期間がある • 3か月くらい – 効果が無い対象の割合が異なる • 術前・術後補助化学療法の比較試験 – 手術による生存期間の延長に意味がある – 治癒することがより重要である • 3~5年くらいイベントがなければ治癒している可能性がある 5 生存時間解析 • 比例ハザード性が成立する場合 – 群間比較:ログランク検定 – 治療効果:ハザード比 • 2つの生存関数(分布関数)の関係の要約 • 比例ハザード性が成立しない場合 – 群間比較:重み付きログランク検定など – 治療効果:時点tにおける生存確率の差、restricted mean survival timeの差、net benefitなど 6 153
ペアワイズ比較 • 治療群間の「勝ち」「負け」をどう評価するかの問題 –𝛿 1 𝑖𝑓 𝑡ℎ𝑒 𝑝𝑎𝑖𝑟 𝑖𝑠 𝑓𝑎𝑣𝑜𝑟𝑎𝑏𝑙𝑒 𝑤𝑖𝑛 0 𝑖𝑓 𝑡ℎ𝑒 𝑝𝑎𝑖𝑟 𝑖𝑠 𝑛𝑒𝑢𝑡𝑟𝑎𝑙 𝑡𝑖𝑒 1 𝑖𝑓 𝑡ℎ𝑒 𝑝𝑎𝑖𝑟 𝑖𝑠 𝑢𝑛𝑓𝑎𝑣𝑜𝑟𝑎𝑏𝑙𝑒 𝑙𝑜𝑠𝑒 • 𝑖: 試験治療群の対象者、𝑗: 標準治療群の対象者 • 治療効果の指標 – Win ratio (Pocock 2012), Proportion in favor of treatment (Buyse 2010), Win difference (Luo et al. 2017), Win Odds (Brunner et al. 2021) 7 Net benefit • 望ましい効果や複数の評価項目を考慮して勝ち負けを評価 – U統計量として推定可能である点は変わらない • 生存時間アウトカムにおいて望ましい延長𝜏を考慮する場合 Pairwise comparison Pair is 𝑋 𝑌 𝜏 Favorable 𝑋 𝑌 𝜏 Neutral (tie) 𝑋 𝑌 𝜏 Unfavorable 8 154
Window mean survival time Paukner M, et al. Stat Med. 2021. 9 治療の特徴を考慮したnet benefitの拡張 • 免疫チェックポイント阻害薬の評価したいポイント – 効果が有る期間の生存時間の延長には興味がある – 効果が無い期間の生存時間の大小関係には興味がない • 術前・術後補助化学療法の評価したいポイント – 治癒するかどうかに興味がある – 治癒しなかったとしてもある程度の生存期間の延長には興味が ある 10 155
比較における優先順位 • 免疫チェックポイント阻害薬の場合(from worst to best) – 1) 効果が無いかどうか – 2) 効果が有る場合は𝜏以上の延長がないかどうか • 術前・術後補助化学療法の場合(from best to worst) – 1) 治癒しているかどうか – 2) 治癒していない場合は𝜏以上の延長があるかどうか 11 実データ解析 • 2つの研究のデータを再構築 – 免疫チェックポイント阻害薬の比較試験 • Nivolumab vs Ipilimumabに絞ったデータ • Wolchok JD, et al. N Engl J Med. 2017. – 術前・術後補助化学療法の比較試験 • Ando N, et al. Ann Surg Oncol. 2012. • 生存曲線のグラフから個人データを再構築 – 各時点の生存確率から擬似データを発生する • Liu N, et al. BMC Med Res Methodol. 2021. 156 12
Shiny apps (https://www.trialdesign.org/) 13 Shiny apps (https://www.trialdesign.org/) Liu N, et al. BMC Med Res Methodol. 2021. 14 157
免疫チェックポイント阻害薬のデータ 15 補助化学療法のデータ 16 158
データステップですべての組み合わせをつくる data pre; set data(where=(treat="pre")); Flag = ID; rename ID = ID0 Treat = Trea0 Time = time0 Surv = Surv0; run; data post; set data(where=(treat="post")); rename ID = ID1 Treat = Trea1 Time = time1 Surv = Surv1; do flag=1 to 100; output; end; run; proc sort data=pre; by flag; run; proc sort data=post; by flag; run; data GCP; merge pre post; by flag; drop flag; run; 17 ペアワイズ比較のためのデータセット 18 159
リサンプリングによるデータセット作成 • 並べ替え検定用 proc multtest data=data outsamp=test permutation nsample=1000 seed=12345; class treat; test mean(time Surv); run; • 95%信頼区間用 proc surveyselect data=data method=urs n=100 seed=12345 out=CI outhits rep=1000; strata treat; run; 19 術前・術後補助化学療法の解析結果 提案方法(5年で治癒、𝜏 1) 治癒を無視した比較( 𝜏 1) 勝ち 34.95% 勝ち 35.40% 引き分け 37.51% 引き分け 37.06% 負け 27.54% 負け 27.54% 勝ち(治癒する・しない) 27.90% ― ― 勝ち(治癒しないが𝜏延長) 7.05% 勝ち(𝜏延長) 35.40% 引き分け(ともに治癒) 17.10% ― ― 引き分け(治癒せず期間が同じ) 20.41% 引き分け(期間が同じ) 37.06% 負け(治癒しない・する) 20.90% ― ― 負け(治癒せず𝜏短縮) 6.64% 負け(𝜏短縮) 27.54% 20 160
今後の展開 • シミュレーション実験による性能評価 – Window mean survival timeやmilestone survivalなどを用いた 場合との結果の違いをみる • Estimandが異なるため、単純な比較はできない • 打ち切りの対処 – 単純なU統計量の拡張以外の推定方法を考える必要がある • 複数の評価項目の利用 – 特に補助化学療法において治癒でタイとなった場合に有害事象 などの情報を利用したい 21 161
複合エンドポイントに基づくアダプティブ・デザイン ○上村鋼平1 (東京大学大学院情報学環・生物統計情報学講座1) Adaptive Design based on Composite Endpoint Kohei Uemura Department of Biostatistics and Bioinformatics, Interfaculty Initiative in Information Studies, the University of Tokyo 要旨: 臨床的及び画像的改善の有無に基づく複合エンドポイントは、再 ⽣医療等製品の有効性をより効率的に評価し、説明できる可能性 があり、複合エンドポイントに基づくアダプティブ・デザインの 有⽤性について検討した。 キーワード:regenerative medicine, composite endpoint, adaptive design, sample size re-estimation 2 162
https://www.pmda.go.jp/files/000156112.pdf 臨床試験のエンドポイント • ICH E9 臨床試験における統計的原則 2.2.2 主要変数と副次変数 • 「主要変数(「目標」変数、主要評価項目ともいう)は、試験の主要な目的に直結 した臨床的に最も適切で説得力のある証拠を与えうる変数であるべきである。 主要変数は通常ただ一つにすべきである。・・・」 • 臨床試験、特に治験の場合 • 有効性評価のためのエンドポイントは、典型的なものを使用することが多い • 例えば、固形がんの奏効割合、PFS、OSや関節リウマチのACR20%改善率など • 一方、再生医療等製品や希少疾患の有効性評価や、治療用アプリの 有用性を評価したい場合など • 必ずしもエンドポイントが明らかではなく、議論の余地がある 3 Motivationとなった事例 • ある再生医療等製品の開発 • 臨床的な改善と画像的な改善のいずれも重要な有効性の要素 • 両方の改善を組み合わせた上で、製品の有効性をうまく説明し、説得力の ある結果を示すことが重要との議論 • 臨床的な改善は、VASを用いた疼痛の改善を評価する必要性 • 疼痛の評価は、バラツキやプラセボ効果が大きく、群間差も一般にあまり 大きくないため、まともに検証的試験を計画すると、数百~1000例規模の 症例数が必要となる 4 163
複合エンドポイントの検討 • 疼痛VASがベースラインから一定以上改善したら • VAS改善ありと評価 • 画像評価がベースラインから一定以上改善したら • 画像改善ありと評価 • これらを複合エンドポイント化 • VAS改善あり OR 画像改善あり ならば、改善ありと定義 • 改善割合を比較 5 ANDの複合エンドポイント • VAS改善あり AND 画像改善あり ならば、改善ありと定義 • プラセボ効果をブロックできる可能性 VAS改善割合 VAS改善割合 群間差=薬効 プラセボ レスポンス ❓ 試験治療群 シャム治療群 6 164
ANDの複合エンドポイント • VAS改善あり AND 画像改善あり ならば、改善ありと定義 治 療 に よ る プラセボ レスポンス レスポンス • プラセボ効果をブロックできる可能性 VAS改善割合 VAS改善割合 群間差=薬効 試験治療群 シャム治療群 7 ANDの複合エンドポイント • VAS改善あり AND 画像改善あり ならば、改善ありと定義 治療による プ ラ セ ボ レスポンス レスポンス • プラセボ効果をブロックできる可能性 VAS改善割合 VAS改善割合 群間差=薬効 投与群×プラセボレスポンス の量的交互作⽤が無いとは限らない 試験治療群 シャム治療群 8 165
ANDの複合エンドポイント • VAS改善あり AND 画像改善あり ならば、改善ありと定義 VAS改善割合 AND改善割合 群間差=薬効 投与群×プラセボレスポンス の量的交互作⽤が無いとは限らない 試験治療群 シャム治療群 AND改善割合 群間差=薬効 試験治療群 シャム治療群9 サンプルサイズ計算 • 添え字:1は試験治療群0は シャム治療群 • Vas_r:vas改善割合 • gazo_r:画像改善割合 • And_p:vas改善例に占める 画像改善例の割合 • And_r:AND改善割合 • Or_r:OR改善割合 • N_total:総症例数 • Alpha:第一種の過誤確率 • Power_and:AND改善割合 に基づく検出力 • Power_or:OR改善割合 に基づく検出力 10 166 画像改善は︑プラセボ 効果はほとんどない VAS改善割合 改善のうち︑ VAS 画像改善も伴う 治 療 に よ る プラセボ レスポンス レスポンス • プラセボ効果をブロックできる可能性
Adaptive Endpoint Selection • AND改善割合 vs. OR改善割合 • VAS改善例のうち画像改善割合がどの程度かに依存 • 試験治療において、VAS改善がどの程度画像改善を伴うか、は未知 • 中間解析結果に基づき • エンドポイントを選択するAdaptive Design • 選択したエンドポイントに基づき、症例数を再設計 • 最終解析において • 選択したエンドポイントで解析する方法1 • 多重検定(Holm法)に基づき、2種類のエンドポイントを解析する方法2 11 中間解析の方法 • 中間解析は1回とし、O’Brien & Flemmingの境界で有効中止を計画 • (継続の場合)各エンドポイントの有効割合ではなく、Z統計量の 大小でAND有効割合またはOR有効割合を選択 • 𝑝 :中間解析時の 𝑝̂ 𝑍 𝑝̂ 2⁄𝑛 𝑝̅ 1 𝑝̅ , 𝑝̅ 𝑝̂ 𝑝̂ 有効割合, 𝑗 1(試験治療群), 𝑗 0(シャム群) 2 • 𝑐 _ :中間解析時の 棄却限界値 • 上記Z統計量の大きい方に基づき症例数再設計(SSR) • 条件付検出力に基づき中間解析後の必要例数𝑛 _ 2 𝑛 _ 𝑐_ 𝑍 𝑡 1 𝑡 𝑍 • 𝑡:情報量分数 を計算 • 𝑧 :標準正規分布の 上側100𝛽%点 𝑧 , 𝑖𝑓 𝑛 2/𝑛 𝑛 𝑁 𝑛 • 𝑛 , 𝑛 :初期計画 による中間解析前後 の群ごとの症例数 • 𝑁 :最大症例数 12 167
中間解析の方法 • 中間解析は1回とし、O’Brien & Flemmingの境界で有効中止を計画 • (継続の場合)各エンドポイントの有効割合ではなく、Z統計量の 大小でAND有効割合またはOR有効割合を選択 • 𝑝 :中間解析時の 𝑝̂ 𝑝̂ 𝑍 2⁄𝑛 𝑝̅ 1 𝑝̅ 𝑝̂ 𝑝̂ , 𝑝̅ 有効割合, 𝑗 1(試験治療群), 𝑗 0(シャム群) 2 • 𝑐 _ :中間解析時の 棄却限界値 • 上記Z統計量の大きい方に基づき症例数再設計(SSR) • 条件付検出力に基づき中間解析後の必要例数𝑛 _ 中間解析結果で条件づけた 第2ステージの条件付第⼀種 過誤確率による棄却限界値 2 𝑐_ 𝑛 _ 𝑍 𝑡 1 𝑡 𝑍 • 𝑡:情報量分数 を計算 • 𝑧 :標準正規分布の 上側100𝛽%点 SDで標準化した 第1ステージの群間差 𝑧 , 𝑖𝑓 𝑛 2/𝑛 𝑛 𝑁 𝑛 • 𝑛 , 𝑛 :初期計画 による中間解析前後 の群ごとの症例数 • 𝑁 :最大症例数 13 Statistics in Medicine, 2005; 24:3697-714. Biometrical Journal, 2006; 48:623‒34, 635-43. 最終解析の方法 • Adaptive Endpoint SelectionおよびSSRを考慮したCombination Test 2𝑚𝑖𝑛 1 Φ 𝑍_ ,1 Φ 𝑍_ 1 Φ 𝑍_ • Φ:標準正規分布 の分布関数 AND改善割合を選択した場合 1 Φ 𝑍_ 1 1 Φ 𝑍_ 中間解析 ステージ1 : 𝑛 Φ 𝑍_ ステージ2: 𝒏𝟐 → 𝒏𝟐𝑺𝑺𝑹 SSR 168 14
最終解析の方法 • Adaptive Endpoint SelectionおよびSSRを考慮したCombination Test 𝑈 𝑡Φ 2𝑚𝑖𝑛 1 Φ 𝑍_ 2𝑚𝑖𝑛 1 𝑖𝑓 𝑈 1 ,1 Φ 𝑍_ ,1 Φ 𝑍 _ 𝑐 _ 𝑡ℎ𝑒𝑛 𝑠𝑖𝑔𝑛𝑖𝑓𝑖𝑐𝑎𝑛𝑡 Φ 𝑍_ 1 1 最終解析: 𝑛 𝒏𝟐𝑺𝑺𝑹 Φ 𝑍_ • Φ:標準正規分布 の分布関数 AND改善割合を選択した場合 1 Φ 𝑍_ 1 1 Φ 𝑍_ 中間解析 ステージ1 : 𝑛 𝑡𝑍 _ Φ 𝑍_ ステージ2: 𝒏𝟐 → 𝒏𝟐𝑺𝑺𝑹 SSR 最終解析の方法 15 第1ステージのみ 多重性のペナルティを受ける形 • Adaptive Endpoint SelectionおよびSSRを考慮したCombination Test 𝑈 𝑡Φ 2𝑚𝑖𝑛 1 Φ 𝑍_ 2𝑚𝑖𝑛 1 𝑖𝑓 𝑈 1 ,1 Φ 𝑍_ ,1 Φ 𝑍 _ 𝑐 _ 𝑡ℎ𝑒𝑛 𝑠𝑖𝑔𝑛𝑖𝑓𝑖𝑐𝑎𝑛𝑡 Φ 𝑍_ 1 1 最終解析: 𝑛 𝒏𝟐𝑺𝑺𝑹 Φ 𝑍_ • Φ:標準正規分布 の分布関数 AND改善割合を選択した場合 1 Φ 𝑍_ 1 1 Φ 𝑍_ 中間解析 ステージ1 : 𝑛 𝑡𝑍 _ Φ 𝑍_ ステージ2: 𝒏𝟐 → 𝒏𝟐𝑺𝑺𝑹 SSR 169 16
最終解析の方法 その2 • Adaptive Endpoint Selectionに基づくSSRを実施するが、最終解析 はステージ2部分の多重性も考慮したCombination Test 2𝑚𝑖𝑛 1 Φ 𝑍_ ,1 2𝑚𝑖𝑛 1 Φ 𝑍_ Φ 𝑍_ ,1 • Φ:標準正規分布 の分布関数 AND改善割合を選択し た場合でも解析上は OR改善割合も考慮する 1 Φ 𝑍_ 1 1 Φ 𝑍_ 中間解析 ステージ1 : 𝑛 Φ 𝑍_ Φ 𝑍_ 1 Φ 𝑍_ ステージ2: 𝒏𝟐 → 𝒏𝟐𝑺𝑺𝑹 SSR 17 最終解析の方法 その2 • Adaptive Endpoint Selectionに基づくSSRを実施するが、最終解析 はステージ2部分の多重性も考慮したCombination Test 𝑈_ 𝑡𝑍 _ 𝑈 Φ 2𝑚𝑖𝑛 1 Φ 𝑍_ 1 1 𝑡𝑍 _ , 𝑈 _ 2𝑚𝑖𝑛 1 Φ 𝑈 _ 𝑡𝑍 _ ,1 Φ 𝑈 _ ,1 2𝑚𝑖𝑛 1 Φ 𝑍_ 1 𝑡𝑍 _ Φ 𝑍_ ,1 Φ 𝑍_ 1 1 Φ 𝑍_ 中間解析 ステージ1 : 𝑛 Φ 𝑍_ • Φ:標準正規分布 の分布関数 AND改善割合を選択し た場合でも解析上は OR改善割合も考慮する 1 最終解析: 𝑛 𝒏𝟐𝑺𝑺𝑹 Φ 𝑍_ 1 Φ 𝑍_ ステージ2: 𝒏𝟐 → 𝒏𝟐𝑺𝑺𝑹 SSR 170 18
多重性のペナルティは 第1ステージと第2ステージ を併せた全体で受ける形 𝑈_ 𝑈 𝑡𝑍 _ Φ 2𝑚𝑖𝑛 1 第1ステージと第2ステージ を併せた全体のデータによ り改善割合が選択される形 1 1 2 𝑡𝑍 _ , 𝑈 _ 𝑚𝑖𝑛 1 Φ 𝑈 _ Φ 𝑍_ ,1 Φ 𝑍_ 𝑡𝑍 _ 1 ,1 Φ 𝑈 _ 2𝑚𝑖𝑛 1 Φ 𝑍_ 𝑡𝑍 _ ,1 Φ 𝑍_ 1 1 Φ 𝑍_ 中間解析 ステージ1 : 𝑛 Φ 𝑍_ • Φ:標準正規分布 の分布関数 AND改善割合を選択し た場合でも解析上は OR改善割合も考慮する 1 最終解析: 𝑛 𝒏𝟐𝑺𝑺𝑹 Φ 𝑍_ 1 Φ 𝑍_ ステージ2: 𝒏𝟐 → 𝒏𝟐𝑺𝑺𝑹 SSR 19 シミュレーション • • • • • • • • Do fraction=0.25 to 0.75 by 0.25; Do n_total=40 to 160 by 40; Do and_p1=0.1 to 0.9 by 0.1; and_p0=0.1; Do Design="VAS_R", "Gazo_R", "AND_R", "OR_R", "Adap_EP", "AdEP_SSR1", "AdEP_SSR2", "Mult_EP" ; Power= Power+ Sig/&nSims; ASN= ASN+ Final_N/&nSims; %sim(vas_r1=0.7, vas_r0=0.6, gazo_r1=0.3, gazo_r0=0.1, Boundary_type= "O'Brien & Fleming", nSims=10000, seed=20211022, beta=0.8, N_max=2.5, Min_f=1); 20 171
シミュレーション • 中間解析時点の情報量分数: 𝑡 0.25, 0.5, 0.75 • 初期計画に基づく症例数:𝑛 𝑛 20, 40, 60, 80 • 試験治療群のVAS改善例における画像改善割合:0.1, 0.2, … , 0.9 • シャム群のVAS改善例における画像改善割合:0.1 • 単一のEPに固定したデザイン:VAS_R,Gazo_R,AND_R,OR_R • 中間解析結果に基づくEP選択のみ:Adap_EP • 中間解析結果に基づくEP選択+SSR:AdEP_SSR1, AdEP_SSR2 • 複数のEPに基づく多重検定のみ: Mult_EP • 評価指標:検出力、期待症例数 • シミュレーション回数:10,000回 • パラメータの真値(試験治療群、シャム群): VAS_R= 0.7, 0.6,Gazo_R=0.3, 0.1 • SSRの最小・最大症例数:𝑁 𝑛 𝑛 ,𝑁 𝑛 𝑛 2.5 21 22 172
結果:検出力 Power 23 結果:期待症例数 ASN 24 173
まとめと考察 • 再生医療等製品の有効性評価における、複合エンドポイントの有用性に ついて検討した • 複合エンドポイントは、必ずしもORの原理が良いとは限らない • プラセボ効果が低く、臨床的な改善と一定の相関を有する画像的改善の 有無を複合したAND改善割合は、再生医療等製品の有効性をより効率的 に評価し、説明できる可能性が示された • ただし、臨床的な改善割合に全く効果が無くても、AND改善割合に差を認めるこ とはあり得るため、各コンポーネントの結果を確認することは必須 • 中間解析結果に基づくAdaptive Endpoint Selectionにより、複合エンドポイ ントの不確実性へある程度対処可能だが、多重検定の方がより性能が良 い可能性が示された • AND有効割合とOR有効割合のいずれも検出力が下がる状況が存在し、 他の解析手法の検討が今後必要と考える 25 174
クリニカル・データ・サイエンス分野 におけるOSSの可能性と今後の展望 秋谷 一平 エイツーヘルスケア株式会社 免責事項 本発表は発表者の個人的な意見や考えに基づくものであり、発 表者が所属する企業、その他の組織の意見、考え、経営戦略、 営業戦略等を反映したものではありません。 また、本発表内容には誤りが含まれる場合がありますので、ご 了承ください。 175
自己紹介 • 名古屋大学大学院医学研究科博士課程満期退学 • 生体信号処理を研究 • ケモインフォマティクス、統計解析ソフトのテク ニカルサポート • CROにて、クリニカルプログラマー経て、現在 ではクリニカルデータサインティスト、データス タンダードコンサルタントをやってます。 • 最近の興味はグラフデータ、自然言語処理、機械 学習、デジタルバイオマーカー等々。 本日の内容 • タイトルと乖離があるかもしれないですが、より多くの人が オープンソースへ関わって行くことへの動機づけとなるよう な内容となっています。 • 企業がオープンソースに取り組むことの価値や、どのように 始めるべきかの議論も含まれます。 176
オープンソースを使っている 人は何人くらいいますか? Photo by Rohit Farmer on Unsplash • Pinnacle 21 Community • R • Python • etc. 商用製品も含め、全てのソフトウェアにオープン ソースは利用されていると言っても過言ではない 状況です。 177
臨床開発分野にオープンソースのブームが来ている • FDA Github https://github.com/fda • PhUSE Data Visualisation & Open Source Technology https://advance.phuse.global/pages/viewpage.action?pageId=327777 • CDISC Open Source Alliance https://cosa.cdisc.org • Open Source Portal For Clinical Study Evaluations https://www.glacon.eu/portal/ オープンソースとはなんですか? • オープンソース・イニシアティブによる定義 (wikipediaより https://ja.wikipedia.org/wiki/オープンソースの定義) • 自由な再頒布 • ソースコード(「ソースコード公開」も含む自由な利用) • 派生物(Derived Works. 派生物の自由な利用) • 原著作者のソースコードとの区別 (Integrity) - これはTeXなどパッチのみの配布を要求するソフトウェアをOSDに合致させるための妥協の産物である。 • 特定人物・集団に対する差別の禁止 - たとえば「特定国家への輸出を禁ずるソフトウェア」はOSDに合致しない。 • 使用分野 (Fields of Endeavor) に対する差別の禁止 - 例えば「兵器への利用を禁ずるソフトウェア」はOSDに合致しない。 • ライセンスの権利配分(Distribution of License. ライセンスが再頒布者に認める権利は差別なく与えなければならない。) • ライセンスは特定製品に限定してはならない • ライセンスは他のソフトウェアを制限してはならない - 著作物として別個のものと明確に定義できる各ソフトウェアはそれぞれ別のライセンスであってもよい(例えば一方がオー プンソースライセンスであっても他方はプロプライエタリであってもよい)。GPLもこの条件に合致している("集積物の別の部分と見なされるパッチ"を参照)。 • ライセンスは技術中立 (Technology-Neutral) でなければならない - ライセンスに特定技術に依存するような条項があってはならない。例えばクリックラップ(英語版)などのソ フトウェア利用許諾契約は、GUIのクリック操作という、契約に対する明確な同意の意思表示を強要する。仮に「クリックラップ」条項が含まれたオープンソースソフトウェアを CUI環境でしか動作しないソフトウェアに組み込んだ場合に問題が発生する。 178
オープンソースとはなんですか? • オープンソースというとソフトウェ アを指すことが多いですが、そればか りではありません。 これらはほんの一例です。 シングルボードコン ピュータ インスリン ドローン・ハードウェア 住宅 臨床試験登録 臨床試験データのオープ ンデータ オープンソースとはなんですか? • 結局のところ、料理レシピやDIYみ たいなもの。 左の画像は私の手作りのベーグルとシナモンロー ルです。 179
オープンソースに対するよくある誤解 • 無料である。 多くの場合、無料であるが、無料であることが要件ではない。 • 品質が怪しい。 メジャーな製品は優れた品質のものが多いですし、自動テスト コードが含まれているものもたくさんあります。 • 著作権や知的財産権を放棄しなければならない。 著作権や知的財産放棄は必要ないです。どのようなライセンス 下か配布するかが大事です。 • ボランティアが無償で開発している。 企業が大規模に人員を雇用して開発しているものも数多くあり ます。 近年のオープンソース • 現在は無料のクラウド(SaaS)製品がたくさんあるので、 ライセンス費用が無償であることのメリットは小さくなっていま す。 • 人気のある商用ソフトウェアは、オープンソースのクローンソフト ウェアがある。 • 混沌とした状況で、オープンソースと商用製品を区別することにあ まり意味がない状況。 180
なぜオープンソース? • テクノロジー企業は、製品の品質、機能の向上やマーケティング戦略として採用している。 • ユーザーから早期フィードバックを得られる。 • Technology geeksから機能の改善、追加の提案がもらえる。 • 有償版の購入(アップセル)や、別の製品の購入(クロスセル)を狙う。 • ユーザー側は、その製品が本当に役立つかの検証を制限なく、早期に実施できる。 • リバースエンジニアリングやパフォーマンステストがやり放題。 • しかも無償で。 • 商用製品は販売停止になることがあるので、オープンソースはそのリスクヘッジになる。 なぜオープンソース? • 基盤技術などは共同開発することで製品のメンテナンス・リ リース、バージョンアップなどを早期リリースでき、開発コ ストも抑えられる。 • Apache Software Foundation 例: Hadoop, Spark, MXNet 181
Innovation <- Open Science + Open Source + Open Data + Open Mind Photo by Austin Distel on Unsplash 「なぜオープンソース?」という問いに対する答え イノベーションの原動力 イノベーションを加速 182
私のオープンソース活動 • PhUSE Script: RでBOX Plotを作成するスクリプト https://github.com/phuse-org/phuse-scripts • PhUSE Graph Technology: RDFからdefine.xmlを出力する ツール https://github.com/phuse-org/CTDasRDF R4DSXML https://github.com/i-akiya/R4DSXML • CDISC Dataset-XMLとDefine-XMLのファイ ルをRのデータフレーム形式でインポートする Rパッケージ。 以下のソフトウェイで使用されています。 • Define2Validate https://github.com/mokjpn/Define2Validate • A Shiny App for Generating Data Dependency Flowchart in ADRG https://www.lexjansen.com/pharmasug/2021/ SS/PharmaSUG-2021-SS-058.pdf 183
Douhau Data Studio https://github.com/i-akiya/DouhauDataStudio • SDTM用データブラウザ • ダッシュボード、XPORT v5と Dataset-XMLをサポート • R ShinyとElectronを用いたデ スクトップ・アプリケーション • 将来的には、ADaMに対応予 定。 MatchaScript https://github.com/i-akiya/MatchaScript • 大失敗プロジェクト • SDTM、ADaMを作成するためのプログラ ミング言語を開発するというプロジェクト • メタデータやCDISC Terminologyと連携 することで、コード量を減らし、品質向上 を目指した • モチベーションが上がらず、放置プレイ中 • 再開の予定は無い 184
はじめよう オープンソース Photo by Braden Collum on Unsplash オープンソースへの適応 • 個人レベルでの適応 • 組織レベルでの適応 185
個人レベルでの適応 オープンソースへの適応の3ステップ コラボレーション ユーザーからのフィードバックを得て 改善する。他のオープンソース開発者と コラボレーションする。 提供 自らオープンソース製品を開発し、公開する。 利用 オープンソース製品を探し、導入、利用する。 オープンソースを「利用」できるようになる • オープンソースを探す! • Open Source Portal For Clinical Study Evaluations https://www.glacon.eu/portal/ • Github https://github.com • 良さそうなオープンソースを使ってみる! 186
オープンソースを「提供」できるようになる • スクリプト、ライブラリ、アプリケーションなどを開発す る。 • ライセンスを選択する。 • GithubやGitLabで公開する。 オープンソースで「コラボレーション」する • GithubやGitLabで公開したものをSNS等で拡散する。 • フィードバックをもらうことが目的。 • 予想外のバグを見つけてもらったり、新機能のアイディアを得 る。 • 開発したものを改善する。 • 他のオープンソース開発者と共同で開発する。 187
個人レベルでの適応 • オープンソースに適応するにはスキルアップが必要 • プログラミングスキル(JavascriptやPythonなど流行りの言語)が必要 • LinuxやUNIX系OSが使えたほうが良い Windows Subsystem for Linuxを使えば、Win PCでもLinuxを使えます • オープンソースは日本語ドキュメントが少ないので、英語できたほうが良い • 情報発信も英語になる • スクラム、カンバンといったアジャイルな開発手法も必要となる オープンソースプロジェクトの始め方 • Open Source Guide https://opensource.guide/ja/starting-aproject/ 188
個人レベルの適応に必要なコスト • その気になれば、0円で可能。 • 無料の開発ツールが多数あり。 • Github、GitLabは無料で使うことも可。 • SNSももちろん無料。 • デモ用クラウド環境も無料。 Photo by John McArthur on Unsplash まずは最初の一歩が大事 探すことから始めよう! 流行りのものを使ってみるのもいいでしょう! Photo by Clint McKoy on Unsplash 189
組織レベルでの適応 • オープンソースに適応した人材を採用、育成しないならな い。事業規模、プロジェクト規模に応じて。 • ゴール設定の明確化: コスト削減はゴールになりえない? • 既存システムとの調和 • 社内ルールの整備: 公開する場合の審査、承認プロセス オープンソースに詳しい知財専門の弁護士が必要かも Photo by Christina @ wocintechchat.com on Unsplash 混在環境の構築 レガシーシステム クラウド オープンソース 自社開発 ソフトウェア 商用ソフトウェア 190
オープンソースに関する係争事例 • 不注意により法的問題を引き起こさないためにも、社内のルールづ くり、チェック体制が必要です。 • OSS に関する著作権法上の係争事例 IPAのサイトにありますが、リコーの方がまとめられた資料になります。 https://www.ipa.go.jp/files/000028286.pdf • OSSライセンス違反とその対策 オージス総研のブログ https://www.ogis-ri.co.jp/otc/hiroba/technical/oss-license-violations/ 私の絶賛オススメ オープンソース製品 191
Apache Airflow https://github.com/apache/airflow • ワークフロー・エンジン • airbnbで開発された後、Apacheに移管 • AWSがAirflowをSaaSで提供 • 多くタスクを同時にハンドリングできるようにス ケーラビリティの高い設計になっている • タスクはPythonで記述し、各種コネクターが豊富 • テクノロジー企業でのデータサイエンス業務でか なり人気 Docker https://www.docker.com • コンテナ仮想化 • データサイエンス業務だと、分散処理環境を 容易に動的に展開することが可能になります • Docker Imageでソフトウェアを配布すると いうやり方が一般的になってきた • バリデートな計算機環境を構築、運用するの にDockerベースで考えるようになってきてい ます 192
大事なことなので、最後にもう一度 「なぜオープンソース?」という問いに対する答え イノベーションの原動力 イノベーションを加速 ご清聴ありがとうございました。 Photo by Priscilla Du Preez on Unsplash 193
OST use in regulatory submission Yuichi Nakajima, PHUSE OST WG lead, Novartis Pharma K.K. Disclaimer • The views presented are the views of the presenter, not necessarily those of Novartis. • These slides are intended for educational purposes only and for the personal use of the audience. These slides are not intended for wider distribution outside the intended purpose without presenter approval. • The content of this slide deck is accurate to the best of the presenter’s knowledge at the time of production. 194
Agenda • • • • Background PMDA requirements Introduction of TransCelerate: Modernization of Statistical Analytics (MSA) Conclusion Background • The R language era is beginning ! • Open Source Software (OSS), especially R, is actively used pharmaceutical companies in recent days. Many companies have started to implement R to statistical programming in order for cost reduction, more productivities, and education points of view for programmers. • Let the question of acceptance of R deliverables by health authority come to an end !! • While the R programs itself has been submitted as a part of electrical Case Report Tabulation to PMDA, Japanese health authority, there has been little use experience of deliverables from R in new drug application from the point of computer system validation, and there is no clear guidance of acceptance in Japan. 195
Background Evolve: Expand capability Faster delivery by more dynamic and modernized analyses to be utilized for statistical programmer Why OST ? Vast community, easy to access to get information Recruit and retain top talent Surveyy forr OSS S use e in n Japan • Q: Do you utilize Open Source Software such as R/Python at work? (including work efficiency) 2020 20 (N=42) * including personal use only 2021 (N=53) 196
Surveyy forr OSS S use e in n Japan • Q: Which phase of clinical development or post marketing do you utilize OST? (multiple answers) Agenda • • • • Background PMDA requirements Introduction of TransCelerate: Modernization of Statistical Analytics (MSA) Conclusion 197
PMDA A requirements Statistical Software Clarifying Statement, May 6, 2015. “FDA does not require use of any specific software for statistical analyses, ...” Technical Conformance Guide on Electronic Study Data Submission, January 24, 2019. “Not limited to specific software or versions” (Section 4.1.6.2 File format of the programs) PMDA requirements • Note that PMDA only mentions about submission of programs as a part of eStudy Data submission whereas FDA indicates a statistical analyses of NDA. • No reference guidance for R deliverables (other than submission of program) by PMDA. However we can consider the submission deliverables created from open source software as “Electronic (/Electromagnetic) records” according to following guidance. 198
PMDA A requirements • The principal of ER(Electronic Record)/ES (Electronic Signature) issued by MHLW*, April 1, 2005 (Japanese only), “་⸆ရ➼䛾 ᢎㄆཪ䛿チྍ➼䛻ಀ䜛⏦ㄳ➼䛻䛚䛡䜛㟁☢ⓗグ㘓ཬ䜃㟁Ꮚ ⨫ྡ䛾⏝䛻䛴䛔䛶 / Use of Electromagnetic Records and Electronic Signatures in Application, etc. for Approval or License, etc.” • Scope of this guidance • “When electromagnetic records or electronic signatures are used as data to be submitted for applications, notifications, or reports, etc. related to approval or licensing, etc. of drugs, ...” PMDA requirements • Section 3, Requirement of Electromagnetic records • “It is assumed that the reliability of the system using electromagnetic records is ensured by computerized system validation (csv).” • Section 3.1 Integrity of electromagnetic record Complete Accurate Accountable (creation / modification / deletion) Reliable 199
PMDA requirements • How we can prepare csv documents? • “་⸆ရ䞉་⸆㒊እရ〇㐀㈍ᴗ⪅➼䛻䛚 䛡䜛䝁䞁䝢䝳䞊䝍䝅䝇䝔䝮㐺ṇ⟶⌮䜺䜲䝗 䝷䜲䞁䛻䛴䛔䛶 / The guidelines for management of computerized systems by pharmaceutical company” (October 21, 2010, MHLW) can be the reference. • For GQP/GMP, not clearly mention for GCP. Section Contents 3 䝁䞁䝢䝳䞊䝍䝅䝇䝔䝮䛾㛤Ⓨ䚸᳨ドཬ䜃㐠⏝⟶⌮ 䛻㛵䛩䜛ᩥ᭩䛾సᡂ 4 㛤Ⓨᴗົ 5 ᳨ドᴗົ 6 㐠⏝⟶⌮ᴗົ 7 ⮬ᕫⅬ᳨ 8 䝁䞁䝢䝳䞊䝍䝅䝇䝔䝮䛾ᗫᲠ 9 ᩥ᭩ཬ䜃グ㘓䛾⟶⌮ PMDA requirements 200
Agenda • • • • Background PMDA requirements Introduction of TransCelerate: Modernization of Statistical Analytics (MSA) Conclusion Modernization of statistical analytics (MSA) framework The limited regulatory perspective on this matter has become a barrier in implementing and leveraging newer analytical software capabilities. A lack of evolution within the pharmaceutical industry’s analytic capabilities MSA framework is based on - Accuracy - Traceability - Reproducibility for a modern analytical software environment. 201
䝋䝣䝖䜴䜵䜰䛾ಙ㢗ᛶ Accuracy in software package / library ฟຊ⤖ᯝ䛾⏝┠ⓗ Package / Library management • Package management. • “A risk-based approach for assessing R package accuracy within a validated infrastructure”, R Validation Hub, 2020. • Four criteria to assess the risk of contributed* R package. * Contributed = Open 1. Purpose source package which is 2. Maintenance Good Practice (Software Development Life Cycle, SDLC) developed by anyone, and may differ in accuracy. 3. Community Usage 4. Testing • If the package to be used in analyses for HA, sponsors carefully check the validation flow of packages as per risk assessments. 202
Agenda • • • • Background PMDA requirements Introduction of TransCelerate: Modernization of Statistical Analytics (MSA) Conclusion Conclusion • Acceptance by health authorities. • SAS will remain the first choice but not the only choice of reporting in clinical developments. • PMDA never mentions they won’t accept R deliverables. Now the time to start discussion If there is a package acceptable by FDA. • Consider implementation • Big discussion across organization needed. • Operational management is not a “workaround” but “permanent measure”. Sponsor should consider roadmap of the systems. 203
Acronyms DQ Design Qualification NHLW Ministry of Health, Labour and Welfare IQ Installation Qualification CRT Case Report Tabulation OQ Operation Qualification TFL Table, Figure and Listing PQ Performance Qualification CSV Computerized System Validation URS User Requirement Specification Reference • • • • • • • • https://www.fda.gov/media/109552/download R Validation Hub, https://www.pharmar.org/regulations/ A Guidance Document for the Use of R in Regulated Clinical Trial Environments, https://www.r-project.org/doc/R-FDA.pdf The R will be helpful for creating datasets and TFLs for the NDA submission nin the near future, Ippei Akiya, PHUSE SDE Tokyo 2020. “་⸆ရ䞉་⸆㒊እရ〇㐀㈍ᴗ⪅➼䛻䛚䛡䜛䝁䞁䝢䝳䞊䝍䝅䝇䝔䝮㐺ṇ⟶⌮䜺䜲䝗䝷䜲䞁䛻䛴䛔䛶”, https://www.mhlw.go.jp/web/t_doc?dataId=00tb6573&dataType=1&pageNo=1 “་⸆ရ➼䛾ᢎㄆ䜎䛯䛿チྍ➼䛻㛵䜟䜛⏦ㄳ➼䛻䛚䛡䜛㟁☢ⓗグ㘓ཬ䜃㟁Ꮚ⨫ྡ䛾⏝䛻䛴䛔䛶(Use of Electronic Records and Electronic Signatures in Applications for Approval or License of Pharmaceuticals, etc.), 01-Apr-2005, MHLW https://www.pmda.go.jp/files/000158308.pdf ᪂་⸆ရGCPᐇᆅㄪᰝ䞉㐺ྜᛶ᭩㠃ㄪᰝ䝏䜵䝑䜽䝸䝇䝖䠄GCP Inspection checklist䠅, https://www.pmda.go.jp/files/000205702.docx TransCelerate Modernization of Statistical Analytics https://www.transceleratebiopharmainc.com/initiatives/modernizationstatistical-analytics/ 204
2021/11/19 SASプログラマから見たOSS Open Source Software イーピーエス株式会社 ⽥中 真史、森岡 裕 0. 自己紹介 ⽥中 実務経験 SAS Python 臨床試験の解析 臨床試験の解析の補助 3年8ヶ⽉ 1年7ヶ⽉ SASユーザー総会 2019 PROC FCMPとDOSUBL関数でユーザー定義関数を⾃由かつ平易に作成する⽅法 2021 臨床試験のデータハンドリングとSQLプロシジャ 森岡 実務経験 SAS Python 臨床試験の解析 調査業務 ⾃⼰啓発 11年 2年 4年 SASユーザー総会 2013 ライブラリ参照と名前定義を利⽤してEXCELファイルへの柔軟な⼊出⼒を実現する⽅法と応⽤例の提案―解析結果のレポーティングからセルオートマトンまで― 2014 SASハッシュオブジェクトを利⽤して医薬品開発に使⽤するプログラムを効率化する-有害事象と併⽤薬、臨床検査値と途中変更のある施設基準値のマッチングからSASプログラムコードの分析まで 2014 数独解答プロセスをExcel画⾯上にリアルタイムで可視化するSASプログラム 2015 SASハッシュオブジェクトを利⽤したデータ集計-アイテムセットのカウントを例として2016 DS2⾔語によるデータハンドリングについて 2017 Proc LuaによるSASマクロに依存しないプログラミングの提案 2018 DOSUBL関数内で⽣成したビューをハッシュオブジェクトに格納することによりPROC DS2のハッシュパッケージの挙動を擬似的に再現する⽅法 2019 解析帳票出⼒⽤データセットのコンペアに拡張属性を利⽤する⽅法 2019 SAS Global Forum 2019 レポート -⽇本のSASプログラマーのプレゼンス向上を⽬指して2019 FCMPのSTATIC statement,HASH object,DICTIONARY objectそれぞれによるLAG関数機能の定義 2020 初⼼者からのSAS Viya 2021 %if-%then-%doのオープンコードでの利⽤と9.4以降のSASマクロ拡張点について 2021 proc spellによるスペルチェック 205
0. 内容 臨床試験分野において ① SAS中⼼の実務者 が、 RやPythonなどの新しい ② プログラム⾔語を学ぶ際の障壁 を、 ③ Base SASが提供する多様な機能 を積極的に活⽤することで軽減する可能性を探った。 ① 臨床試験分野では、SASに熟達することが求められる。 SASを⽤いる時間が圧倒的に⻑いので、他⾔語を習得する機会が減る。 ② SASのデータハンドリングは、RやPythonのそれと発想が⼤きく異なる。 ③ SASのどの分野を習得するのが他⾔語への橋渡しとして効果的か︖ 1. SASによるデータハンドリングの特徴 206
1.1 SASの特徴 1. 単純な構造のデータセット(2次元の表) 2. 豊富な組み込み関数 3. ソートによるデータのグループ化 4. "横の処理" に特化したデータステップ これら全てが、他の⾔語との障壁になる。 1.2 データ構造は2次元の表形式 データセット ベクトル、データフレーム、リスト、... http://venus.ifca.unican.es/Rintro/dataStruct.html 207
1.3 組み込み関数が豊富(700種類) ABS, ADDR, ADDRLONG, AIRY, ALLCOMB, ALLPERM, ANYALNUM, ANYALPHA, ANYCNTRL, ANYDIGIT, ANYFIRST, ANYGRAPH, ANYLOWER, ANYNAME, ANYPRINT, ANYPUNCT, ANYSPACE, ANYUPPER, ANYXDIGIT, ARCOS, ARCOSH, ARSIN, ARSINH, ARTANH, ATAN, ATAN2, ATTRC, ATTRN, BAND, BETA, BETAINV, BLACKCLPRC, BLACKPTPRC, BLKSHCLPRC, BLKSHPTPRC, BLSHIFT, BNOT, BOR, BRSHIFT, BXOR, BYTE, CALL ALLCOMB, CALL ALLCOMBI, CALL ALLPERM, CALL CATS, CALL CATT, CALL CATX, CALL COMPCOST, CALL EXECUTE, CALL GRAYCODE, CALL IS8601_CONVERT, CALL LABEL, CALL LEXCOMB, CALL LEXCOMBI, CALL LEXPERK, CALL LEXPERM, CALL LOGISTIC, CALL MISSING, CALL MODULE, CALL POKE, CALL POKELONG, CALL PRXCHANGE, CALL PRXDEBUG, CALL PRXFREE, CALL PRXNEXT, CALL PRXPOSN, CALL PRXSUBSTR, CALL RANBIN, CALL RANCAU, CALL RANCOMB, CALL RANEXP, CALL RANGAM, CALL RANNOR, CALL RANPERK, CALL RANPERM, CALL RANPOI, CALL RANTBL, CALL RANTRI, CALL RANUNI, CALL SCAN, CALL SET, CALL SLEEP, CALL SOFTMAX, CALL SORT, CALL SORTC, CALL SORTN, CALL STDIZE, CALL STREAM, CALL STREAMINIT, CALL STREAMREWIND, CALL SYMPUT, CALL SYMPUTX, CALL SYSTEM, CALL TANH, CALL TSO, CALL VNAME, CALL VNEXT, CALL WTO, CAT, CATQ, CATS, CATT, CATX, CDF, CDF Bernoulli Distribution, CDF Beta Distribution, CDF Binomial Distribution, CDF Cauchy Distribution, CDF Chi Square Distribution, CDF Conway-Maxwell-Poisson Distribution, CDF Exponential Distribution, CDF F Distribution, CDF Gamma Distribution, CDF Generalized Poisson Distribution, CDF Geometric Distribution, CDF Hypergeometric Distribution, CDF Laplace Distribution, CDF Logistic Distribution, CDF Lognormal Distribution, CDF Negative Binomial Distribution, CDF Normal Distribution, CDF Normal Mixture Distribution, CDF Pareto Distribution, CDF Poisson Distribution, CDF T Distribution, CDF Tweedie Distribution, CDF Uniform Distribution, CDF Wald Distribution, CDF Weibull Distribution, CEIL, CEILZ, CEXIST, CHAR, CHOOSEC, CHOOSEN, CINV, CLOSE, CMISS, CNONCT, COALESCE, COALESCEC, COLLATE, COMB, COMPARE, COMPBL, COMPFUZZ, COMPGED, COMPLEV, COMPOUND, COMPRESS, COMPSRV_OVAL, COMPSRV_UNQUOTE2, CONSTANT, CONVX, CONVXP, COS, COSH, COT, COUNT, COUNTC, COUNTW, CSC, CSS, CUMIPMT, CUMPRINC, CUROBS, CV, DACCDB, DACCDBSL, DACCSL, DACCSYD, DACCTAB, DAIRY, DATDIF, DATE, DATEJUL, DATEPART, DATETIME, DAY, DCLOSE, DCREATE, DEPDB, DEPDBSL, DEPSL, DEPSYD, DEPTAB, DEQUOTE, DEVIANCE, DHMS, DIF, DIGAMMA, DIM, DINFO, DIVIDE, DLGCDIR, DNUM, DOPEN, DOPTNAME, DOPTNUM, DOSUBL, DREAD, DROPNOTE, DSNAME, DSNCATLGD, DUR, DURP, EFFRATE, ENVLEN, ERF, ERFC, EUCLID, EXIST, EXP, FACT, FAPPEND, FCLOSE, FCOL, FCOPY, FDELETE, FETCH, FETCHOBS, FEXIST, FGET, FILEEXIST, FILENAME, FILEREF, FINANCE, FINANCE ACCRINT, FINANCE ACCRINTM, FINANCE AMORDEGRC, FINANCE AMORLINC, FINANCE COUPDAYBS, FINANCE COUPDAYS, FINANCE COUPDAYSNC, FINANCE COUPNCD, FINANCE COUPNUM, FINANCE COUPPCD, FINANCE CUMIPMT, FINANCE CUMPRINC, FINANCE DB, FINANCE DDB, FINANCE DISC, FINANCE DOLLARDE, FINANCE DOLLARFR, FINANCE DURATION, FINANCE EFFECT, FINANCE FV, FINANCE FVSCHEDULE, FINANCE INTRATE, FINANCE IPMT, FINANCE IRR, FINANCE ISPMT, FINANCE MDURATION, FINANCE MIRR, FINANCE NOMINAL, FINANCE NPER, FINANCE NPV, FINANCE ODDFPRICE, FINANCE ODDFYIELD, FINANCE ODDLPRICE, FINANCE ODDLYIELD, FINANCE PMT, FINANCE PPMT, FINANCE PRICE, FINANCE PRICEDISC, FINANCE PRICEMAT, FINANCE PV, FINANCE RATE, FINANCE RECEIVED, FINANCE SLN, FINANCE SYD, FINANCE TBILLEQ, FINANCE TBILLPRICE, FINANCE TBILLYIELD, FINANCE VDB, FINANCE XIRR, FINANCE XNPV, FINANCE YIELD, FINANCE YIELDDISC, FINANCE YIELDMAT, FIND, FINDC, FINDW, FINFO, FINV, FIPNAME, FIPNAMEL, FIPSTATE, FIRST, FLOOR, FLOORZ, FMTINFO, FNONCT, FNOTE, FOPEN, FOPTNAME, FOPTNUM, FPOINT, FPOS, FPUT, FREAD, FREWIND, FRLEN, FSEP, FUZZ, FWRITE, GAMINV, GAMMA, GARKHCLPRC, GARKHPTPRC, GCD, GEODIST, GEOMEAN, GEOMEANZ, GETVARC, GETVARN, GIT_BRANCH_CHKOUT, GIT_BRANCH_DELETE, GIT_BRANCH_MERGE, GIT_BRANCH_NEW, GIT_CLONE, GIT_COMMIT_FREE, GIT_COMMIT, GIT_COMMIT_GET, GIT_COMMIT_LOG, GIT_DELETE_REPO, GIT_DIFF_FILE_IDX, GIT_DIFF_FREE, GIT_DIFF, GIT_DIFF_GET, GIT_DIFF_TO_FILE, GIT_FETCH, GIT_INDEX_ADD, GIT_INDEX_REMOVE, GIT_INIT_REPO, GIT_PULL, GIT_PUSH, GIT_REBASE, GIT_REBASE_OP, GIT_RESET_FILE, GIT_RESET, GIT_SET_URL, GIT_STASH_APPLY, GIT_STASH_DROP, GIT_STASH, GIT_STASH_POP, GIT_STATUS_FREE, GIT_STATUS, GIT_STATUS_GET, GIT_VERSION, GITFN_CLONE, GITFN_CO_BRANCH, GITFN_COMMIT_GET, GITFN_COMMITFREE, GITFN_COMMIT_LOG, GITFN_COMMIT, GITFN_DEL_BRANCH, GITFN_DEL_REPO, GITFN_DIFF_FREE, GITFN_DIFF_GET, GITFN_DIFF_IDX_F, GITFN_DIFF, GITFN_IDX_ADD, GITFN_IDX_REMOVE, GITFN_MRG_BRANCH, GITFN_NEW_BRANCH, GITFN_PULL, GITFN_PUSH, GITFN_RESET_FILE, GITFN_RESET, GITFN_STATUS, GITFN_STATUS_GET, GITFN_STATUSFREE, GITFN_VERSION, GRAYCODE, HARMEAN, HARMEANZ, HASHING, HASHING_FILE, HASHING_HMAC, HASHING_HMAC_FILE, HASHING_HMAC_INIT, HASHING_INIT, HASHING_PART, HASHING_TERM, HBOUND, HMS, HOLIDAY, HOLIDAYCK, HOLIDAYCOUNT, HOLIDAYNAME, HOLIDAYNX, HOLIDAYNY, HOLIDAYTEST, HOUR, HTMLDECODE, HTMLENCODE, IBESSEL, IFC, IFN, INDEX, INDEXC, INDEXW, INPUT, INPUTC, INPUTN, INT, INTCINDEX, INTCK, INTCYCLE, INTFIT, INTFMT, INTGET, INTINDEX, INTNX, INTRR, INTSEAS, INTSHIFT, INTTEST, INTZ, IORCMSG, IPMT, IQR, IRR, JBESSEL, JSONPP, JULDATE, JULDATE7, KURTOSIS, LAG, LARGEST, LBOUND, LCM, LCOMB, LEFT, LENGTH, LENGTHC, LENGTHM, LENGTHN, LEXCOMB, LEXCOMBI, LEXPERK, LEXPERM, LFACT, LGAMMA, LIBNAME, LIBREF, LOG, LOG10, LOG1PX, LOG2, LOGBETA, LOGCDF, LOGISTIC, LOGPDF, LOGSDF, LOWCASE, LPERM, LPNORM, MAD, MARGRCLPRC, MARGRPTPRC, MAX, MD5, MDY, MEAN, MEDIAN, MIN, MINUTE, MISSING, MOD, MODEXIST, MODULE, MODULEC, MODULEN, MODZ, MONTH, MOPEN, MORT, MSPLINT, MVALID, N, NETPV, NLITERAL, NMISS, NOMRATE, NORMAL, NOTALNUM, NOTALPHA, NOTCNTRL, NOTDIGIT, NOTE, NOTFIRST, NOTGRAPH, NOTLOWER, NOTNAME, NOTPRINT, NOTPUNCT, NOTSPACE, NOTUPPER, NOTXDIGIT, NPV, NVALID, NWKDOM, OPEN, ORDINAL, PATHNAME, PCTL, PDF, PEEK, PEEKC, PEEKCLONG, PEEKLONG, PERM, PMT, POINT, POISSON, PPMT, PROBBETA, PROBBNML, PROBBNRM, PROBCHI, PROBF, PROBGAM, PROBHYPR, PROBIT, PROBMC, PROBMED, PROBNEGB, PROBNORM, PROBT, PROPCASE, PRXCHANGE, PRXMATCH, PRXPAREN, PRXPARSE, PRXPOSN, PTRLONGADD, PUT, PUTC, PUTN, PVP, QTR, QUANTILE, QUOTE, RANBIN, RANCAU, RAND, RANEXP, RANGAM, RANGE, RANK, RANNOR, RANPOI, RANTBL, RANTRI, RANUNI, RENAME, REPEAT, RESOLVE, REVERSE, REWIND, RIGHT, RMS, ROUND, ROUNDE, ROUNDZ, SAVING, SAVINGS, SCAN, SDF, SEC, SECOND, SHA256, SHA256HEX, SHA256HMACHEX, SIGN, SIN, SINH, SKEWNESS, SLEEP, SMALLEST, SOAPWEB, SOAPWEBMETA, SOAPWIPSERVICE, SOAPWIPSRS, SOAPWS, SOAPWSMETA, SORT, SOUNDEX, SPEDIS, SQRT, SQUANTILE, STD, STDERR, STFIPS, STNAME, STNAMEL, STRIP, SUBPAD, SUBSTR (left of =), SUBSTR (right of =), SUBSTRN, SUM, SUMABS, SYMEXIST, SYMGET, SYMGLOBL, SYMLOCAL, SYSEXIST, SYSGET, SYSMSG, SYSPARM, SYSPROCESSID, SYSPROCESSNAME, SYSPROD, SYSRC, SYSTEM, TAN, TANH, TIME, TIMEPART, TIMEVALUE, TINV, TNONCT, TODAY, TRANSLATE, TRANSTRN, TRANWRD, TRIGAMMA, TRIM, TRIMN, TRUNC, TSO, TYPEOF, TZONEID, TZONENAME, TZONEOFF, TZONES2U, TZONEU2S, UNIFORM, UPCASE, URLDECODE, URLENCODE, USS, UUIDGEN, VAR, VARFMT, VARINFMT, VARLABEL, VARLEN, VARNAME, VARNUM, VARRAY, VARRAYX, VARTYPE, VERIFY, VFORMAT, VFORMATD, VFORMATDX, VFORMATN, VFORMATNX, VFORMATW, VFORMATWX, VFORMATX, VINARRAY, VINARRAYX, VINFORMAT, VINFORMATD, VINFORMATDX, VINFORMATN, VINFORMATNX, VINFORMATW, VINFORMATWX, VINFORMATX, VLABEL, VLABELX, VLENGTH, VLENGTHX, VNAME, VNAMEX, VTYPE, VTYPEX, VVALUE, VVALUEX, WEEK, WEEKDAY, WHICHC, WHICHN, WTO, YEAR, YIELDP, YRDIF, YYQ, ZIPCITY, ZIPCITYDISTANCE, ZIPFIPS, ZIPNAME, ZIPNAMEL, ZIPSTATE ただし、データステップの設計上、 関数を多⽤しなくても作業できる。 https://documentation.sas.com/doc/en/pgmsascdc/9.4_3.5/lefunctionsref/n01f5qrjoh9h4hn1olbdpb5pr2td.htm https://docs.python.org/ja/3.9/library/functions.html 1.4 データセットをキー変数でソートしてグループ化 "GROUP BY" と "ORDER BY" を区別しない。 ソートしないとBYステートメントでグループごとに処理ができない。 システムの処理速度をSORTプロシジャに⼀任したともいえる。 ソート グループ化 USUBJID PARAMN データ 001 1 ● 001 2 ● 001 3 ● 002 1 ● 002 2 ● 002 2 ● PARAMN USUBJID ■ ■ ■ 1 2 3 001 ● ● ● 002 ● ●● ● データ 208
1.4 SASの誕生(1966)を促した(?)ソートアルゴリズムの発展
おまけ︓
データステップのみを⽤いたソート(実⽤不可能)
data ds;
do i = 1 to 1000;
x = rannor(1234);
output;
end;
drop i;
run;
data tmp1 tmp2;
set ds end = eof;
retain a;
if x >= a then d1 = 1;
else
d1 = ‐1;
a = x;
if dif(d1) ^= 0 then d2 = 1;
s + d2;
if
d1 = 1 then output tmp1;
else if d1 = ‐1 then output tmp2;
if eof then call symputx('s', s);
drop a;
run;
Kadam and Kadam (2014)
data tmp3;
set tmp1 end = eof;
output;
if eof then do p = nof to 1 by ‐1;
set tmp2 nobs = nof point = p;
output;
end;
drop d1 d2;
run;
data _null_;
call execute('data out; set');
do i = 1 to &s.;
call execute('tmp3(where = (s = ' || cats(i) || '))');
end;
call execute('; by x; drop s; run;');
run;
http://www.computerscijournal.org/vol7no1/root-to-fruit-1-an-evolutionary-study-of-sorting-problem/
1.5 同一オブザベーション内の"横の処理"が容易
■
データステップの内側に処理を書けるので、関数を定義しなくてもよい。
data ds;
input a;
cards;
1
0
1
;
run;
data ds;
set ds;
if
a = 0 then b = 'N';
else if a = 1 then b = 'Y';
run;
df <‐ data.frame(a = c(1, 0, 1))
import pandas as pd
f <‐ function(x) {
if (x == 0) {
return("N")
}
else if (x == 1) {
return("Y")
}
}
df = pd.DataFrame({"a": [1, 0, 1]})
def f(x):
if x == 0:
return("N")
elif x == 1:
return("Y")
df["b"] = df["a"].apply(f)
df$b <‐ apply(df["a"], 1, f)
209
1.5 補足:APPLY関数・APPLYメソッドのSASマクロによる表現 /* 関数定義 */ options cmplib = _null_; proc fcmp outlib = work.myfunc.myfunc; function f(x) $1; if x = 0 then return('N'); else if x = 1 then return('Y'); endsub; run; options cmplib = myfunc; スカラー以外を引数に持つ関数(OPEN、CLOSE、EXIST、...)は SASではそれほど⽤いない。 /* 高階関数をマクロで表現 */ %macro apply(dat, var1, var2, func); data &dat.; set &dat.; &var1. = &func.(&var2.); run; %mend apply; %apply(ds, b, a, f); 2. SASの何を学ぶか 210
2.1 Base Programming Using SAS 9.4 データステップ SORTプロシジャ TRANSPOSEプロシジャ FREQプロシジャ MEANSプロシジャ UNIVARIATEプロシジャ FORMATプロシジャ ... → SASの特徴が表れた内容が多い。 程ほどに習得すればOK。 https://www.sas.com/ja_jp/certification/exam-content-guides/base-programming-specialist.html 2.2 SAS 9.4 Advanced Programming SQLプロシジャ マクロ⾔語 ハッシュオブジェクト FORMATプロシジャ FCMPプロシジャ 正規表現 ... → SAS以外にも応⽤できる⼀般的な知識が含まれる。 他⾔語が視野に⼊る。 https://www.sas.com/ja_jp/certification/exam-content-guides/advanced-programmer-sas94.html 211
2.3 SQLプロシジャ
■
■
■
■
多くのシステムがSQLをサポートしているので、応⽤範囲が広い。
SQLの概念⾃体が臨床試験のデータハンドリングの際に重要。
集計、データ結合、抽出、ソートなどが同時に⾏える。
残念ながらSQLプロシジャではウィンドウ関数が使えない。
proc sql;
create table out as
select age
, count(ifn(sex = '女子', 1, .)) as F
, count(ifn(sex = '男子', 1, .)) as M
from sashelp.class
group by age
;
年齢ごとに男⼥別で集計
quit;
proc sql;
create table out as
select name
, sex
, age
from sashelp.class as t0
where age >= (select avg(age)
from sashelp.class
where sex = t0.sex)
order by sex
, age
, name
; 年齢が男⼥別平均値以上の
quit;
⽣徒のみ抽出
proc sql;
create table out as
select median(age) as median
不具合?
from sashelp.class
where age <= 10
;
create table out as
select median(ifn(age <= 10, age, .)) as median
from sashelp.class
;
正しい結果
quit;
2.4 正規表現
■
■
■
どの⾔語でもほぼ共通のルールで⽂字列が操作できる。
⾔語に固有の関数を調べる⼿間が省ける。
正規表現を図⽰するツールがWeb上に多く存在する。
data out;
input x $;
y = prxchange('s/(¥()([¥d+‐]{1,2})(¥))/$2/', 1, x);
cards;
(+)
(+‐)
(2+)
;
run;
https://regexper.com/
212
data out;
length x $20;
input x;
re = prxparse('/(¥d{4})‐(¥d{2})‐(¥d{2})/');
if prxmatch(re, x) then do;
yyyy = prxposn(re, 1, x);
mm
= prxposn(re, 2, x);
dd
= prxposn(re, 3, x);
end;
drop re;
cards;
2021‐11‐19
;
run;
2.5 マクロ言語
■
■
■
(名称に"⾔語"とあるように)データステップよりもプログラム⾔語の雰囲気がある。
マクロ変数のスコープを正しく指定する必要がある(%localを指定するなど)。
LUAプロシジャなど代わりになり得る⽅法もある。
%macro m0();
%let i = 1;
%put _user_;
%mend m0;
%macro m1();
%do i = 1 %to 3;
%m0();
%end;
%mend m1;
M1 I 1
M1 I 1
M1 I 1
M1 I 1
M1 I 1
M1 I 1
M1 I 1
M1 I 1
M1 I 1
...
M1
I <- 1
I <- 1
I <- 1
I <- 1
I <- 1
...
M0
%let i = 1;
%macro m0();
%local i;
%let i = 1;
%put _user_;
%mend m0;
M0 I 1
M1 I 1
M0 I 1
M1 I 2
M0 I 1
M1 I 3
%macro m1();
%do i = 1 %to 3;
%m0();
%end;
%mend m1;
%m1();
注意︓無限ループ
%m1();
無限ループにならない。
2.6 ハッシュオブジェクト
■
■
■
SASでは珍しい辞書型のデータ構造。
ソート順を変えずにデータ結合ができる。
処理速度が速いので⼤規模なデータを扱うのに適している。
data out;
length name $20;
if 0 then call missing(age);
if _n_ = 1 then do;
dcl hash h(dataset: 'sashelp.class', duplicate: 'e');
h.definekey('name');
h.definedata('age');
h.definedone();
end;
input name;
h.find();
cards;
アルフレッド
バーバラ
ヘンリー
;
run;
213
M1
I <- 1
I <- 2
I <- 3
M0
%local i;
%let i = 1;
I <- 1
2.6 ハッシュオブジェクトの処理速度
ふたつのデータセット(1E5–3E8 obs.及び1E4 obs.)を横結合した。
ハッシュオブジェクト
〜O(n)
data dat1;
ソート&マージ
〜O(n*logn)
do x = 1 to 300000000;
SQL
〜O(n*logn)
s = rannor(1234);
output;
ハッシュパッケージ(DS2)
〜O(n)
end;
proc sort out = dat1(drop = s);
by s;
run;
data dat2;
do x = 1 to 10000;
y = rannor(5678);
output;
end;
proc sort;
by y;
run;
data out;
if 0 then call missing(y);
if _n_ = 1 then do;
dcl hash h(dataset: 'dat2', duplicate: 'e');
h.definekey('x');
h.definedata('y');
h.definedone();
end;
set dat1;
rc = h.find();
run;
proc sort data = dat1;
by x;
run;
proc sort data = dat2;
by x;
run;
data out;
merge dat1 dat2;
by x;
run;
proc sql;
create table out as
select dat1.x
, dat2.y
from dat1 left outer join dat2
on dat1.x = dat2.x
;
quit;
DS2プロシジャのハッシュパッケージは後述
2.7 DS2プロシジャ
■
■
(Fed)SQLをSETできるので、普通のデータステップではあり得ないコードが書ける。
SAS Viya では重要(︖)。
proc copy in = sashelp out = work;
select class;
run;
proc ds2;
data out / overwrite = yes;
dcl char(20) sex;
dcl double age count;
method run();
set {select sex
, age
, count(name) as count
from class
group by 1, 2}
;
by sex age;
sex = ifc(first.sex, sex, '');
end;
enddata;
run;
quit;
214
2.7 DS2プロシジャのパッケージ
■
■
ハッシュオブジェクトを記述しやすい(HASHパッケージ)。
⾏列の積や逆⾏列を計算できるが、複雑な演算はできない(MATRIXパッケージ)。
proc ds2;
data out / overwrite = yes;
dcl double x y;
dcl package hash h();
method init();
h.duplicate('error');
h.dataset('dat2');
h.keys([x]);
h.data([y]);
h.definedone();
end;
method run();
set dat1;
h.find();
end;
enddata;
run;
quit;
proc ds2;
data _null_;
dcl package matrix m1 m2 m3;
dcl double l1[2, 2] l2[2, 2] l3[2, 2] i;
method init();
l1 := (1 2 3 4);
l2 := (5 6 7 8);
m1 = _new_ matrix(l1, 2, 2);
m2 = _new_ matrix(l2, 2, 2);
m3 = m1.mult(m2);
m3.toarray(l3);
do i = 1 to 2;
put l3[i, 1] l3[i, 2];
end;
end;
1 2 5 6
19
enddata;
ൌ
3 4 7 8
43
run;
quit;
22
50
2.8 SASの中の別言語
LUAプロシジャ
■
■
■
sas.submit[[...]] でSASコードを実⾏できる。
@変数名@ でLUAの変数を展開する。
マクロ⾔語の代わりに⽤いる例が多い。
proc lua;
submit;
local ds = "sashelp.class"
sas.submit[[
data out;
set @ds@;
run;
]]
endsubmit;
quit;
GROOVYプロシジャ
■
■
■
%let prg = D:/Users/XXXXXX/prg.sas;
$変数名 でGROOVYの変数を展開する。
groovy;
args[*]でSUBMITステートメントに記述した⽂字列を取得する。 procsubmit
"&prg.";
def ds = 'sashelp.class'
SASコードのメタプログラミングにも活⽤できる(らしい)。
def filename = args[0]
File file = new File(filename)
file.write ''
def str = """¥
data out;¥r
set $ds;¥r
run;¥r
"""
file << str
println file.text
endsubmit;
quit;
%inc "&prg.";
215
2.9 SASの何を学ぶか—総論— 良いプログラミング技術の条件 1. 便利であること。 2. 記述しやすく可読性が⾼いこと。 3. 他の⾔語との共通点が多いこと。 4. 資料が多いこと。 おまけ. 一方で...壁の向こう側から見たSAS 他⾔語経験者がSASを習得するときのギャップも課題 弊社(EPS)他⾔語経験者から演者へ寄せられたクレーム ■ ■ ■ ■ 拡張エディタに⼊⼒補助が欲しい。 PDVのリテインが意味不明。 MERGEが難しい。 可変⻑⽂字型が欲しい。 ■ 多くの分野 ■ 多くの⼤学 ■ 臨床試験などの分野 ■ SASを導⼊している企業 https://www.irasutoya.com/2020/08/blog-post_876.html 216
!7 A 8! 217
SASプラットフォームにおけるOSS活⽤ SAS Institute Japan 株式会社 アカデミア推進室 ⽵村 尚⼤ Cop y r i g ht © SAS I n st i t u te I n c . Al l r i g ht s res er ved . Java BASIC Lua C C++ javascript C# PHP Code Agnostic Matlab Perl Lisp 不可知論 R Octave SAS Python DS2 SAS/IML Cop y r i g ht © SAS I n st i t u te I n c . Al l r i g ht s res er ved . 218 vi (vim) emacs
DX実現に必要不可⽋な3つの要素 デジタル トランスフォーメーション = Technology x Process x People プロセス テクノロジー ⼈ 組織においてDXを成功に導くためには、 3つの要素をバラバラに⾼めるのではなく、 相互連動した⼀貫性のある取組みとして推進することが重要 Cop y r i g ht © SAS I n st i t u te I n c . Al l r i g ht s res er ved . 製造業のDXを成功に導くアナリティクス・アプローチと求められる要件 DXビジョン 役割 (達成するべきこと) 既存製品・サービスの ⾼付加価値化 新規製品・サービスの創出 現場業務プロセスの改善 事業部 & DX PMO 現場エンジニア 品質向上・コスト削減などの 具体のビジネス価値の創出 〜100名 ナレッジのアセット化 アナリティクス COE 現場の教育・指導による DXの加速 求められる要件 Technology x 現場のDX活動の⽀援 • 顧客/市場分析と提案価値の仮説と検証 • バリューチェーン横断の業務プロセスの改⾰ • 顧客やビジネスパートナーを巻込むビジネス 構造の変⾰・ビジネス価値の発⾒ • DXプログラムマネジメント 製造現場業務プロセスの改善 • 特定の業務課題の解決 • モデル(製造ライン・特定事象に特化した推 計・判別)の開発 • アセットを活⽤した業務プロセス改善 ノウハウ共有と⼈材活⽤ 10名程度 新規領域の開拓⽀援 • データ分析による業務課題解決の⽀援 • ⾃社独⾃のアルゴリズムの開発とアセット化 現場のDX教育・指導・標準化⽀援 • DS業務の標準化・アセット活⽤定着化⽀援 • モデル開発における現場へのアドバイス Copyright © SAS Institute Inc. All rights reserved. 219 Process x People DXビジョンと経営戦略/事業戦略のアライン “役割”/スキルセットの定義と体制構築 分析プロセスの標準化とコラボレーション 共通アセットやナレッジの共有と展開 “役割”やスキルセットに応じたインタフェース ⽬的に応じた環境管理と迅速な対応 (クラウドテクノロジーへの追随)
分析プロセスの標準化とコラボレーションの⽅針 経営層 事業部(⼯場) 現場エンジニア 経営戦略・事業戦略に基づいた DX戦略の策定と、必要なリソース ⼿配・取組みの優先付けを⾏う。 アナリティクス・DXプロセスを回し続 けるための各部⾨のリソース調整と 取組みナレッジの集約を⾏う。 先⾏するDX取組みを他事業部へ ⽔平展開し、全社の取組みの底 上げ・推進を⾏う。 リソース調達・ 最適化⽀援 DX PMO 製造現場の課題特定と解決・改善を主導する。⽤意されたアセットを徹底活⽤し、⾃律的に ⾼速に仮説検証を繰り返し、分析結果(モデル)を使った業務プロセス改善を⾏う。 発⾒ ビジネス 価値創出 デプロイ アセット活⽤⽀援 アナリティクスCOE モデル実装⽀援 “現場エンジニア”がアナリティクス・ライフサイクルを⾼速に回し続けるための、共 通的なアセット開発(独⾃課題・新しい課題への対応)とその活⽤指導を⾏う。 エンジニアリング部⾨ モデルの実装に際し、必要な設備改修 やシステム改修等の⽅策を検討し、具 システム部⾨ 体的な業務プロセス改善の⽀援を⾏う。 Copyright © SAS Institute Inc. All rights reserved. 求められるIoTプラットフォームの構成イメージ: 標準化Hub 本社・本部組織 U/I Data Scientist 現場Engineer ビジネス ユーザー Point & Click Programing Point & Click Point & Click 【標準化Hub】共通アセット管理とガバナンス アナリティクス・ライフサイクル (分析プロセスの標準化) プロジェクト管理 On Premise Cloud Container Copyright © SAS Institute Inc. All rights reserved. 220 APIs ⽣産/調達計画・ 需要予測 設備最適制御・ スケジューリング マルチプラットフォーム対応 インフラ モニタリング デプロイメント 探索/分析プロセス管理 設備稼働監視・ 異常検知 AI/機械学習・時系列 モデリング モデルリポジトリ データ探索 拡張アナリティクス コードリポジトリ データ加⼯ Data Access データリポジトリ External Data 品質レポート KPI管理 役割/スキルに応じたユーザーインターフェース Big Data RDB Decision (アウトプット例) データソース Stream Data Time Series ⼯場・現場 CXO/Manager
データサイエンティスト/エンジニアのための単⼀ユーザー・インターフェース ビジュアル・パイプライン上でOSSや他ツールとを連携する統合インターフェース PIシステム、csv、データベースの データをダイレクトにアクセス EGにあらかじめ⽤意された 統計処理をGUIで実施 スケジュールで作成したプロセス フローを容易に実装 GUIによるデータ加⼯処理の 作成と、不⾜する場合には、 OSSコードの利⽤が可能 JMPやその他のインター フェースにシームレスに連携 EG上でViyaの機械学習ア ルゴリズムを使⽤したモデリ ングを実施 Copyright © SAS Institute Inc. All rights reserved. 分析アセットの管理 OSSコード部品、分析フローの管理 コード部品の管理 分析フローの管理 分析部品・フロー の属性情報 ・アセットの説明 ・タグ情報 ・アセットの詳細 ・共有の設定..etc Copyright © SAS Institute Inc. All rights reserved. 221 コメント履歴 ・分析アセット対す る質問とコメント ・過去の履歴の確 認
SAS empowers open source towards DX Languages 1. Choice of languages by using SAS or open source language 2. Democratize Analytics with powerful visual interfaces 3. Improve team productivity by automating the analytics life cycle Libraries 4. Explainability of Decisions with responsible AI 5. Reduce Risk with end‐to‐end governance 6. Operationalize Analytics with one‐click model deployment Technologies 7. Ubiquitous Data Access with out‐of‐the‐box connectors 8. Accelerate Analytics with high‐performance architecture 9. Proven Services to accelerate your time to market Cop y r i g ht © SAS I n st i t u te I n c . Al l r i g ht s res er ved . Key Takeaways 1. 「SASプラットフォーム」でOSSを組織的に活⽤する 2. DX = Technology × Process × People 3. ⼈材 (=スキル) 活⽤のためにプロセスを標準化しながらOSSを利⽤ Cop y r i g ht © SAS I n st i t u te I n c . Al l r i g ht s res er ved . 222
sas.com Cop y r i g ht © SAS I n st i t u te I n c . Al l r i g ht s res er ved . 223
特別セッション 224
㻞㻜㻞㻝ᖺ㻝㻝᭶㻝㻥᪥ 㻿㻭㻿䝴䞊䝄⥲㻞㻜㻞㻝䠜㼃㻱㻮 ᨾ䞉ᶫ㟹㞝Ặ 䛸 SAS 䛾ฟ䛔 㧗ᶫ ⾜㞝 BioStat ◊✲ᡤ䠄ᰴ䠅 2021ᖺ11᭶19᪥ 㧗ᶫ⾜㞝 Ặ䛾SAS䝴䞊䝄䞊䛸䛾ฟ䛔 SAS䝴䞊䝄䞊ㄽᩥ㞟䜢⣣ゎ䛔䛶䜏䜘䛖 ➨䠍ᅇ┠䛿䠈1982ᖺ䛷䛒䜚䠈Ⓨ㉳ேྡ⡙䛻ᶫẶ 䛾ྡ๓䛿ぢᙜ䛯䜙䛺䛔䠊 z SAS䛾௦⌮ᗑ䛿䠈᪥ၟ䜶䝺䜽䝖䝙䜽䝇䛷䛒䛳䛯䠊 ⩣ᖺ1983ᖺ䛾SAS䝴䞊䝄䞊ㄽᩥ㞟䛻 ⤫ィ䝥䝻䜾䝷䝮䞉䝟䝑䜿䞊䝆䛾⌧ἣ 䡚 SAS 䛸 BMDP 䜢୰ᚰ䛻䛧䛶䡚 ᮾிᏛᕤᏛ㒊 ᶫ 㟹㞝 䛜ぢ䛔䛰䛥䜜䜛䠊⣣ゎ䛔䛶䜏䜘䛖䠊 2021ᖺ11᭶19᪥ 㧗ᶫ⾜㞝 225
Ặ䛿䠈SAS䜢䛔䛴ὀ┠䛧䛯䛾䛛 ᶫẶ䛾ㄽᩥ䛛䜙䠈ᮾᆺィ⟬ᶵ䝉䞁䝍䞊䛻 SAS䛜ᑟධ䛥䜜䛯䛾䛿䠈1982ᖺ4᭶䛷䛒䜛䛣䛸䛜 ศ䛛䜛䠊 ᶫẶ䛾༴䛿䠈ᶫẶ䛜ឡ⏝䛧䛶䛔䛯BMDP 䛾ᆺィ⟬ᶵ䝉䞁䝍䞊䛻䛚䛡䜛⏝≧ἣ䛜䠈 SPSS䛾1/10 ⛬ᗘ䛧䛛䛺䛔䛣䛸䛷䛒䛳䛯䠊 ᾏእ䛾◊✲タ䛷䠈BMDP䛿1,500タ௨ୖ䠈 SAS䛿3,000タ௨ୖ䛷䛒䜛䛜䠈SPSS䛜䝯䝆䝱 䞊䛺᪥ᮏ䛷SAS䛿ᬑཬ䛧䛺䛔䛾䛷䛿䛺䛔䛛䛸䛾 ༴ᶵឤ䜢ᣢ䛳䛯䠊 2021ᖺ11᭶19᪥ 㧗ᶫ⾜㞝 ᶫẶ䛾⤫ィ䝟䝑䜿䞊䝆◊✲ SPSS䛾ሙྜ䛾䜘䛖䛻㐺ษ䛺ᑐᛂᥐ⨨䛜䛸䜙䜜䛺 䛔䛸䠈䛣䜜䜙ඃ䜜䛯⤫ィ䝟䝑䜿䞊䝆䛿䛒䜎䜚⏝䛥 䜜䛺䛔䛛䠈䛒䜛䛔䛿ㄗ⏝䛥䜜䜛༴㝤䜒ከศ䛻䛒䜛 䛸⪃䛘䜙䜜䜛䠊 z ὀ䠖㐺ษ䛺ᑐᛂᥐ⨨䛸䛿䠈㐺ษ䛺ධ㛛᭩䛜」ᩘ䛒䜛䛣䛸䠊 z ᙜ䠈㧗ᶫ䜒ᆺィ⟬ᶵ䝉䞁䝍䞊䛾SPSS䛾䝴䞊䝄䛷䛒䛳䛯䠊 䛣䜜䜎䛷㏙䜉䛶䛝䛯⤫ィ䝟䝑䜿䞊䝆䛚䜘䜃ᮾ ᆺィ⟬ᶵ䝉䞁䝍䞊䛾⌧≧䜢㋃䜎䛘䠈ᶫẶ䜙䛿䛂 ⤫ィ䝥䝻䜾䝷䝮䞉䝟䝑䜿 䞊 䝆◊✲䛃䜢タ❧䛧䠈ᮏ ᖺ1983ᖺ2᭶䛛䜙䛭䛾άື䜢㛤ጞ䛧䛯䠊 2021ᖺ11᭶19᪥ 㧗ᶫ⾜㞝 226
Ꮫ䞉⏕≀⤫ィᏛᩍᐊ ᖺሗ ᶫẶ䛜ᮾிᏛ䜢2014ᖺ3᭶䛻㏥ᐁ䛩䜛㝿䛾 ᕳ㢌ゝ䛻䛂⤫ィ䝟䝑䜿䞊䝆◊✲䛃 㛤ദ䛾⤒⦋䛜 ♧䛥䜜䛶䛔䜛䠊 http://www.epistat.m.u-tokyo.ac.jp/admin/wpcontent/uploads/2014/08/ee3a59c1a13e9eee7016d80532cbeb26.pdf ᶫẶ䛜ᮾிᏛ䛾ィᩘᕤᏛ⛉䛾4ᖺ⏕䠄1975 ᖺ䠅䛾䛻䠈ዟ㔝ඛ⏕䛜╔௵䛥䜜䠈᭱ึ䛾ಟኈ䛸 䛧䠈ከኚ㔞ゎᯒ䜢ᑓᨷ䛧䠈ရ㉁⟶⌮䛾䝁䞁䝃䝹䝔䜱 䞁䜾䛻䜒ዟ㔝ඛ⏕䛸ᦠ䜟䛳䛯䠊 ᶫẶ䛾⤫ィ䝋䝣䝖䜈䛾㛵ᚰ䛿䠈ዟ㔝ඛ⏕䛛䜙᳜ 䛘䛡䜙䜜䛯䛻㐪䛔䛺䛔䠊 2021ᖺ11᭶19᪥ 㧗ᶫ⾜㞝 ዟ㔝ඛ⏕䜢䛧䛶 ᪥ᮏ⛉Ꮫᢏ⾡㐃┕䛾䛂ከኚ㔞ゎᯒ䝉䝭䝘䞊䛃䛜䠈 ዟ㔝ඛ⏕䜢୰ᚰ䛻1970ᖺ5᭶䛻㛤ദ䛥䜜䠈䛭䛾ᚋ䠈 䝟䝑䜿䞊 ⤫ィ䝋䝣䝖MAP䠄ከኚ㔞ゎᯒ䝥䝻䜾䝷䝮䞉䝟 䝆䠅䛾ゎㄝ᭩䛿䠈1976ᖺ䛻䛂⥆ከኚ㔞ゎᯒἲ䛃䛸䛧 䛶ฟ∧䛥䜜䛯䠊 z 䛣䛾ᖺ䛾๓ᖺ1975ᖺ䛻ᶫẶ䛿䠈ዟ㔝◊✲ᐊ䛾ಟኈ 䛸䛺䛳䛯䛣䛸䛜䠈Ꮫ䞉⏕≀⤫ィᏛᩍᐊ䛾ᖺሗ䛾ᕳ㢌 ゝ䛻♧䛥䜜䛶䛔䜛䠊 z ⤫ィ䝋䝣䝖MAP䛿䠈㧗ᶫ䛾ົඛ䛷㉎ධ䛧䠈ά⏝䛧䛯 ⤒㦂䜒䛒䜚䠈ዟ㔝ඛ⏕䛾㛵㐃䛷䠈ᶫẶ䛸ᵝ䚻䛺䝏䝱䞁 䝛䝹䛷㛵ಀ䜢῝䜑䜛ษ䛳䛡䛸䛺䛳䛯䠊 2021ᖺ11᭶19᪥ 㧗ᶫ⾜㞝 227
⤫ィ䝟䝑䜿 䞊 䝆ど䜈䛾ᣮᡓ ᮾ䛷䛂⤫ィゎᯒ䝟䝑䜿䞊䝆◊✲䛃䜢ጞ䜑䠈ᙜᮾ䛷 䜒䛘䜛䜘䛖䛻䛺䛳䛯SAS䠄Statistical Analysis System䠅 䜢୰ᚰ䛸䛧䛶䠈䝟䝑䜿䞊䝆䜢ά⏝䛧䛶ᐇ㝿䛻⤫ィゎᯒ䜢䛹 䛾䜘䛖䛻⾜䛳䛶䛔䛟䛾䛛䛸䛔䛖䝜䜴䝝䜴䛾ඹ᭷䜢ᴗ䛾䠄 䛻〇⸆ᴗ⏺䛾䠅᪉䚻䛸ጞ䜑䜎䛧䛯䚹 z SAS䝴䞊䝄䞊䛾➨1䝽䞊䜻䞁䜾䞉䜾䝹䞊䝥䜢ව䛽䛶䛔䛯䠊 䛣䛾䛣䜝䛿䠈ே䛾స䛳䛯䝟䝑䜿䞊䝆䜢䛖䛺䛹䛿䠈⤫ィᐙ䛾 ྡᢡ䜜䛰䛸䛔䛖௦䛷䠈䛣䜣䛺άື䜢䜰䜹䝕䝭䜰䛿䛩䜛䜉䛝 䛷䛿䛺䛔䛸䛔䛖ពぢ䜒䛒䜚䜎䛧䛯䚹ບ䜎䛧䛶䛟䜜䛯䛾䛜᳃ཱྀ ඛ⏕䛷䛧䛯䚹 2021ᖺ11᭶19᪥ 㧗ᶫ⾜㞝 ᶫẶ䛿ఱ䜢┠ᣦ䛧䛶䛔䛯䛾䛛 ➉ෆ䜙䠄1989䠅䠈䛂⤫ィᏛ㎡䛃䛾䛂III ỗ⏝ⓗ᪉ἲ䠈 ➨21❶ ⤫ィ䝋䝣䝖䛃䛛䜙ᶫẶ䛾ၥ㢟ព㆑䜢ᇉ㛫 ぢ䜛䛣䛸䛜䛷䛝䜛䠊 z 䛂ᗎㄽ䠈⤫ィ䝋䝣䝖䜴䜵䜰䛾⌧ἣ䠈⤫ィ䝋䝣䝖䜴䜵䜰Ⓨᒎ 䛾Ṕྐ䛃䛻ᘬ䛝⥆䛝䛂➨21.4⠇ 䝕䞊䝍䝧䞊䝇䛸◊✲⏝䝕 䞊䝍⟶⌮䛃䛜ㄽ䛨䜙䜜䛶䛔䜛䠊 z 䛣䛾䛣䜝䛿䠈㧗ᶫ䛾ົඛ䛷䜒⮫ᗋヨ㦂䛾䝕䞊䝍⟶⌮ 䛾ほⅬ䛛䜙Fortran䛷స䛳䛯ゎᯒ䝅䝇䝔䝮䛛䜙SAS䜈 㠃⛣⾜䜢⤊䛘䛯ᮇ䛷䜒䛒䛳䛯䠊 2021ᖺ11᭶19᪥ 㧗ᶫ⾜㞝 228
Ặ䛾◊✲䜢ᨭ䛧䛯SAS/MATRIX ➨3ᅇ SAS䝴䞊䝄䞊ㄽᩥ㞟䠄1984䠅䛻ᶫẶ䛾 ◊✲䝔䞊䝬䛻㛵䛩䜛ㄽᩥ䛜ᥖ㍕䛥䜜䛶䛔䜛䠊 z ᶫẶ䛿䠈1979ᖺ䛻༤ኈㄢ⛬䜢୰㏥䛧䠈་Ꮫ㒊ᒓ 㝔䛾ຓᡭ䛸䛺䜚䠈1984ᖺ䛻䛿ㅮᖌ䛸䛺䛳䛶䛔䜛䠊 z 2ᖺᚋ䛻䛿䠈䜰䝯䝸䜹䛾䝜䞊䝇䜹䝻䝷䜲䝘䞉䝏䝱䝨䝹䝠䝹ᰯ⏕≀⤫ ィᏛ⛉䠈䝽䝅䞁䝖䞁Ꮫ⏕≀⤫ィᏛ⛉䛻␃Ꮫ䠊 ㄽᩥ䛾䝍䜲䝖䝹䛿䠈䛂ᅇᖐデ᩿䛾SAS MATRIX䛻 䜘䜛ᐇ⾜䛃䛷䛒䜛䠊 z SAS/MATRIX 䛿䠈䛭䛾ᚋ SAS/IML䛸䛧䛶䝸䝙䝳䞊䜰䝹 䛥䜜䛯䠊IML䠄Interactive Matrix Programming䠅ᑐヰ ᘧ䛻䜘䜛⾜ิィ⟬䛾䛯䜑䛾䝥䝻䜾䝷䝭䞁䜾ゝㄒ䠊 2021ᖺ11᭶19᪥ 㧗ᶫ⾜㞝 ᅇᖐデ᩿䛾SAS MATRIX䛻䜘䜛ᐇ⾜ 䜘䜚᭷ຠ䛺䝰䝕䝹䜢ᵓ⠏䛩䜛䛯䜑䛻䠈௬ᐃ䛧䛯ᅇᖐ䝰 䝕䝹䛸䝕䞊䝍䛾㛫䛻䛒䜛㞳䜢᳨ฟ䛧䜘䛖䛸䛩䜛䛾䛜 ᅇᖐデ᩿䛷䛒䜛䠊 ᅇᖐデ᩿䛾䛯䜑䛾ᡭἲ䛿ᩘከ䛟ᥦ䛥䜜䛶䛔䜛䛜䠈 ᶵ⬟䛾㇏ᐩ䛺SAS䛷䛥䛘䛭䛾䛶䜢ᥦ౪䛧䛶䛿䛚䜙 䛪䠈䝥䝻䜾䝷䝮䜢㛤Ⓨ䛩䜛䛣䛸䛜ᚲせ䛻䛺䛳䛶䛟䜛䠊 ᮏ✏䛷䛿 SAS MATRIX䛻䜘䜛䝥䝻䜾䝷䝮㛤Ⓨ䛜ᴟ䜑 䛶ຠ⋡ⓗ䛷䛒䜛䛣䛸䜢ᣦ䛧䠈➹⪅䠄ᶫẶ䠅䛜䝥䝻䜾 䝷䝮䜢⾜䛺䛳䛯ᗄ䛴䛛䛾ᅇᖐデ᩿ᡭἲ䜢⤂䛩䜛䠊 z ὀ䠅䛭䛾ᙜ䠈R䛜䛒䜜䜀䠈≧ἣ䛜௦䜟䛳䛶䛔䛯䛛䜒▱䜜 䛔䛺䛔䠊S䛿UNIXୖ䛷䛧䛛䝃䝫䞊䝖䛥䜜䛶䛔䛺䛛䛳䛯䠊 2021ᖺ11᭶19᪥ 㧗ᶫ⾜㞝 229
SAS MATRIX 䛾Ⅼ ➹⪅䠄ᶫẶ䠅䛿䠈䝕䞊䝍ゎᯒ䛾㐨ල䛸䛧䛶䝥䝻䜾䝷䝮 䞉䝟䝑䜿䞊䝆SAS䜢㢖⏝䛧䛶䛔䜛䠄⏝㢖ᗘ䛛䜙䛩䜜 䜀95%䛜SAS䠈 ṧ䜚䜢BMDP䛺䛹䠅䠊 MATRIX䛾㇏ᐩ䛺₇⟬ᶵ⬟䜢⏝䛩䜜䜀䠈Fortran 䜔PL/1䛷స㆕䛩䜛ሙྜ䛾1/5䡚1/50⛬ᗘ䛾㛫䛷䝥 䝻䜾䝷䝮㛤Ⓨ䛜ྍ⬟䛸䛺䜛䠊 䝕䞊䝍䛾᳨⣴䜔ᒙูኚ䛺䛹䛿䠈SAS䛾DATA䝇䝔䝑 䝥䛻䠈⤖ᯝ䛾స⾲䞉䜾䝷䝣䛿PRINT, PLOT, GPLOT 䛺䛹䛾䝥䝻䝅䝆䝱䞊䛻䜎䛛䛫䜜䜀䠈ฟຊᵝ䛻จ䜛ᚲ せ䜒䛺䛔䠊 2021ᖺ11᭶19᪥ 㧗ᶫ⾜㞝 ᶫẶ䛜సᡂ䛧䛯 㻹㻭㼀㻾㻵㼄 䛻 䜘 䜛 䝥 䝻䜾䝷䝮 2021ᖺ ᖺ11᭶19᪥ 㧗ᶫ⾜㞝 230
ᶫẶ䛜సᡂ䛧䛯 㻹㻭㼀㻾㻵㼄 䛾 䝥 䝻 䜾 䝷 䝮 䛻䜘䜛⤖ᯝ䛾ฟຊ䠊 ィ⟬㛫䛿䠈㻲㼛㼞㼠㼞㼍㼚䛸 ྠ⛬ᗘ䛷䠈ᮾᆺ䝉 䞁䝍䞊䛾ሙྜ䠈㻝㻜㻜㻜ᅇ 䛾䛷㻡㻡⛊䛷䛒䛳䛯䠊 2021ᖺ11᭶19᪥ 20 021ᖺ11 1᭶19 19᪥ 㧗 㧗ᶫ⾜㞝 ᶫ ⾜㞝 1980ᖺ௦䛾⤫ィ䝋䝣䝖㛵㐃䛾᭩⡠ Basic䛻䜘䜛⤫ィᡭἲู䝥䝻䜾䝷䝭䞁䜾䛜䝯䝆䝱䞊 2021ᖺ11᭶19᪥ 㧗ᶫ⾜㞝 231
䛔䛴䛛䜙SAS䝴䞊䝄䛻௦⾲䛻 1982ᖺ ௦⾲䠖㔝ᮧ䠄䝁䞁䝢䝳䞊䝍䠅 1983ᖺ " 1984ᖺ " ௦⾲䠖ᶫ㟹㞝 1985ᖺ " " 1986ᖺ " " ᨭ䠖 SAS䝋䝣䝖䜴䜶䜰䠄ᰴ䠅 1987ᖺ ௦⾲䠖㛛ᒣඔ䠈௦⾲䠖ᶫ㟹㞝 1988ᖺ ௦⾲䠖ᶫ㟹㞝䠈௦⾲䠖㧗ᶫ⾜㞝 2021ᖺ11᭶19᪥ 㧗ᶫ⾜㞝 1985ᖺㄽᩥ㞟䜘䜚 άⓎ䛺䝽䞊䜻䞁䜾άື 2021ᖺ11᭶19᪥ 20 2 02 21 1ᖺ1 11 1᭶1 19 9᪥ 㧗 㧗ᶫ⾜㞝 ᶫ ⾜㞝 232
2021ᖺ ᖺ11᭶19᪥ 㧗ᶫ⾜㞝 ⤫ィ䝟䝑䜿䞊䝆◊✲ 䝥䝻䜾䝷䝮䞉䝟䝑䜿䞊䝆◊✲㈨ᩱ1985ᖺ1᭶19᪥ z GLIM䛾⤂ ᮾ㝃ᒓ㝔୰ኸ་⒪ሗ㒊 ᶫ㟹㞝 z ῧ㈨ᩱ䛻䠈䛂GLIM䛾䝬䝙䝳䜰䝹䛃䛃 䛾ᢤ⢋䛜ῧ䛥䜜 䛶䛔䛯䠊GLIM䠖୍⯡⥺ᙧ䝰䝕䝹 SAS䛿䠈ึᮇ䛾䛣䜝᭱ඛ➃䛾⤫ィᡭἲ䛾ᥦ౪䛻 㞴Ⅼ䛜䛒䜚䠈ᶫẶ䛿SAS௨እ䛾᭱᪂䛾⤫ィ䝋 䝣䝖䛾ືྥ䛻䜒㛵ᚰ䜢ᣢ䛳䛶䛔䛯䠊 2021ᖺ11᭶19᪥ 㧗ᶫ⾜㞝 233
GLIM䠄୍⯡⥺ᙧᑐヰᘧ䝰䝕䝹䠅 GLIM䛿䠈㔜䜏䛝ᅇᖐ䛻䜘䜛᭱ᑬἲ䛻䜘䜚䠈 䝻䝆䝇䝔䜱䝑䜽ᅇᖐ䠈䝥䝻䝡䝑䝖ᅇᖐ䠈䝫䜰䝋䞁䞁ᅇ ᖐ䛺䛹䜢⤫୍ⓗ䛻ᢅ䛖⏬ᮇⓗ䛺䝋䝣䝖䛷䛒䜚䠈SAS 䛷䛿䠈䛣䛾ᙜ䛻䛿ᥦ౪䛥䜜䛶䛔䛺䛛䛳䛯䠊 SAS䛾GLM䝥䝻䝅䝆䝱䛿䠈᭱ᑠ2ἲ䛻䜘䜛⥺ᙧ 䝰䝕䝹䛷䛒䜚䠈䜋䛸䜣䛹䛶䛾ᐇ㦂䝰䝕䝹䛾ゎᯒ 䛜䛝䜑⣽䛛䛟䛷䛝䜛ඃ䜜䜒䛾䛷䛒䛳䛯䠊 SAS䛷䛿䠈䛛䛺䜚ᚋ䛻GENMOD䝥䝻䝅䝆䝱䝥䝻䝅 䛜ᥦ౪䛥䜜䛯䠊 䝆䝱䠄୍⯡⥺ᙧ䝰䝕䝹䠅䛜 z ᐉఏ䠖㧗ᶫ⾜㞝䠄2021䠅䠈᭱ᑬἲ䛻䜘䜛䝫䜰䝋䞁ᅇᖐධ㛛䠊 2021ᖺ11᭶19᪥ 㧗ᶫ⾜㞝 ᶫẶ䛾ᝎ䜏䞉Ⴣ䛝 1989ᖺ䠄➨8ᅇ䠅䠈ᶫẶ䛜SAS䝴䞊䝄䞊௦⾲ 䛻䛺䛳䛯⩣ᖺ䠈㏻⛠ BioS䠄་⸆䝕䞊䝍䛾⤫ィゎ ᯒᑓ㛛䝁䞊䝇䠅䛜㛤ദ䛥䜜䛯䠊 ௦ⓗ⫼ᬒ䠖ᪧ䞉GCP 䠄1990.10.1~1997.3.29䠅 ᪧ䞉⤫ィ䜺䜲䝗䝷䜲䞁䠄1992.3.4~998.11.30䠅 ᪧ䞉୍⯡ᣦ㔪 䠄1992.6.28~1998.4.21䠅 䛺䛹䛜Ⓨฟ䛥䜜䜛┤๓䛷䛒䛳䛯䠊 z ᖺ4ᅇ䛾SAS䛾་⸆㛵㐃䜾䝹䞊䝥䜒200ே䜢㉸䛘䜛 䜘䛖䛻䛺䜚䠈Ꮫ⩦ពḧ䜢ᣢ䛴ே䛯䛱䛷䛒䜅䜜䛶䛔䛯䠊 z ᶫẶ䛻⤫ィ┦ㄯ䜢ᣢ䛱㎸䜐〇⸆♫䛜ቑ䛘⥆䛡䛯䠊 z 㧗ᶫ䜒䠈㒊ୗ䛻ᑐ䛩䜛ᑓ㛛ᩍ⫱䛻㢌䜢ᝎ䜎䛫䛶䛔䛯䠊 2021ᖺ11᭶19᪥ 㧗ᶫ⾜㞝 234
1989ᖺ BioS䛾‽ഛ 2021ᖺ11᭶19᪥ 㧗ᶫ⾜㞝 2021ᖺ ᖺ11᭶19᪥ 㧗ᶫ⾜㞝 235
ᑓ㛛䝁䞊䝇䛻䛚䛡䜛 SAS 䛾ᐇ⩦ 2᪥㛫䛾ㅮ⩏䛾ᚋ䠈ㅮ⩏䛾୰䛛䜙₇⩦ၥ㢟 䜢సᡂ䛧䠈5ࠥ7䛻 PC-SAS 䜢⏝䛔䛯ᐇ ⩦䜢⾜䛳䛯䠊 䛔䜎䛿䛛䛧䛔OHP䛾ᢞᙳ㠃䛻ᾮᬗ䛾䝟 䝛䝹䜢⨨䛔䛶䝇䜽䝸䞊䞁䛻PC䛾⏬㠃䜢ᢞ ᙳ䛧䛯䠊 䜶䝥䝋䞁䠖䝷䝑䝥䝖䝑䝥䠄㔜㔞6.3Kg䠅䛸ゝ䛳䛶䜒ᣢ䛱㐠䜆䛻䛿䝏䝵䝑䝖㔜䛩 䛞䠊 2021ᖺ11᭶19᪥ 㧗ᶫ⾜㞝 http://takashima.pose.jp/computer/pc286l.html ィ⏬ࡢぢ┤ࡋ 䛣䛾ᚋ䠈BioSᑓ㛛䝁䞊䝇䛿㏵ษ䜜䜛䛣䛸䛺䛟32ᅇ┠䜢㏄䛘䜛䠊 BioS◊✲ᵓ䛿䠈❧䛱ᾘ䛘䛯䠊 䛣䜜䛿䠈ᑓ㛛䝁䞊䝇䜈䛾ཧຍᕼᮃ⪅䛜ẖᖺ㏵ษ䜜䛪䛻ከ䛛䛳䛯䛯䜑䠊 2021ᖺ ᖺ11᭶19᪥ 㧗ᶫ⾜㞝 236
㧗ᶫ䛾SAS䛸䛾㛵䜟䜚 ⮫ᗋ䝕䞊䝍䛾ゎᯒᴗົ䛾ຠ⋡䛾䛯䜑䛻IBM䛾 ୰ᆺᶵ䛻VM/CMSୖ䛻SAS䜢ᑟධ䛧䛯䛜䠈䝯䞁䝞 䞊䛾ホุ䛿䠈㐜䛟䛶䛔≀䛻䛺䜙䛺䛔䛰䛳䛯䠊 z 㧗ᶫ୍ே䛜GLM䝥 䝥䝻䝅䝆䝱䛻‶ᝋ䛧䛶䛔䛯䠊 SAS/TABULATE 䝥䝻䝅䝆䝱䛜䛘䜛䜘䛖䛻䛺䜚䠈 䛣䜜䜎䛷䠈⥅Ꮚᢅ䛔䛰䛳䛯ྛ✀䛾㞟ィ䛻⏬ᮇⓗ䛺 ᶵ⬟䜢ᣢ䛴䛣䛸䛜☜ㄆ䛥䜜䠈SAS䜢୰ᚰ䛻ᤣ䛘䛯 ᴗົᨵၿ䜢䛿䛛䛳䛯䠊 z ᑐ㇟䛸䛩䜛⮫ᗋヨ㦂ᩘ䛜ከ䛟䛺䜚䠈ᚑ๓䛾᭷ពᕪ᳨ᐃ 䜢య䛻䛧䛯DBTヨ㦂䛻ᑐ䛩䜛Fort䡎an䝧䞊䝇䛾ゎᯒ 䝅䝇䝔䝮䛷䛿䠈ᑐᛂ䛜ᅔ㞴䛻䛺䜚ጞ䜑䛯䠊 2021ᖺ11᭶19᪥ 㧗ᶫ⾜㞝 2021ᖺ ᖺ11᭶19᪥ 㧗ᶫ⾜㞝 237
᭱ᚋ䛻㧗ᶫ䛾䛴䜆䜔䛝 ඛ㐍ⓗ䛷䛒䛳䛯SAS䛾GLM䝥䝻䝅䝆䝱䛻䜋䜜䛯㧗ᶫ䛿䠈 ᶫẶ䛾ຊῧ䛘䜒䛒䜚䠈㧗ᶫ䞉ᶫ䞉ⰾ㈡䠄1989䠅䠈SAS䛻 䜘䜛ᐇ㦂䝕䞊䝍䛾ゎᯒ䛃 䛃䜢ฟ∧䛩䜛䛣䛸䛜䛷䛝䛯䠊 ᭱㏆䛾ὶ⾜䛿䠈᫇䛾䛂Basic䛻䜘䜛䡔䡔䡔䛃䛜䠈䛂䠮䛻䜘䜛䡕䡕䡕 䡕䛃䛻ኚ䜟䛳䛯䛰䛡䛷䠈ఱ䛾㐍Ṍ䜒䛺䛟䠈ຎ䛧䛶䛔䜛䛸䛧䛛 ゝ䛔䜘䛖䛜䛺䛟䠈Ⴣ䛛䜟䛧䛔䠊 䛭䛣䛷䠈ᐇ㦂䝕䞊䝍䛾ゎᯒ䛻㛵㐃䛧䠈⥺ᙧ䝰䝕䝹䛾ᛂ⏝䜢 䝔䞊䝬䛻᪂䛯䛺άື䜢㛤ጞ䜢䛩䜛䛣䛸䛻䛧䛯䠊 z ᮏᖺ䛾SAS䝴䞊䝄䞊⥲䛾₇㢟䠖 䛂ྛ✀䛾䝎䝭䞊ኚᩘ䜢⏝䛔䛯᭱ ᑠ2 ᖹᆒ䛸95%ಙ㢗༊㛫䛾ᐇ㝿䛃 z ᮏᖺ䛾JMP Discovery Summit 2021 䛾₇㢟䠖 䛂Ḟ ್䛜䛒䜛 ┤⾲䛾ゎᯒ䛻䛚䛡䜛⥺ᙧ䝰䝕䝹䛾ά⏝䠉⌧⾜Ỉ‽䛸᭱㐺Ỉ‽ 䛾ᕪ䛾95%ಙ㢗༊㛫䛾᥎ᐃ䜢䛻䛧䛶䠉䛃 2021ᖺ11᭶19᪥ 㧗ᶫ⾜㞝 䛤Ύ⫈䛒䜚䛜䛸䛖䛤䛦䛔䜎䛧䛯 2021ᖺ11᭶19᪥ 㧗ᶫ⾜㞝 238
僕はね、サイエンスが したいだけなんだよ − ⼤橋靖雄が⽬指したもの − 岸本 淳司(九州⼤学/SASユーザー会世話⼈) ⼤橋靖雄先⽣(SASユーザー会代表世話⼈) 逝去:令和3年3⽉11⽇(67歳) 239
歴史 • 1954年 福島市に⽣まれる • 1972年 福島県⽴福島⾼校卒業 • 1976年 東京⼤学⼯学部計数⼯学科卒業 • 1982年 東京⼤学⼯学博⼠ : : 東京⼤学計数⼯学科 • 堀越⼆郎を輩出した航空学科の後⾝ • 理念:(前略) 数学をその⼀部として含む論理的 なものの捉え⽅・扱い⽅を⼿がかりに、対象と する問題の本質を抽出し、解析し、その問題に 即して厳密解や近似解などの解決⽅法を導く。 さらに、数理⼯学的解法をコンピュータなどの 道具を⽤いて実問題に適⽤していくことを⽬的 としている(数理情報⼯学サイトより)。 • 奥野忠⼀先⽣(Fisherの実験計画を⽇本の農事試 験に導⼊した⼈)に師事 240
統計パッケージ • 助⼿の頃 SPSS, BMDP, SAS が流⾏し、東⼤で 「統計解析パッケージ研究会」を始める。 • 統計パッケージ利⽤が統計⼿法の誤⽤を誘発す るという「統計パッケージ誤⽤論」が当時主流。 → それは教育の問題だね • SASの⻑所はデータハンドリングだと⾒抜く。 → 僕は⼤学院の頃は優秀なFORTRANプログラマー だったんだよ。でもSASを知ったら⾃分でプログラム をする気はなくなったね。 東⼤出版会のベストセラー • SASが⼤型計算機セン ターで動いていた頃、⽂ 学部の市川先⽣と共著で SASの⼊⾨書を出版する (1987)。 • あえて系統的に書かない。 • 第2版では岸本・浜⽥が 著者に参加し、PC版に対 応して全⾯改訂(1993)。 • さらに第3版も。 241
36歳の東京⼤学医学部教授 • 開原成允先⽣(東京⼤学医学部附属病院中央医 療情報部初代教授)の招きで附属病院に移る (1984)。 • ⽬的は、当時⽇本に存在しない⽣物統計学の講 座を設⽴すること。 • 講座設⽴の研究のため渡⽶。ノースカロライナ ⼤学チャペルヒル校(SAS社の⺟体)等を訪問。 臨床試験データ管理システムに驚愕する。 • 保健学科疫学講座教授に36歳で就任(1990)。 • 戦後の医学部教授として最年少。 教育への努⼒ • ⽇科技連に⽣物統計学を教える「医薬データの 統計解析専⾨コース(BioS)」設置(1989)。 • 1年コースで参加費70万円 • SAS実習つき • 現在も32BioS継続中。修了者1660名以上 • 健康科学・看護学科 疫学・⽣物統計学講座へ • ⽇本唯⼀の⽣物統計学教室(1994) • 多くの講座出⾝者が他⼤学で⽣物統計学を担当 242
業界の⼈事部⻑ • ⽇本における臨床試験の急速な発展に対応し、 ⽣物統計家が必要とされるようになった。 • ⽇本で⽣物統計家を養成しているところは東⼤ の⼤橋研究室しかない(状態が⻑く続いた)。 • 全国の有⼒⼤学(と企業)が⼈材を求め⽇参。 • ⽇本全体への⼈材配布を考える⽴場に。 多様な肩書(ビジネスも⼤事) • NPO法⼈⽇本臨床研究⽀援ユニット理事⻑ (2001) • スタットコム株式会社取締役会⻑(2005) • NPO法⼈⽇本メディカルライター協会理事⻑ (2006) • ⼀般社団法⼈⽇本臨床試験研究会(現学会) 代表理事(2009) 243
政治も⼤事! • ⽯井苗⼦参議院議員は教室出⾝ • 選挙時は後援会⻑を務める • 岸本が臨床研究法の問題について相談した時 • ふ〜ん、で、君はどの国会議員に相談したの? → 愚痴を⾔ってないでどうやったら問題が解決でき るのか考えろ、ということ。 きぼうときずな • 2011年3⽉11⽇に発⽣した東⽇本⼤震災は、郷 ⾥の福島を中⼼に激甚な被害を与えた。 • では、私(⼤橋)に何ができるか? • 「きぼうときずな」プロジェクト設⽴(4⽉) • 福島の避難所・被災者宅の訪問医療⽀援・情報収集。 • 聖路加看護⼤学の協⼒のもと、2011年にはのべ 1000⼈の看護師・保健師を派遣 • 活動費は寄付⾦。2012年から⾃治体受託も。 244
僕はね、サイエンスが したいだけなんだよ • 数学そのものを研究するのではなく、問題解決 のために数学を道具として使う。 • コンピュータやSASも問題解決のための道具。 • 教育に注⼒し、理解する⼈を増やす。 • ときにはビジネスや政治も利⽤する? • ⽬的は、⼈類の幸福。 • そういう⽴場の⼈を、Scientistと呼びたい。 • 奥野先⽣、芳賀先⽣、吉村先⽣…… Scientistといえば… 245
これからも⾒守ってください • 初期⼤橋研メンバー 右から ⽯塚直樹(がん研) ⼤橋先⽣ 浜⽥知久⾺(故⼈) 岸本 246
Let’sデータ分析 247
高齢者単身世帯における消費行動 ○五十嵐 純一,田中 祐輔,西谷 浩子 (株式会社エス・シー・エー クリニカルデータサイエンス部) Consumption behavior in single elderly households Junichi Igarashi, Yusuke Tanaka, Hiroko Nishitani Clinical Data Science Dept., S.C.A Co., Ltd 要旨 現在,日本において世帯類型の主流である「夫婦と子」からなる核家族世帯は 2050 年には少数派となり. それに代わって単身世帯が最も多い世帯類型となる.同時に,高齢化の進行に伴い,全ての単身世帯のうち 高齢者の単身世帯がその半数以上を占めることが報告されおり,高齢者世帯の消費行動が経済に与える影響 は大きくなっていくと推測されている. 本稿では新疑似ミクロデータを使用し, 「高齢者単身世帯」を対象に,各世帯の支出傾向からその消費行動 を調査した.特に,平均寿命の延伸や定年の引き上げに伴う高齢者の勤労者世帯の増加が予見されることか ら,勤労者世帯と無職世帯の消費行動の違いを調査した.加えて,性別ごとの消費行動の違いに関しても検 討した. 高齢者単身世帯の消費行動を調査し,①勤労者世帯は無職世帯と比較して「調理食品・外食」や「健康保 持用摂取品」に多く支出する傾向がある,②女性世帯は男性世帯と比較して「コト消費」に多く支出する傾 向がある等の知見を得た. キーワード:高齢者単身世帯,消費行動,勤労者世帯,無職世帯,新疑似ミクロデータ,全国消費実態調査 1. はじめに 1.1. 背景・目的 近年,日本では少子高齢化が社会問題の一つとして注目されてきた.高齢化の状況や高齢社会に対する政 策については,内閣府より毎年公表されている高齢社会白書 [1]よりその近況を窺い知ることができる. 現在の世帯類型の主流である「夫婦と子」からなる核家族世帯は,2050 年には日本の総世帯数に占める割 合が約 2 割と少数派となる.それに代わって単身世帯は,総世帯数に占める割合が約 4 割と最も多い世帯類 型となる.同時に,高齢化の進行に伴って,単身世帯のうち高齢者世帯の割合は約 5 割を超え,2050 年まで 増加し続けることが報告されおり,高齢者世帯の消費行動が経済に与える影響は大きくなっていくと推測さ れている [2]. 248
本稿では,独立行政法人統計センターが提供する全国消費実態調査の匿名データを用いて擬似的に作成さ れた新擬似ミクロデータを使用し,「高齢者単身世帯」を対象として,各世帯の支出傾向からその消費行動 の特徴を明らかにすることを目的とする.特に,高齢者の勤労者世帯の増加が予見されることから,勤労者 世帯と無職世帯の消費行動の違いを調査する.加えて,性別ごとの消費行動の違いに関しても検討する. なお,新擬似ミクロデータは,誰もが自由に以下の URL よりダウンロードして利用できる. http://mighty.gk.u-hyogo.ac.jp/sas4zensho/ 1.2. 解析対象世帯 「高齢者単身世帯」に対応する世帯として,表 1.2 の抽出条件より解析対象世帯を抽出した.抽出のフロ ーチャートを図 1.2 に示す.ここで実支出がその分位点の 1%未満及び 99%を超える世帯を外れ値として除 外した.解析対象世帯数は 4,387,814 世帯となった.なお,世帯数は集計用乗率を使用して算出し,小数点 以下 1 桁目で四捨五入している. 表 1.2 解析対象世帯の抽出条件 項目名 符号内容 条件式 1) 世帯主の年齢 60 歳以上 家族分類 単身世帯 X11 = 1 世帯区分 勤労者世帯かつ職業符号が無職以外 X02 = 1 and V48 ^= 12 無職世帯かつ職業符号が無職 X02 = 3 and V48 = 12 1) 13 <= X09 調査年が 1989~2004 年であることを考慮し,定年退職後を想定して,世帯主が 60 歳以上の世帯を対象とした. 全調査世帯 53,989,771 世帯 世帯主が60歳未満の世帯 35,358,471 世帯 世帯主が60歳以上の世帯 18,631,300 世帯 単身以外の世帯 13,634,464 世帯 60歳以上かつ単身世帯 4,996,836 世帯 勤労者・無職以外の世帯 532,425 世帯 高齢者単身かつ勤労者・無職世帯 4,464,412 世帯 実支出に外れ値がある世帯 76,597 世帯 解析対象世帯 4,387,814 世帯 図 1.2 解析対象世帯の抽出のフローチャート 249
1.3. 世帯分類 解析対象世帯を性別・世帯区分ごとに分類した.各世帯分類の世帯数と割合を表 1.3 に示す.解析対象世 帯のうち,約 6 割を女性の無職世帯が占める. 表 1.3 世帯分類の条件 世帯分類 条件式 n (%) 男性・勤労者世帯 X08 = 1 and X02 = 1 151,761 (3.5) 男性・無職世帯 X08 = 1 and X02 = 2 939,432 (21.4) 女性・勤労者世帯 X08 = 2 and X02 = 1 411,719 (9.4) 女性・無職世帯 X08 = 2 and X02 = 2 2,884,901 (65.7) 合計 --- 4,387,814 (100.0) 1.4. 世帯事項 各世帯分類における世帯事項ごとの分布を表 1.4 に示す.調査年について,1989 年から 2004 年にかけて 全ての世帯分類で世帯数が大幅に増加している.勤労者世帯は無職世帯と比べて 3 大都市圏で生活している 世帯が多い.それに対して無職世帯は持ち家を持つ世帯が多い.勤労者世帯は 60~69 歳の世帯が過半数を占 めるのに対し,無職世帯では 70 歳以上の世帯が過半数を占める.勤労者世帯の職業について,男女共に常 用労務作業者又は民間職員に就いている世帯が多い. 表 1.4 世帯事項分布表 世帯事項 男性・勤労者 男性・無職世帯 女性・勤労者 女性・無職世帯 世帯 n (%) n (%) 世帯 n (%) n (%) 1989 916 (0.6) 6,008 (0.6) 8,926 (2.2) 32,818 (1.1) 1994 20,759 (13.7) 89,387 (9.5) 105,202 (25.6) 572,248 (19.8) 1999 40,603 (26.8) 222,256 (23.7) 80,509 (19.6) 637,129 (22.1) 2004 89,483 (59.0) 621,780 (66.2) 217,082 (52.7) 1,642,706 (56.9) 大都市圏の別 3 大都市圏 88,554 (58.4) 457,687 (48.7) 231,284 (56.2) 1,306,334 (45.3) (X01) その他 63,208 (41.6) 481,745 (51.3) 180,436 (43.8) 1,578,567 (54.7) 住居の所有関 持ち家 78,117 (51.5) 619,264 (65.9) 231,722 (56.3) 2,147,773 (74.4) 係 (X07) 持ち家以外 73,645 (48.5) 320,168 (34.1) 179,997 (43.7) 737,129 (25.6) 世帯主の年齢 60~64 歳 61,571 (40.6) 149,359 (15.9) 218,267 (53.0) 384,762 (13.3) (X09) 65~69 歳 32,171 (21.2) 268,133 (28.5) 143,687 (34.9) 696,345 (24.1) 70~74 歳 20,968 (13.8) 204,562 (21.8) 42,821 (10.4) 836,593 (29.0) 75 歳以上 37,052 (24.4) 317,379 (33.8) 6,944 (1.7) 967,202 (33.5) 世帯主の職業 常用労務作業 65,379 (43.1) 0 177,518 (43.1) 0 符号 (V48) 者 13,453 (8.9) 0 77,727 (18.9) 0 調査年 (Year) 項目 臨時及び日々 雇労務作業者 250
世帯事項 項目 男性・勤労者 男性・無職世帯 女性・勤労者 女性・無職世帯 世帯 n (%) n (%) 世帯 n (%) n (%) 民間職員 67,311 (44.4) 0 127,386 (30.9) 0 官公職員 1 1,185 (0.8) 0 2,585 (0.6) 0 官公職員 2 4,433 (2.9) 0 25,966 (6.3) 0 無職 0 939,432 (100.0) 0 2,884,901 (100.0) 不詳 0 0 538 (0.1) 0 1.5. 収支項目 世帯分類ごとに実収入と実支出の要約統計量を表 1.5 に示す.無職世帯では実収入の大部分が公的年金等 の社会保障給付となっている.実収入は男性世帯と比較して女性世帯が低く,特に勤労者世帯ではその差が 無職世帯と比較して大きい.図 1.5 に世帯分類別の可処分所得及び消費支出の中央値を示す.勤労者世帯で は可処分所得が消費支出を上回る傾向にあるが,無職世帯では下回る傾向にある.無職世帯では貯蓄を切り 崩しているものと推測される. 表 1.5 収支項目の要約統計量 世帯分類 収支項目 平均値 標準偏差 最小値 Q1 中央値 Q3 最大値 男性・勤労 実収入 300,144.6 171,102.0 41,325 198,168 275,555 378,834 1,131,522 者世帯 - 社会保障給付 95,047.8 97,771.1 0 0 76,146 169,421 400,806 - 可処分所得 274,337.4 153,632.1 41,325 181,607 238,372 328,162 992,155 実支出 197,850.2 108,434.3 33,156 130,943 155,127 262,932 594,682 - 消費支出 172,043.0 94,286.6 29,421 119,027 137,552 213,745 535,720 男性・無職 実収入 151,950.1 109,302.8 0 75,162 135,901 209,103 673,943 世帯 - 社会保障給付 138,642.5 110,145.4 0 60,118 126,681 194,903 667,122 - 可処分所得 138,348.8 104,611.2 -124,866 67,592 124,902 192,472 664,523 実支出 163,269.8 99,117.9 29,072 93,036 140,472 212,274 570,779 - 消費支出 149,668.5 93,232.3 21,358 78,917 129,813 195,118 559,407 女性・勤労 実収入 226,175.2 149,073.8 29,033 142,557 193,594 267,660 1,402,606 者世帯 - 社会保障給付 66,865.3 70,271.6 0 0 55,105 105,666 474,733 - 可処分所得 203,481.6 122,727.5 15,400 130,832 180,396 243,059 1,280,902 実支出 199,420.5 113,062.3 31,447 120,667 167,861 237,209 593,308 - 消費支出 176,726.8 97,704.4 17,859 108,421 149,174 218,705 567,461 女性・無職 実収入 140,100.0 102,681.6 0 68,196 116,004 187,362 701,854 世帯 - 社会保障給付 121,950.1 100,676.3 0 51,068 101,641 168,293 692,339 - 可処分所得 134,308.6 100,541.9 -52,233 64,297 112,488 181,347 682,296 実支出 157,922.3 93,625.3 28,108 89,381 135,273 203,405 594,215 - 消費支出 152,130.9 90,798.1 20,962 85,398 131,161 196,098 584,818 251
図 1.5 可処分所得と消費支出(中央値) 2. 消費行動の検討 2.1. 10 大費目 10 大費目に関する支出について世帯分類ごとの支出割合を図 2.1 に示す.男性世帯は女性世帯と比較して 「食料」や「交通・通信」の支出割合が高い.それに対して「被服及び履物」や「その他の消費支出」の支 出割合は女性世帯の方が高くなっている.これらの 10 大費目のうち「食料」,「保険医療」及び「教養娯 楽」に着目して,以降の節でその詳細を調査する. 図 2.1 10 大費目の支出割合 2.2. 食料 生活必需項目として「食料」に焦点を当て,世帯分類ごとの支出傾向の違いを調査する.食料に関する支 出について世帯分類ごとの支出割合を図 2.2.1 に示す.外食の支出割合は男性の勤労者世帯が最も高く,女 性の無職世帯が最も低い.男性世帯は女性世帯と比較して酒類の支出割合が高い.それに対して野菜・海藻 や菓子類の支出割合は女性世帯の方が高くなっている. 252
図 2.2.1 食料の支出割合 図 2.2.2 に食料に関する 1 ヵ月の支出金額を「内食」(穀類,魚介類,肉類,乳卵類,野菜・海藻,果物, 油脂・調味料) , 「調理食品・外食」 , 「その他」 (菓子類,飲料,酒類,賄い費)に分類して示す. 「内食」の支 出金額について世帯分類間で大きな差は見られない.勤労者世帯の「調理食品・外食」の支出金額は無職世 帯の約 2 倍となっている.食料の「その他」の支出金額は男性の勤労世帯が最も高い. 図 2.2.2 食料に関する 1 ヵ月の支出金額(中央値) 2.3. 保険医療 支出 10 大費目の一つ「保健医療」について考える.保健医療に関する支出について高齢者単身の全世帯 の支出割合を調査年別に図 2.3.1 に示す.1989~2004 年の高齢者単身世帯における保険医療の支出の第一位 は「保険医療サービス」である.また,調査年別の第一位も「保険医療サービス」であった.ここで保険医 療サービスは「健康の維持、疾病の治療、身体の矯正のために必要なサービスに関するもの.」と定義され る [3].なお,「健康保持用摂取品」は 1994 年に新設された項目である.これは「栄養成分の補給など保 健・健康増進のために用いる食品であって,錠剤,カプセル,顆粒状,粉末状,粒状,液(エキス)状など 通常の医薬品に類似する形態をとるもの.」と定義される [4].以下,調査年別(1994 年,2004 年),世帯 分類別に検討を行う. 253
図 2.3.1 高齢者単身世帯(60 歳代以上)の保険医療の支出割合(調査年別) 1994 年において,女性の勤労者世帯は「保険医療用品・器具」 , 「保険医療サービス」の支出が 8 割を占め ている.その他の世帯は「保険医療サービス」の支出が半分近くを占めている(図 2.3.2) . 図 2.3.2 高齢者単身世帯(60 歳代以上)の保険医療の支出割合(世帯分類別,1994 年) 2004 年において,男性の勤労者世帯は「医薬品」 , 「健康保持用摂取品」の支出が約 6 割を占めている.そ の他の世帯は「保険医療サービス」の支出が半分前後を占めている(図 2.3.3) . 図 2.3.3 高齢者単身世帯(60 歳代以上)の保険医療の支出割合(世帯分類別,2004 年) 254
2.4. 教養娯楽 教養娯楽に関する支出について世帯分類ごとの分布を図 2.4 に示す.勤労者世帯では無職世帯と比較して 教養娯楽用耐久財の支出割合が高い.それに対して教養娯楽用品の支出割合は無職世帯の方が高くなってい る.女性世帯は男性世帯と比較して月謝額の支出割合が高い.パック旅行費の支出割合が女性の勤労者世帯 で最も高くなっている. 図 2.4 教養娯楽に関する支出 3. 結果 高齢者の単身世帯を対象に,新疑似ミクロデータを用いて,性別・世帯区分ごとに各世帯の支出傾向を調 査した.結果として以下の知見が得られた. ① 男性世帯では「食料」や「交通・通信」に多く支出する傾向がある.それに対して女性世帯では「被 服及び履物」や「その他の消費支出」に多く支出する傾向がある. ② 食料の支出金額は男性の勤労者世帯が最も高く,その他の世帯が 1 ヵ月当たり 3 万円前後であるのに 対して,男性の勤労者世帯では約 5 万円であった.また,勤労者世帯の「調理食品・外食」の支出金 額は,男性・女性ごとに無職世帯の約 2 倍となっている. ③ 保険医療に関する支出は,全ての調査年・世帯分類において「保険医療サービス」が大きな割合を占 めている. ④ 「健康保持用摂取品」の支出割合が 1994 年から 2004 年に掛けて増えていることを見ることができ た.その傾向が顕著に表れているのは男性の勤労者世帯であった. ⑤ 勤労者世帯では「教養娯楽用耐久財」に多く支出する傾向がある.また,無職世帯では「教養娯楽用 品」に多く支出する傾向がある. ⑥ 女性世帯は男性世帯よりも「月謝額」,「パック旅行費」に多く支出する傾向がある. 4. 考察 高齢者の単身世帯の消費行動を検討するに当たり,1 点目として生活に必須である「食料」の支出傾向を 調査した.結果として,勤労者世帯は無職世帯と比較し, 「調理食品・外食」に多く支出する傾向があっ た.最近のコロナ禍に伴うフードデリバリーサービスの供給の増加は,現時点で高齢者の利用はまだ少ない 255
と予想されるものの,今後そのようなサービスの利用が生活に浸透した際に,高齢者世帯において「調理食 品」への支出はさらに増加していくものと推測される. 2 点目として「保険医療」の支出傾向を調査した.勤労者世帯において, 「健康保持用摂取品」の支出が 1994 年から 2004 年に掛けて増加傾向にあった.この消費の傾向を鑑みて,高齢者の勤労者世帯において,定年後 も働くことを生きがいに生活をしていく中で,栄養バランスをとるために健康保持用摂取品のサプリメント などの支出が増加すると考えられる. 最後に「教養娯楽」の支出傾向を調査し,勤労者世帯では「教養娯楽用耐久財」に多く支出する傾向があ ることを確認した.今後,高齢者の勤労者世帯が増えていくと予想される中,パソコンやカメラ等を始めと する教養娯楽用耐久財の支出が増えると見込まれる.さらに,女性の勤労者世帯は他の世帯分類と比較し, 「パック旅行費」への支出が多かったことから,コト消費(「体験」にお金を使う消費行為)が増加する見 込みがある. 高齢者単身世帯の消費行動を調査し,勤労者世帯と無職世帯で消費傾向に違いがあることを確認した.ま た,性別による消費傾向の違いも認められた.但し,最近では外出の自粛等に伴い,外食や旅行への支出は 減少していることが予測され,今回得られた知見が現在の実情と必ずしも一致するとは限らない.消費傾向 はその時分の社会情勢や流行により変動するものと考えられることから,最新の調査に基づき消費行動の変 化を捉えることが今後の経済活動を予測する上で重要であると思われる. 参考文献 [1] 『令和 3 年版高齢社会白書』,内閣府,2021 https://www8.cao.go.jp/kourei/whitepaper/w-2021/zenbun/03pdf_index.html [2] 『「国土の長期展望」 中間とりまとめ』,国土審議会政策部会長期展望委員会,2001 https://www.mlit.go.jp/common/000135853.pdf [3] 『Mpac-マーケティング情報パック』 https://www2.fgn.jp/mpac/_data/4/?d=64000 [4] 『政府統計の総合窓口(e-Stat)』 https://www.e-stat.go.jp/classifications/terms/70/02/C433 補遺 本稿の筆頭著者は五十嵐である.共著者として田中・西谷は,主に各課題の解析プログラムの作成を担当 したことをここに明記する. 256
付録 1 規定課題用 SAS プログラム libname ads "[フォルダパス]" access = readonly; proc format ; value _KAZOKU 1 = "単身世帯" 2 = "夫婦のみ" 3 = "二世代(両親と子)" 4 = "二世代(世帯主とひとり親)" 5 = "二世代(世帯主と子)" 6 = "三世代" 7 = "その他"; value _NENDAI1F 5 = "24 歳以下" 6 = "25~29 歳" 7 = "30~34 歳" 8 = "35~39 歳" 9 = "40~44 歳" 10 = "45~49 歳" 11 = "50~54 歳" 12 = "55~59 歳" 13 = "60~64 歳" 14 = "65~69 歳" 15 = "70~74 歳" 16 = "75 歳以上"; value _NENDAI2F 1 = "20 歳代" 2 = "30 歳代" 3 = "40 歳代" 4 = "50 歳代" 5 = "20~50 歳代" 9 = "60 歳代以上"; value _NY 1 = "無" 2 = "有"; value _SETAI 1 = "全世帯" 2 = "両親のいる世帯" 3 = "母子世帯" 4 = "父子世帯"; value _SEX 1 = "男" 2 = "女"; run ; data _MDATA ; set ads.giji4zensho ; format X08 _SEX. X09 _NENDAI1F. X11 _KAZOKU. X12 X13 _NY. ; label X08 = "世帯主の性別" X09 = "世帯主の年齢" X11 = "家族分類" X12 = "未就学児の有無" X13 = "学校に通う世帯員の有無" WEIGHT = "集計用乗率" Y003 = "実収入 (円)"; keep X08 X09 X11 X12 X13 WEIGHT Y003 ; run ; data _MDATA_1 ; set _MDATA ; where X11 in (3, 5) and ( X12 = 2 or X13 = 2 ) and . < Y003 < 6000000 ; run ; data _MDATA_2 ; set _MDATA_1 ; if ( X11 = 3 ) then _SETAI = 2 ; else if ( X11 = 5 and X08 = 2 ) then _SETAI = 3 ; else if ( X11 = 5 and X08 = 1 ) then _SETAI = 4 ; if ( X09 in (5, 6) ) then _NENDAI = 1 ; else if ( X09 in (7, 8) ) then _NENDAI = 2 ; else if ( X09 in (9, 10) ) then _NENDAI = 3 ; else if ( X09 in (11, 12) ) then _NENDAI = 4 ; else if ( 12 < X09 ) then _NENDAI = 9 ; format _SETAI _SETAI. _NENDAI _NENDAI2F. ; label _SETAI = "世帯構成" _NENDAI = "世帯主の年代" ; run ; data _BASE ; set _MDATA_2 ; where _NENDAI ^= 9 ; run ; data _BASE_1 ; set _BASE ; output ; _SETAI = 1 ; output ; run ; data _BASE_2 ; 257
set _BASE_1 ; output ; _NENDAI = 5 ; output ; run ; proc sort data = _BASE_2 ;by _SETAI _NENDAI ;run ; proc means data = _BASE_2 vardef = wgt noprint ; by _SETAI _NENDAI ; var Y003 ; weight WEIGHT ; output out = _RES_1 n = _N sumwgt = _WGT mean = _MEAN median = _MEDIAN q1 = _Q1 q3 = _Q3 ; run ; data _TEMP ; do _SETAI = 1 to 4 ; do _NENDAI = 1 to 5 ;output ;end ; end ; run ; proc sort data = _TEMP ; by _SETAI _NENDAI ;run ; data _RES_1 ; merge _TEMP _RES_1 ; by _SETAI _NENDAI ; run ; data _RES_2 ; length _Y003 $200 ; set _RES_1 ; _SORT = 1 ;_Y003 = strip(put(_N, comma16.)) ; output ; _SORT = 2 ;_Y003 = strip(put(round(_MEAN, 1E-0), comma16.)) ; output ; _SORT = 3 ;_Y003 = strip(put(round(_MEDIAN, 1E-0), comma16.)) ; output ; _SORT = 4 ;_Y004 = strip(put(round(_Q3 - _Q1, 1E-0), comma16.)); output ; format _ALL_ ; run ; proc sort data = _RES_2 ; by _SETAI _SORT _NENDAI ;run ; proc transpose data = _RES_2 out = _RES_3 prefix = _A ; by _SETAI _SORT ; var _Y003 ; id _NENDAI ; run ; data _RESULT ; length _L1 _L2 _A1 - _A5 $200 ; set _RES_3 ; if ( _SORT = 1 ) then _L1 = strip(put(_SETAI, _SETAI.)) ; if ( _SORT = 1 ) then _L2 = "世帯数(実数)" ; if ( _SORT = 2 ) then _L2 = "平均" ; if ( _SORT = 3 ) then _L2 = "中央値" ; if ( _SORT = 4 ) then _L2 = "四分位範囲" ; label _A1 = "20 歳代" _A2 = "30 歳代" _A3 = "40 歳代" _A4 = "50 歳代" _A5 = "20~50 歳代" keep _L1 _L2 _A1 - _A5 ; run ; /*Table Output*/ title1 j = c "課題 1 世帯構成別,世帯数,世帯の実収入 (単位: 円)" ; proc report data = _RESULT ; column _L1 _L2 ("実収入" _A1 - _A5) ; define _L1 - _L2 / left "" ; define _A1 - _A5 / center ; run ; proc means data = _BASE noprint ; var Y003 ; output out = _MAX max = _MAX ; 258 ;
run ; data _MAX_1 ; set _MAX ; _LEN = length(strip(put(int(_MAX), best.))) ; _BY = int(10**(_LEN - 1)) ; _MAX2 = int(ceil(_MAX / _BY) * _BY) ; call symputx("_by", _BY) ; call symputx("_max", _MAX2) ; run ; data _NULL_ ; length _LIST $200 ; do _I = 0 to &_max. by &_by. ; if ( _I = 0 ) then _LIST = strip(put(_I, best.)) ; else _LIST = strip(_LIST) || " " || strip(put(_I, best.)) ; end ; call symputx("_list", _LIST) ; run ; /*Figure Output*/ proc template ; define statgraph _mybox ; begingraph / datacolors = ( white ) datacontrastcolors = ( black black black black ) datafillpatterns = ( X1 L4 R4 X4 L3 R3 X3 L5 R5 X5 ); layout overlay / xaxisopts = ( offsetmin = 0.05 offsetmax = 0.05 type = linear linearopts = ( tickvaluelist = ( &_list. ) viewmin = 0 viewmax = &_max. ) ); BoxPlot Y = 'Y003'n / primary = true orient = horizontal Group = '_SETAI'n Weight = 'WEIGHT'n LegendLabel = "実収入 (円)" NAME = "HBOX" groupdisplay = cluster grouporder = descending display = ( CAPS FILL MEAN MEDIAN OUTLIERS fillpattern) ; DiscreteLegend "HBOX" / title = "世帯構成" sortorder = reverseauto ; endlayout ; endgraph ; end ; run ; title1 j = c "課題 1 世帯構成別の実収入の箱ひげ図" ; ods graphics / attrpriority = none ; proc sgrender data = _BASE_1 template = _mybox ; run ; 259
付録 2 規定課題図表一覧 規定課題(付録 1)の②,③の出力結果を以下に添付した. 【② Table】 【③ 箱ひげ図】 260
付録 3 自由課題 SAS プログラム /******************** 新疑似ミクロデータ ********************/ libname ads "[フォルダパス]" access = readonly; proc format; value _KINROU 1 = "勤労者世帯" 2 = "勤労者以外の世帯" 3 = "無職世帯"; value _KAZOKU 1 = "単身世帯" 2 = "夫婦のみ" 3 = "二世代(両親と子)" 4 = "二世代(世帯主とひとり親)" 5 = "二世代(世 帯主と子)" 6 = "三世代" 7 = "その他"; value _NENDAI1F 5 = "24 歳以下" 6 = "25~29 歳" 7 = "30~34 歳" 8 = "35~39 歳" 9 = "40~44 歳" 10 = "45~49 歳" 11 = "50~54 歳" 12 = "55~59 歳" 13 = "60~64 歳" 14 = "65~69 歳" 15 = "70~74 歳" 16 = "75 歳以上"; value _NENDAI2F 1 = "20 歳代" 2 = "30 歳代" 3 = "40 歳代" 4 = "50 歳代" 5 = "20~50 歳代" 9 = "60 歳代以上"; value _NY 1 = "無" 2 = "有"; value _SETAI 1 = "全世帯" 2 = "両親のいる世帯" 3 = "母子世帯" 4 = "父子世帯"; value _SEX 1 = "男" 2 = "女"; value _CITY 1 = "3大都市圏" 0 = "その他"; value _KOZO 1 = "木造(防火木造含む)" 2 = "木造(防火木造含む)以外"; value _TATE 1 = "一戸建" 2 = "一戸建以外"; value _IE 1 = "持ち家" 2 = "持ち家以外"; value _ZIN1F 1 = "1 人" 2 = "2 人" 3 = "3 人" 4 = "4 人" 5 = "5 人以上"; value _ZIN2F 0 = "0 人" 1 = "1 人" 2 = "2 人" 3 = "3 人以上"; value _ZIN3F 0 = "0 人" 1 = "1 人" 2 = "2 人以上"; value _KIGYO 1 = "民営・自営 1~4 人" 2 = "民営・自営 5~29 人" 3 = "民営・自営 30~499 人" 4 = "民営・自営 500 人以上" 5 = "官公" 6 = "無職"; value _SANGYO 1 = "農業" 2 = "林業" 3 = "漁業" 4 = "鉱業" 5 = "建設業" 6 = "製造業" 7 = "電気・ガス・熱供給・水道業" 8 = "情報通信業" 9 = "運輸業" 10 = "卸売・小売業" 11 = "金融・保険業" 12 = "不動産業" 13 = "飲食店,宿泊業" 14 = "医 療,福祉" 15 = "教育,学習支援業" 16 = "複合サービス事業" 17 = "サービス業(他に分類されないもの)" 18 = "公務(他に 分類されないもの)" 19 = "その他(非就業を含む)" 20 = "不詳"; value _SYOKUGYO 1 = "常用労務作業者" 2 = "臨時及び日々雇労務作業者" 3 = "民間職員" 4 = "官公職員1" 5 = "官公職 員2" 6 = "商人及び職人" 7 = "個人経営者" 8 = "農林漁業従業者" 9 = "法人経営者" 10 = "自由業者" 11 = "その他" 12 = "無 職" 13 = "不詳"; run; data _MDATA; set ads.giji4zensho; format X01 _CITY. X02 _KINROU. X03 _ZIN1F. X04 _ZIN2F. X05 _KOZO. X06 _TATE. X07 _IE. X08 _SEX. X09 _NENDAI1F. X10 _KIGYO. X11 _KAZOKU. X12 X13 _NY. X14 _ZIN3F. V47 _SANGYO. V48 _SYOKUGYO.; label Year = "調査年" X01 = "大都市圏の別" X02 = "世帯区分" X03 = "世帯人員" X04 = "就業人員" X05 = "住居の構造" X06 = "住居の建て方" X07 = "住居の所有関係" X08 = "世帯主の性別" X09 = "世帯主の年齢" X10 = "世帯主の勤務する企 業区分(従業者規模)" X11 = "家族分類" X12 = "未就学児の有無" X13 = "学校に通う世帯員の有無" X14 = "65 歳以上の世帯 員数" WEIGHT = "集計用乗率" V47 = "世帯主の勤務する企業の産業符号" V48 = "世帯主の職業符号" Y001 = "年間収入 (万円)" Y002 = "収入総額" Y038 = "支出総額" Y003 = "実収入" Y024 = "実収入以外の収入" Y037 = "繰入金" Y039 = "実支 出" Y190 = "実支出以外の支出" Y203 = "繰越金" Y004 = "経常収入" Y021 = "特別収入" Y025 = "預貯金引出" Y026 = "保険 取金" Y029 = "有価証券売却" Y032 = "土地家屋借入金" Y033 = "他の借入金" Y034 = "分割払・一括払購入借入金" Y035 = "財産売却" Y036 = "その他" Y040 = "消費支出" Y179 = "非消費支出" Y191 = "預貯金" Y192 = "保険掛金" Y195 = "有価証券 購入" Y198 = "土地家屋借金返済" Y199 = "他の借金返済" Y200 = "分割払・一括払購入借入金返済" Y201 = "財産購入" Y202 = "その他" Y005 = "勤め先収入" Y009 = "事業・内職収入" Y014 = "本業以外の勤め先・事業・内職収入" Y015 = "他 の経常収入" Y022 = "受贈金" Y023 = "その他" Y027 = "個人・企業年金保険取金" Y028 = "他の保険取金" Y030 = "株式売 却" Y031 = "他の有価証券売却" Y041 = "食料" Y083 = "住居" Y088 = "光熱・水道" Y093 = "家具・家事用品" Y103 = "被服 及び履物" Y121 = "保健医療" Y126 = "交通・通信" Y137 = "教育" Y141 = "教養娯楽" Y151 = "その他の消費支出" Y180 = " 直接税" Y184 = "社会保険料" Y189 = "他の非消費支出" Y193 = "個人・企業年金保険掛金" Y194 = "他の保険掛金" Y196 = "株式購入" Y197 = "他の有価証券購入" Y006 = "世帯主の勤め先収入" Y007 = "世帯主の配偶者の勤め先収入" Y008 = "他 の世帯員の勤め先収入" Y010 = "農林漁業収入" Y011 = "家賃収入" Y012 = "他の事業収入" Y013 = "内職収入" Y016 = "財産 収入" Y017 = "社会保障給付" Y020 = "仕送り金(収入)" Y042 = "穀類" Y047 = "魚介類" Y052 = "肉類" Y055 = "乳卵類" Y059 = "野菜・海藻" Y064 = "果物" Y067 = "油脂・調味料" Y070 = "菓子類" Y071 = "調理食品" Y074 = "飲料" Y078 = "酒 類" Y079 = "外食" Y082 = "賄い費(単身のみ)" Y084 = "家賃地代" Y085 = "設備修繕・維持" Y089 = "電気代" Y090 = "ガス 代" Y091 = "他の光熱" Y092 = "上下水道料" Y094 = "家庭用耐久財" Y098 = "室内装備・装飾品" Y099 = "寝具類" Y100 = " 家事雑貨" Y101 = "家事用消耗品" Y102 = "家事サービス" Y104 = "和服" Y105 = "洋服" Y109 = "シャツ・セーター類" Y113 = "下着類" Y117 = "生地・糸類" Y118 = "他の被服" Y119 = "履物類" Y120 = "被服関連サービス" Y122 = "医薬品" Y123 = " 健康保持用摂取品" Y124 = "保健医療用品・器具" Y125 = "保健医療サービス" Y127 = "交通" Y128 = "自動車等関係費" Y135 = "通信" Y138 = "授業料等" Y139 = "教科書・学習参考教材" Y140 = "補習教育" Y142 = "教養娯楽用耐久財" Y143 = " 教養娯楽用品" Y144 = "書籍・他の印刷物" Y145 = "教養娯楽サービス" Y152 = "諸雑費" Y158 = "こづかい(使途不明)" 261
Y159 = "交際費" Y167 = "仕送り金(支出)" Y181 = "勤労所得税" Y182 = "個人住民税" Y183 = "他の税" Y185 = "公的年金 保険料" Y186 = "健康保険料" Y187 = "介護保険料" Y188 = "他の社会保険料" Y018 = "公的年金給付" Y019 = "他の社会保 障給付" Y043 = "米" Y044 = "パン" Y045 = "めん類" Y046 = "他の穀類" Y048 = "生鮮魚介" Y049 = "塩干魚介" Y050 = "魚肉 練製品" Y051 = "他の魚介加工品" Y053 = "生鮮肉" Y054 = "加工肉" Y056 = "牛乳" Y057 = "乳製品" Y058 = "卵" Y060 = "生 鮮野菜" Y061 = "乾物・海藻" Y062 = "大豆加工品" Y063 = "他の野菜・海藻加工品" Y065 = "生鮮果物" Y066 = "果物加工 品" Y068 = "油脂" Y069 = "調味料" Y072 = "主食的調理食品" Y073 = "他の調理食品" Y075 = "茶類" Y076 = "コーヒー・コ コア" Y077 = "他の飲料" Y080 = "一般外食" Y081 = "学校給食" Y086 = "設備材料" Y087 = "工事その他のサービス" Y095 = "家事用耐久財" Y096 = "冷暖房用器具" Y097 = "一般家具" Y106 = "男子用洋服" Y107 = "婦人用洋服" Y108 = "子供用洋服" Y110 = "男子用シャツ・セーター類" Y111 = "婦人用シャツ・セーター類" Y112 = "子供用シャツ・セーター類" Y114 = "男 子用下着類" Y115 = "婦人用下着類" Y116 = "子供用下着類" Y129 = "自動車等購入" Y130 = "自転車購入" Y131 = "自動車等 維持" Y146 = "宿泊料" Y147 = "パック旅行費" Y148 = "月謝類" Y149 = "他の教養娯楽サービス" Y153 = "理美容サービス" Y154 = "理美容用品" Y155 = "身の回り用品" Y156 = "たばこ" Y157 = "その他の諸雑費" Y160 = "食料" Y161 = "家具・家事 用品" Y162 = "被服及び履物" Y163 = "教養娯楽" Y164 = "他の物品サービス" Y165 = "贈与金" Y166 = "他の交際費" Y132 = "(特掲)ガソリン" Y133 = "(特掲)自動車整備費" Y134 = "(特掲)自動車保険料" Y136 = "(特掲)移動電話通信料" Y150 = "(特 掲)インターネット接続料" Y168 = "(再掲)教育関係費" Y169 = "(再掲)教養娯楽関係費" Y178 = "(再掲)情報通信関係費" Y170 = "耐久財" Y171 = "読書" Y172 = "聴視・観覧" Y173 = "旅行" Y174 = "スポーツ" Y175 = "月謝" Y176 = "会費・つき あい費" Y177 = "他の教養娯楽"; run; /******************** 高齢者単身世帯 ********************/ data _BASE_1; set _MDATA; where 13 <= X09 and X11 = 1 and ( (X02 = 1 and V48 ^= 12) or (X02 = 3 and V48 = 12) ); run; proc univariate data = _BASE_1 noprint; var Y039; output out = _OUT p1 = _P1 p99 = _P99; run; data _BASE_2_1; retain P1 P99; merge _BASE_1 _OUT; if ( _P1 ^= . ) then P1 = _P1; if ( _P99 ^= . ) then P99 = _P99; run; data _BASE_2; set _BASE_2_1; if ( P1 < Y039 < P99 ) then output; run; proc format; value _cat 1 = "男性・勤労者世帯" 2 = "男性・無職世帯" 3 = "女性・勤労者世帯" 4 = "女性・無職世帯"; value _catr 4 = "男性・勤労者世帯" 3 = "男性・無職世帯" 2 = "女性・勤労者世帯" 1 = "女性・無職世帯"; run; data _BASE; set _BASE_2; if ( X08 = 1 and X02 = 1 ) then _CAT = 1; else if ( X08 = 1 and X02 = 3 ) then _CAT = 2; else if ( X08 = 2 and X02 = 1 ) then _CAT = 3; else if ( X08 = 2 and X02 = 3 ) then _CAT = 4; _CATR = 5 - _CAT; _SYOTOKU = Y003 - Y179; format _CAT _cat. _CATR _catr.; label _CAT = "高齢者単身世帯" _CATR = "高齢者単身世帯" _SYOTOKU = "可処分所得"; run; /******************** 世帯事項 ********************/ title "表 1.3 世帯分類の条件"; proc freq data = _BASE ; tables _CAT / out = _FREQ; weight Weight; run; title "表 1.4 世帯事項分布表"; data _NULL_; set _FREQ; if ( _CAT = 1 ) then call symputx("_n1", COUNT); if ( _CAT = 2 ) then call symputx("_n2", COUNT); if ( _CAT = 3 ) then call symputx("_n3", COUNT); if ( _CAT = 4 ) then call symputx("_n4", COUNT); run; data _WK_1; set _BASE; _SORT = 1; _AVAL = Year; output; 262
_SORT = 2; _AVAL = X01; output; _SORT = 3; _AVAL = X07; output; _SORT = 4; _AVAL = X09; output; _SORT = 5; _AVAL = V48; output; run; proc sort data = _WK_1; by _SORT; run; proc freq data = _WK_1 noprint; by _SORT; tables _AVAL * _CAT / out = _FREQ2; weight Weight; run; data _FREQ2_1; length _C _P _CP $100; set _FREQ2; _C = strip(put(round(COUNT, 1E-0), comma16.0)); if ( _CAT = 1 ) then _P = strip(put(round(COUNT / &_n1. * 100, 1E-1), 8.1)); if ( _CAT = 2 ) then _P = strip(put(round(COUNT / &_n2. * 100, 1E-1), 8.1)); if ( _CAT = 3 ) then _P = strip(put(round(COUNT / &_n3. * 100, 1E-1), 8.1)); if ( _CAT = 4 ) then _P = strip(put(round(COUNT / &_n4. * 100, 1E-1), 8.1)); _CP = strip(_C) || " (" || strip(_P) || ")"; format _ALL_; run; proc sort data = _FREQ2_1; by _SORT _AVAL _CAT; run; proc transpose data = _FREQ2_1 out = _FREQ2_TRN prefix = _CP; by _SORT _AVAL; var _CP; id _CAT; run; data _TAB14; length _A1 - _A6 $200; set _FREQ2_TRN; by _SORT _AVAL; if ( first._SORT ) then do; if ( _SORT = 1 ) then _A1 = "調査年 (Year)"; if ( _SORT = 2 ) then _A1 = "大都市圏の別 (X01)"; if ( _SORT = 3 ) then _A1 = "住居の所有関係 (X07)"; if ( _SORT = 4 ) then _A1 = "世帯主の年齢 (X09)"; if ( _SORT = 5 ) then _A1 = "世帯主の職業符号 (V48)"; end; else _A1 = ""; if ( _SORT = 1 ) then _A2 = strip(put(_AVAL, 8.)); if ( _SORT = 2 ) then _A2 = strip(put(_AVAL, _CITY.)); if ( _SORT = 3 ) then _A2 = strip(put(_AVAL, _IE.)); if ( _SORT = 4 ) then _A2 = strip(put(_AVAL, _NENDAI1F.)); if ( _SORT = 5 ) then _A2 = strip(put(_AVAL, _SYOKUGYO.)); _A3 = strip(_CP1); _A4 = strip(_CP2); _A5 = strip(_CP3); _A6 = strip(_CP4); array _AG _A3 - _A6; do over _AG; if ( _AG = "" ) then _AG = "0"; end; label _A1 = "世帯事項" _A2 = "項目" _A3 = "男性・勤労者世帯" _A4 = "男性・無職世帯" _A5 = "女性・勤労者世帯" _A6 = "女性・無職世帯"; keep _A1 - _A6; run; proc print data = _TAB14 label; run; title "表 1.5 収支項目の要約統計量"; data _WK_2; set _BASE; _SORT = 1; _AVAL = Y003; output; _SORT = 2; _AVAL = Y017; output; _SORT = 3; _AVAL = _SYOTOKU; output; _SORT = 4; _AVAL = Y039; output; _SORT = 5; _AVAL = Y040; output; run; proc sort data = _WK_2; by _CAT _CATR _SORT; run; proc means data = _WK_2 vardef = wgt noprint; by _CAT _CATR _SORT; var _AVAL; weight WEIGHT; output out = _MEAN n = _N mean = _MEAN std = _STD min = _MIN q1 = _Q1 median = _MEDIAN q3 = _Q3 max = _MAX; run; data _TAB15; length _A1 - _A9 $200; set _MEAN; by _CAT _SORT; if ( first._CAT ) then do; _A1 = strip(put(_CAT, _cat.)); end; else _A1 = ""; if ( _SORT = 1 ) then _A2 = "実収入"; if ( _SORT = 2 ) then _A2 = "- 社会保障給付"; if ( _SORT = 3 ) then _A2 = "- 可処分所得"; if ( _SORT = 4 ) then _A2 = "実支出"; 263
if ( _SORT = 5 ) then _A2 = "- 消費支出"; _A3 = strip(put(round(_MEAN, 1E-1), comma16.1)); _A4 = strip(put(round(_STD, 1E-1), comma16.1)); _A5 = strip(put(round(_MIN, 1E-0), comma16.0)); _A6 = strip(put(round(_Q1, 1E-1), comma16.1)); _A7 = strip(put(round(_MEDIAN, 1E-1), comma16.1)); _A8 = strip(put(round(_Q3, 1E-1), comma16.1)); _A9 = strip(put(round(_MAX, 1E-0), comma16.0)); array _AG _A3 - _A9; do over _AG; if ( _AG = "" ) then _AG = "---"; end; label _A1 = "世帯分類" _A2 = "収支" _A3 = "Mean" _A4 = "Std" _A5 = "Min" _A6 = "Q1" _A7 = "Median" _A8 = "Q3" _A9 = "Max"; keep _A1 - _A9; run; proc print data = _TAB15 label; run; title "図 1.5 可処分所得と消費支出(中央値)"; proc sort data = _MEAN; by _CATR; run; proc transpose data = _MEAN out = _MEAN_TRN prefix = _V; by _CATR; var _MEDIAN; id _SORT; run; proc template; define statgraph _bc1; begingraph / datacontrastcolors = ( STPK BIGB ) datafillpatterns = ( L4 R4 ); layout overlay / cycleattrs = true xaxisopts = ( tickvalueattrs=(size=10) display=(label line ticks tickvalues) label="収支(円)" labelattrs=(size=10) ) yaxisopts = ( tickvalueattrs = ( size = 10 ) display = (line ticks tickvalues) labelattrs = ( size = 10 ) ); barchart category = _CATR response = _V5 / stat = sum orient = horizontal name = "B" legendlabel = "消費支出" discreteoffset = -0.1 barwidth = 0.2 display = ( fill outline fillpattern ) fillattrs = ( color = white ); barchart category = _CATR response = _V3 / stat = sum orient = horizontal name = "A" legendlabel = "可処分所得" discreteoffset = 0.1 barwidth = 0.2 display = ( fill outline fillpattern ) fillattrs = ( color = white ); discretelegend "A" "B" / title = "" location = outside valueattrs = ( size = 10 ); endlayout; endgraph; end; run; ods graphics / reset = all noborder imagefmt = png height = 200px width = 400px attrpriority = none; proc sgrender data = _MEAN_TRN template = _bc1; run; /******************** 10 大費目 ********************/ title "図 2.1 10 大費目の支出割合"; proc format; value _grp 1 = "食料" 2 = "住居" 3 = "光熱・水道" 4 = "家具・家事用品" 5 = "被服及び履物" 6 = "保健医療" 7 = "交通・通 信" 8 = "教育" 9 = "教養娯楽" 10 = "その他の消費支出" ; run; data _COM10; set _BASE; _GRP = 1; _RES = Y041; output; _GRP = 2; _RES = Y083; output; _GRP = 3; _RES = Y088; output; _GRP = 4; _RES = Y093; output; _GRP = 5; _RES = Y103; output; _GRP = 6; _RES = Y121; output; _GRP = 7; _RES = Y126; output; _GRP = 8; _RES = Y137; output; _GRP = 9; _RES = Y141; output; _GRP = 10; _RES = Y151; output; format _GRP _grp.; run; proc means data = _COM10 vardef = wgt noprint; class _CATR _GRP; var _RES; weight Weight; output out = _COM10W( where = ( _CATR ^= . and _GRP ^= . ) ) n = _N sum = _SUM sumwgt = _SUMW; run; proc template; define statgraph _bc2; dynamic CAT RES GRP; begingraph / datafillpatterns = ( X1 L4 R4 X4 L3 R3 X3 L5 R5 X5 L2 R2 X2 ); 264
layout overlay / xaxisopts = ( display = (line ticks tickvalues) tickvalueattrs = ( size = 10 ) ) yaxisopts = ( display = (line ticks tickvalues) tickvalueattrs = ( size = 10 ) ); barchart category = CAT response = RES / group = GRP stat = sum orient = horizontal group100 = positive groupdisplay = stack segmentlabel = true name = "BARC" barlabelattrs = ( size = 10 ) segmentlabelattrs = ( size = 10 weight = bold ) display = ( fill outline fillpattern ) fillattrs = ( color = white ); discretelegend "BARC" / valueattrs = ( size = 10 ); endlayout; endgraph; end; run; ods graphics / reset = all noborder imagefmt = png height = 200px width = 600px attrpriority = none; proc sgrender data = _COM10W template = _bc2; dynamic CAT = "_CATR" RES = "_SUM" GRP = "_GRP"; run; /******************** 食料 ********************/ title "図 2.2.1 食料の支出割合"; proc format; value _fd 1 = "穀類" 2 = "魚介類" 3 = "肉類" 4 = "乳卵類" 5 = "野菜・海藻" 6 = "果物" 7 = "油脂・調味料" 8 = "菓子類" 9 = "調理食品" 10 = "飲料" 11 = "酒類" 12 = "外食" 13 = "賄い費(単身のみ)"; run; data _FD_1; set _BASE; _GRP = 1; _RES = Y042; output; _GRP = 2; _RES = Y047; output; _GRP = 3; _RES = Y052; output; _GRP = 4; _RES = Y055; output; _GRP = 5; _RES = Y059; output; _GRP = 6; _RES = Y064; output; _GRP = 7; _RES = Y067; output; _GRP = 8; _RES = Y070; output; _GRP = 9; _RES = Y071; output; _GRP = 10; _RES = Y074; output; _GRP = 11; _RES = Y078; output; _GRP = 12; _RES = Y079; output; _GRP = 13; _RES = Y082; output; format _GRP _fd.; run; proc means data = _FD_1 vardef = wgt noprint; class _CATR _GRP; var _RES; weight Weight; output out = _FD_1W( where = ( _CATR ^= . and _GRP ^= . ) ) n = _N sum = _SUM sumwgt = _SUMW; run; ods graphics / reset = all noborder imagefmt = png height = 200px width = 600px attrpriority = none; proc sgrender data = _FD_1W template = _bc2; dynamic CAT = "_CATR" RES = "_SUM" GRP = "_GRP"; run; title "図 2.2.2 食料に関する 1 ヵ月の支出金額(中央値)"; data _FD_2; set _BASE; _SORT = 1; _AVAL = Y041; output; _SORT = 2; _AVAL = Y042+Y047+Y052+Y055+Y059+Y064+Y067; output; _SORT = 3; _AVAL = Y071+Y079; output; _SORT = 4; _AVAL = Y070+Y074+Y078+Y082; output; run; proc means data = _FD_2 vardef = wgt noprint; class _CATR _SORT; var _AVAL; weight WEIGHT; output out = _FD_2W(where = ( _CATR ^= . and _SORT ^= . )) n = _N mean = _MEAN std = _STD min = _MIN q1 = _Q1 median = _MEDIAN q3 = _Q3 max = _MAX; run; proc sort data = _FD_2W; by _CATR; run; proc transpose data = _FD_2W out = _FD_2W_TRN prefix = _V; by _CATR; var _MEDIAN; id _SORT; run; proc template; define statgraph _bc3; begingraph / datacontrastcolors = ( STLG STPK BIGB LIBRGR ) datafillpatterns = ( X1 L4 R4 X4 ); layout overlay / cycleattrs = true 265
xaxisopts = ( tickvalueattrs=(size=10) display=(label line ticks tickvalues) label="支出(円)" labelattrs=(size=10 ) ) yaxisopts = ( tickvalueattrs = ( size = 10 ) display = (line ticks tickvalues) labelattrs = ( size = 10 ) ); barchart category = _CATR response = _V4 / stat = sum orient = horizontal name = "A" legendlabel = "その他" discreteoffset = -0.3 barwidth = 0.2 display = ( fill outline fillpattern ) fillattrs = ( color = white ); barchart category = _CATR response = _V3 / stat = sum orient = horizontal name = "B"legendlabel = "調理食品・外食" discreteoffset = -0.1 barwidth = 0.2 display = ( fill outline fillpattern ) fillattrs = ( color = white ); barchart category = _CATR response = _V2 / stat = sum orient = horizontal name = "C" legendlabel = "内食" discreteoffset = 0.1 barwidth = 0.2 display = ( fill outline fillpattern ) fillattrs = ( color = white ); barchart category = _CATR response = _V1 / stat = sum orient = horizontal name = "D" legendlabel = "食料全体" discreteoffset = 0.3 barwidth = 0.2 display = ( fill outline fillpattern ) fillattrs = ( color = white ); discretelegend "D" "C" "B" "A" / title = "" location = outside /*halign = right valign = top*/ valueattrs = ( size = 10 ); endlayout; endgraph; end; run; ods graphics / reset = all noborder imagefmt = png height = 250px width = 500px attrpriority = none; proc sgrender data = _FD_2W_TRN template = _bc3; run; /******************** 保険医療 ********************/ proc format; value _year 5 = "全体" 4 = "1989 年" 3 = "1994 年" 2 = "1999 年" 1 = "2004 年"; value _hm 1 = "医薬品" 2 = "健康保持用摂取品" 3 = "保健医療用品・器具" 4 = "保健医療サービス"; run; data _HM_1; set _BASE; _GRP = 1; _RES = Y122; output; _GRP = 2; _RES = Y123; output; _GRP = 3; _RES = Y124; output; _GRP = 4; _RES = Y125; output; label _GRP = "支出:保健医療" _RES = "支出"; format _GRP _hm.; run; proc means data = _HM_1( where = ( Year = 1989 ) ) vardef = wgt noprint; class _CATR _GRP; var _RES; weight Weight; output out = _HM_1W_1989( where = ( _CATR ^= . and _GRP ^= . ) ) n = _N sum = _SUM sumwgt = _SUMW; run; proc means data = _HM_1( where = ( Year = 1994 ) ) vardef = wgt noprint; class _CATR _GRP; var _RES; weight Weight; output out = _HM_1W_1994( where = ( _CATR ^= . and _GRP ^= . ) ) n = _N sum = _SUM sumwgt = _SUMW; run; proc means data = _HM_1( where = ( Year = 1999 ) ) vardef = wgt noprint; class _CATR _GRP; var _RES; weight Weight; output out = _HM_1W_1999( where = ( _CATR ^= . and _GRP ^= . ) ) n = _N sum = _SUM sumwgt = _SUMW; run; proc means data = _HM_1( where = ( Year = 2004 ) ) vardef = wgt noprint; class _CATR _GRP; var _RES; weight Weight; output out = _HM_1W_2004( where = ( _CATR ^= . and _GRP ^= . ) ) n = _N sum = _SUM sumwgt = _SUMW; run; data _HM_2; set _HM_1; if ( Year = 1989 ) then _YEAR = 4; if ( Year = 1994 ) then _YEAR = 3; if ( Year = 1999 ) then _YEAR = 2; if ( Year = 2004 ) then _YEAR = 1; output; _YEAR = 5; output; format _YEAR _year.; run; proc means data = _HM_2 vardef = wgt noprint; class _YEAR _GRP; var _RES; weight Weight; output out = _HM_2W( where = ( _YEAR ^= . and _GRP ^= . ) ) n = _N sum = _SUM sumwgt = _SUMW; run; title "図 2.3.1 高齢者単身世帯(60 歳代以上)の保険医療の支出割合(調査年別)"; ods graphics / reset = all noborder imagefmt = png height = 200px width = 600px attrpriority = none; proc sgrender data = _HM_2W template = _bc2; dynamic CAT = "_YEAR" RES = "_SUM" GRP = "_GRP"; 266
run; title "図 2.3.2 高齢者単身世帯(60 歳代以上)の保険医療の支出割合(世帯分類別,1994 年)"; ods graphics / reset = all noborder imagefmt = png height = 200px width = 600px attrpriority = none; proc sgrender data = _HM_1W_1994 template = _bc2; dynamic CAT = "_CATR" RES = "_SUM" GRP = "_GRP"; run; title "図 2.3.3 高齢者単身世帯(60 歳代以上)の保険医療の支出割合(世帯分類別,2004 年)"; ods graphics / reset = all noborder imagefmt = png height = 200px width = 600px attrpriority = none; proc sgrender data = _HM_1W_2004 template = _bc2; dynamic CAT = "_CATR" RES = "_SUM" GRP = "_GRP"; run; /******************** 教養娯楽 ********************/ title "図 2.4 教養娯楽に関する支出"; proc format; value _en 1 = "教養娯楽用耐久財" 2 = "教養娯楽用品" 3 = "書籍・他の印刷物" 4 = "宿泊料" 5 = "パック旅行費" 6 = "月謝 類" 7 = "他の教養娯楽サービス"; run; data _EN_1; set _BASE; _GRP = 1; _RES = Y142; output; _GRP = 2; _RES = Y143; output; _GRP = 3; _RES = Y144; output; _GRP = 4; _RES = Y146; output; _GRP = 5; _RES = Y147; output; _GRP = 6; _RES = Y148; output; _GRP = 7; _RES = Y149; output; label _GRP = "支出:教養娯楽" _RES = "支出"; format _GRP _en.; run; proc means data = _EN_1 vardef = wgt noprint; class _CATR _GRP; var _RES; weight Weight; output out = _EN_1W( where = ( _CATR ^= . and _GRP ^= . ) ) n = _N sum = _SUM sumwgt = _SUMW; run; proc sgrender data = _EN_1W template = _bc2; dynamic CAT = "_CATR" RES = "_SUM" GRP = "_GRP"; run; 267
基調講演 268
統計・データサイエンスが目指 すもの,忘れてはならないもの 統計数理研究所・特任教授 順天堂大学大学院・客員教授 成蹊大学・名誉教授 岩崎 学 1 SASユーザー会でのこれまでの講演 1988:尤度関数に基づく統計的推測 1989:射影追跡 (projection pursuit) と多変量データ解析 1990:尖度 (kurtosis) とは何か 1991:分割表解析におけるモンテカルロテスト 1992:SASシステムによる混合実験の解析 1996:SASシステムによるP‐値の計算と信頼区間 1996:SAS システムによる混合実験データの解析 1998:伝統的統計解析法とデータマイニング 2001:データマイニング:その考え方と特色(特別講演) 2002:古典的実験計画法とJMPのカスタム計画 2014:データ分析における「第三の変数」の功罪(基調講演) 2 269
講師紹介 岩崎 学(いわさき まなぶ) 理学博士 昭和27年(1952年)12月14日,静岡県浜松市生まれ 専門:(古典的)統計的データ解析の理論と応用 最終学歴:東京理科大学大学院理学研究科数学専攻修士課程 職歴:茨城大学工学部(7年),防衛大学校(9年),成蹊大学理工学部 (25年),横浜市立大学DS学部(3年)を経て,2021年4月より現職 学会:統計関連学会連合理事長,応用統計学会会長,日本統計学会会 長・理事長ほか統計関連の諸学会の理事などを歴任 官公庁:内閣府,総務庁,文部科学省,厚生労働省,消費者庁,医薬品 医療機器総合機構などの部会員,専門委員を歴任 SASユーザー会名誉会員(だったはず) 3 講師紹介(続き) 著訳書(2015年以降のみ) 岩崎 学 (2015) 統計的因果推論.朝倉書店 岩崎 学・姫野哲人 (2017) スタンダード統計学基礎.培風館 岩崎 学 (2019) 事例で学ぶ!あたらしいデータサイエンスの教科書.翔 泳社 Holmes, D.(著),岩崎 学(訳)(2020) ビッグデータ超入門.東京化学同人 Rosenbaum. P. R.(著),阿部貴行・岩崎 学(共訳)(2021) ローゼンバウム 統計的因果推論入門.共立出版 その他,著書,共編・分担執筆:多数,学術論文:もっと多数,口頭発表, セミナー:さらに多数 4 270
2021年ノーベル経済学賞 Guido Imbens (Stanford) Joshua Angrist (MIT) David Card (UC Berkeley) 授賞理由;『自然実験』と呼ばれる手法 を使って労働市場に関する新たな知見 を提供した Angrist, J., Imbens, G. and Rubin, D. B. (1996). Identification of causal effects using instrumental variables (with discussion). Journal of the American Statistical Association, 91, 444‐472. Imbens, G. and Rubin, D. B. (2015) Causal Inference for Statistics, Social, and Biomedical Sciences: An Introduction. Cambridge University Press. 5 Donald B. Rubin and Paul R. Rosenbaum Rosenbaum, P. R. and Rubin, D. B. (1983) The central role of the propensity score in observational studies for causal effects. Biometrika, 70, 41‐55. 6 271
データサイエンスとは Data Everywhere 定義は確立していないが,基本的に (統計学+情報科学)×「社会展開」 これまでの統計分析の基本 + 新しい手法と考え方 データを集める ⇒ データが集まる: 各種センサーによるデータの自動収集,SNSデータ,小売業におけるPOSデータ 多種多様のデータ:数値,テキスト,画像,音声,動画 各種大規模データベースの構築と提供 政府,地方自治体の公的データのオープンデータ化(新統計法) Evidence‐Based Medicine (EBM), Evidence‐Based Policy Making (EBPM), Evidence‐Based Something 7 データサイエンティストとは? データサイエンティスト協会の示す概念図 データアナリティクス力 8 272
エピソード1:LASSO 回帰って何? Q(横浜市大4年生):LASSO 回帰,さっぱりわからないです。 A(岩崎):説明変数の選択に使いますね.説明変数候補が p 個あって y = b0 + b1x1 + b2x2 + ... + bpxp とすると,LASSO回帰では不要と見なされる変数の係数を自動的に 0 に してくれて便利 Q:この回帰の最大のメリットは変数を自動的に選択してくれるっていうとこ ですよね。それだったら重回帰分析じゃなくて、すべて LASSO 使って やっちゃえば勝手に変数選んでくれて楽じゃんとか思っちゃうんですよね。 重回帰分析やってごちゃごちゃ変えたりしないで。重回帰分析いらんとか 思っちゃいました(笑) 9 エピソード2:変数選択!? Q(横浜市大3年生):まず VIF で変数絞り込んで,LASSO 回帰やって, そのあとにロジスティック回帰かけたら,P 値が大きい変数があったので, 有意水準 α = 0.05 の基準で絞り込んだ結果,変数が2つしか残らなかっ たんですけど,このやり方ってOKですか? それから,ランダムフォレストもやったんですけど,ロジスティック回帰と 選ばれる変数違うし,やるたび結果が変わるんですよ.どうしてですか? A(岩崎):いろいろやってるね.ところで,変数を事前に吟味したの? Q:やってません.とにかく全部モデルにぶっ込みました. A:女の子が「ぶっ込む」なんて言っちゃだめだよ. 10 273
データサイエンスの現在と課題 使える(利用を待っている)データの量の爆発的増加(ビッグデータ) データの種類(数値,テキスト,画像,音声,動画)の多様化 分析手法の多様化と利便性の高いソフトウェアの提供 使い勝手の良いインターフェースによる分析手法の広がり データの分析に携わる人数の増加 ⇒ 新しいことは若い人に任せよう 様々な学習機会の拡充(講演会,セミナー,大学院) 統計検定,データサイエンティスト検定などの実施 ⇒ 分析手法の正しい使い方と適切な解釈を学ぶ機会の増加 コミュニケーション力の発揮(同じ結果でも解釈が違い得る) 11 (古典的)統計的データ解析の流れ 研究目的の設定 データ収集法の立案:実験,観察研究,調査 データの収集(モニタリング) データの電子化 データのチェック(クリーニング),マージ データの集計とグラフ化(予備的検討):記述統計 統計的推測ないしは予測:推測統計 分析結果のプレゼンテーション:文書化,口頭発表 意思決定(終了もしくは最初に戻る) 12 274
データサイエンスの流れ 研究目的の設定 ⇒ 明確にすべき データ収集法の立案:実験,観察研究,調査 ⇒ 考慮する データの収集(モニタリング) ⇒ 良質のデータの入力 データの電子化 ⇒ テキスト,画像,音声,動画などあらゆるもの データのチェック(クリーニング),マージ ⇒ 自動化・効率化・省力化 データの集計とグラフ化(予備的検討):記述統計 ⇒ 過不足なく 統計的推測ないしは予測:推測統計 ⇒ フレクシブルな分析手法 分析結果のプレゼンテーション:文書化,口頭発表 ⇒ 中立的に 意思決定(終了もしくは最初に戻る) ⇒ 役に立たなければ意味がない 13 C. R. Rao (1920 ‐ ) once said Statistical Science (1987) Vol. 2, p. 66 I believe that the two great methodologies in statistics are sample surveys, which is essentially collecting existing information, and design of experiments, where you generate observations to provide information on some given questions. If data are good, results should be obvious; the analysis is only to convince somebody that there is a real difference and so on. 1998年の講演で同じことを言いました 14 275
C. R. Rao はかつてこう言った Statistical Science (1987) Vol. 2, p. 66 私は、統計学における2つの偉大な方法論は、 基本的に既存の情報を収集するサンプル調査と、 与えられた質問に対する情報を提供するために 観測値を生成する実験計画法だと考えています。 データが良ければ、結果は明らかなはずです。 分析とは、実際に違いがあることを誰かに納得 させるためのものです。 1998年の講演で同じことを言いました. 15 ちなみに再度英語にすると Statistical Science (1987) Vol. 2, p. 66 I believe that the two great methodologies in statistics are sample surveys, which basically collect existing information, and design of experiments, which generate observables to provide information for a given question. If the data is good, the results should be obvious. Analysis is about convincing someone that there is in fact a difference. ほぼ完ぺき! 16 276
2021衆議院議員選挙 投票率:56%,ネット調査での投票率:93% 投票者のほうが非投票車より10倍ネット調査に回答 出典:「Yahoo!ニュース みんなの意見」より https://news.yahoo.co.jp/polls/domestic/42743/result 獲得議席:自261,公32,立96,共10,維41,国11,れ3,社1 【NHK】自212~253、公27~35、立99~141、共8~14、維34 ~47、国7~12、れ1~5、社0~2 【日テレ】自238、公31、立114、共10、維45、国12、れ2、社1 【テレ朝】自243、公32、立113、共12、維39、国12、れ0、社0 【TBS 】自239、公30、立115、共12、維40、国13、れ3、社1 【テレ東】自240、公30、立110、共11、維45、国13、れ0、社1 【フジ 】自230、公31、立130、共14、維39、国7、れ1、社1 「予想外れたから首括んなきゃ」と言って首括ったっ人はいない! 17 研究の種類 データの取得法での分類: 新たにデータを取る vs. 既存のデータを活用 新たにデータを取る場合,研究は大きく3つに分けられる(諸説あり) 実験研究 Experimental Study 観察研究 Observational Study 調査 Sample Survey • 目的:処置効果の立証 • 研究の計画が研究者の手で行える • 目的:処置効果の立証 • 研究の計画が研究者の手でできない • 目的:現状把握と構造の探索 • 全数調査,標本調査 18 277
因果,回帰,相関 変量間の関係は大きく3つに分けられる 因果関係 Causality 回帰関係 Regression 相関関係 Correlation Association • 一方向的(A → B)原因から結果 • 予測や制御に用いられる • 一方向的(A → B) • 必ずしも因果関係ではないが,予測には 使える(後半で詳しく述べる) • 双方向的(A ↔ B) • 関連があることしか言えず,一般に予測や 制御には使えない 岩﨑 学 (2015) 統計的因果推論.朝倉書店 19 女子学生の比率と英語検定試験の点数 ある大学の9学科の「女子学生比率」 (横軸 x)と「英語検定試験 の点数の 平均」 (縦軸 y)との関係(相関係数 r = 0.80) 回帰直線 y = 305.71 + 1.96 x (%) このデータをどう解釈するか,何が言えるか 20 278
回帰直線の解釈 回帰直線 y = 305.71 + 1.96 x (%) y:英語検定試験の点数,x:女子学生の比率 回帰分析の役割:記述,予測,制御(因果関係) 解釈1:x が大きいほど y も大きい(記述,予測) 解釈2:x を大きくすると y も大きくなる(制御) エコロジカル・インファレンス 集計データからの個人行動の再構築 解釈3:女子学生のほうが男子学生よりも英語能力 が高い 解釈4:女子学生が多い学科では,女子学生も男子 学生も同じく英語能力が高い このテーマで本を執筆する予定 21 データサイエンス(系)学部・学科 2017:滋賀大学データサイエンス学部 2018:横浜市立大学データサイエンス学部 2018:広島大学情報科学部データサイエンスコース 2019:武蔵野大学データサイエンス学部 2019:兵庫県立大学社会情報科学部 2020:長崎大学情報データ科学部 2021:立正大学データサイエンス学部 2021:群馬大学情報学部データサイエンスプログラム 2021:中央大学理工学部ビジネスデータサイエンス学科 2021:南山大学理工学部データサイエンス学科 2021:大阪工業大学理工学部データサイエンス学科 2021:鈴鹿医療科学大学医用工学部医療健康データサイエンス学科 22 279
データサイエンス(系)学部・学科(予定) 2022:日本工業大学先進工学部データサイエンス学科 2022:人間環境大学環境データサイエンス学科 2023:順天堂大学健康データ科学部 2023:一橋大学ソーシャル・データサイエンス学部 2023:京都女子大学データサイエンス学部 2023:名古屋市立大学データサイエンス学部 202?:下関市立大学データサイエンス学部 ・ ・ 23 データサイエンス(系)大学院 統計数理研究所(総合研究大学院大学)統計科学専攻 滋賀大学大学院データサイエンス研究科 横浜市立大学大学院データサイエンス研究科 武蔵野大学大学院データサイエンス研究科 立教大学大学院人工知能科学研究科 奈良先端科学技術大学院大学データサイエンスプログラム 兵庫県立大学大学院情報科学研究科データ科学コース 一橋大学大学院ソーシャル・データサイエンス研究科 順天堂大学大学院医学研究科データサイエンスコース ・ ・ 24 280
Undergraduate Statistics Degrees Up 474% Since 2010 American Statistical Association Amstat News (2021) October 1 25 米国での統計・生物統計の学位の推移 Statistics and Biostatistics 26 281
統計・生物統計の学位を提供する大学数 Bachelor' s and Master's degrees Ph. D. degrees 27 博士号 (Ph. D.) 授与数トップ5大学(米国) Statistics Ph. D. Biostatistics Ph. D. 28 282
博士号授与数トップ5大学(米国) Statistics Master Biostatistics Master 29 学士授与数トップ5大学(米国) Statistics 30 283
女性比率(米国) Statistics and Biostatistics 31 統計・データサイエンスが 目指すもの: データに基づいて現実の問題を解決する あらゆる種類のデータを正しく分析し,適切に解釈を加え,行動に移す データに関与する人口を増やすため,新しく有用なツールを提供する 特に,若い人の能力を十二分に発揮する環境を整える 忘れてはならないもの データ分析のプリンシプル よりよい社会の実現への実質的な貢献 32 284