回帰分析・t検定・分散分析のプロシジャ使い分け

2.1K Views

April 15, 25

スライド概要

[第11回大阪sas勉強会]

profile-image

SAS言語を中心として,解析業務担当者・プログラマなのコミュニティを活性化したいです

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

2025年4月16日 第11回 大阪SAS勉強会 回帰分析・t検定・分散分析のプロシジャ使い分け 大山暁史

2.

モチベーション ・ 回帰分析をGLMプロシジャを用いて実施している文献と REGプロシジャを用いて実施している文献を見かけ、 どのように使い分けているのか気になった ・ 文献を漁ったが、プロシジャの推定法の違いに言及したものは多少あっても、 SAS 9.4での線形モデルのプロシジャの使い分けに関する文献はかなり少なかった 「先行試験で用いているから」という理由で、プロシジャを選択していませんか? Copyright©EPS All rights reserved. 2

3.

本発表について 回帰分析・t検定・分散分析のプロシジャの違いの概要を調査した プロシジャの選択理由を明確に説明できるようになること、 シチュエーションごとに適したプロシジャ選択をできるようになることへのヒントになれば幸いである <注意事項> ・ ods graphics をonにしている環境を前提にしています Copyright©EPS All rights reserved. 3

4.

目次 1.回帰分析 2.対応のない2標本t検定 3.対応のある2標本t検定 4.二元配置分散分析 5.まとめ Copyright©EPS All rights reserved. 4

5.

1.回帰分析 2.対応のない2標本t検定 3.対応のある2標本t検定 4.二元配置分散分析 5.まとめ Copyright©EPS All rights reserved. 5

6.

出力(REGプロシジャ) REGプロシジャはデフォルトで回帰診断のグラフを出力する (その分処理は遅い) proc reg data=sashelp.cars; model MPG_City = Cylinders horsepower MPG_Highway; run; quit; Copyright©EPS All rights reserved. 6

7.

出力(GLMプロシジャ) GLMプロシジャはタイプⅠ,タイプⅢ平方和も出力する proc glm data=sashelp.cars; model MPG_City = Cylinders horsepower MPG_Highway; run; quit; Copyright©EPS All rights reserved. 7

8.

出力(GLMプロシジャ) PLOTS=DIAGNOSTICS を指定すると、適合度診断のパネルを出力 PLOTS=RESIDUALS を指定すると、各説明変数の残差の散布図を出力 proc glm data=sashelp.cars plots=DIAGNOSTICS RESIDUALS; model MPG_City = Cylinders horsepower MPG_Highway; run; quit; 適合度診断パネルの内容 ・ scatter plots of residuals ・ scatter plots of absolute residuals ・ scatter plots of studentized residuals ・ observed responses by predicted values ・ studentized residuals by leverage ・ Cook's D by observation ・ Q-Q plot of residuals ・ residual histogram ・ residual-fit spread plot Copyright©EPS All rights reserved. 8

9.

出力(HPREGプロシジャ) REGプロシジャの上位互換的なプロシジャであるHPREGプロシジャ(HPはHigh Performanceの略)は、 AICなどの評価指標も出力する proc hpreg data=sashelp.cars; model MPG_City = Cylinders horsepower MPG_Highway; run; quit; Copyright©EPS All rights reserved. 9

10.

複数のモデル(REGプロシジャ) REGプロシジャは複数のmodelステートメントを使うことができる proc reg data=sashelp.cars; model MPG_City = Cylinders horsepower MPG_Highway; model MPG_City = Cylinders horsepower; model MPG_City = Cylinders; run; quit; Copyright©EPS All rights reserved. 10

11.

交互作用の考慮(GLMプロシジャ・HPREGプロシジャ) GLMプロシジャ 前処理なしで交互作用を考慮可能 proc glm data=sashelp.cars; model MPG_City = Cylinders horsepower MPG_Highway Cylinders * horsepower; run; quit; Copyright©EPS All rights reserved. HPREGプロシジャ 前処理なしで交互作用を考慮可能 proc hpreg data=sashelp.cars; model MPG_City = Cylinders horsepower MPG_Highway Cylinders * horsepower; run; quit; 11

12.

交互作用の考慮(REGプロシジャ) REGプロシジャ 前処理をしないと交互作用を考慮できない data cars_interaction; set sashelp.cars; if nmiss(Cylinders,horsepower)=0 then interaction=Cylinders * horsepower; run; proc reg data=cars_interaction; model MPG_City = Cylinders horsepower MPG_Highway interaction; run; quit; Copyright©EPS All rights reserved. 12

13.

カテゴリー変数の指定(GLMプロシジャ・HPREGプロシジャ) GLMプロシジャやHPREGプロシジャは説明変数にカテゴリー変数を含むことができる なお、カテゴリー変数はclassステートメントで指定する必要がある data cars_category; length horsepower_cat $6.; set sashelp.cars; if horsepower < 250 then horsepower_cat="WEAK"; else if 250 <= horsepower then horsepower_cat="STRONG"; run; proc glm data=cars_category; class horsepower_cat ; model MPG_City = horsepower_cat ; run; quit; Copyright©EPS All rights reserved. proc hpreg data=cars_category; class horsepower_cat ; model MPG_City = horsepower_cat ; run; quit; 13

14.

カテゴリー変数の指定(REGプロシジャ) REGプロシジャはclassステートメントが使用できないため、説明変数にカテゴリー変数の情報を 含めたい場合にはダミー変数(0または1の数値型に変換した変数)を作成しなければならない data cars_category; length horsepower_cat $6.; set sashelp.cars; if horsepower < 250 then horsepower_cat="WEAK"; else if 250 <= horsepower then horsepower_cat="STRONG"; run; /* デザイン行列を構築するGLMMODプロシジャを用いてカテゴリー変数をダミー変数に置き換える(データステップでの処理でも可)*/ proc glmmod data=cars_category outdesign=_dummy; class horsepower_cat ; model MPG_City = horsepower_cat ; run; proc reg data=_dummy; model MPG_City = Col2 run; quit; Copyright©EPS All rights reserved. ; 14

15.

多重共線性の指標確認(REGプロシジャ・HPREGプロシジャ) REGプロシジャ・HPREGプロシジャはトレランスとVIF(分散拡大)を出力可能 proc reg data=sashelp.cars; model MPG_City = Cylinders horsepower MPG_Highway / tol vif; run; quit; ※トレランスが0.1以下、VIFが10以上だと、多重共線性(説明変数間の相関関係)があると考えられる Copyright©EPS All rights reserved. 15

16.

変数選択(REGプロシジャ) REGプロシジャは変数選択を実施できる(交互作用項は扱えない) proc reg data=sashelp.cars; model MPG_City = Cylinders horsepower MPG_Highway / selection=stepwise slentry=0.5 slstay=0.5; run; quit; Copyright©EPS All rights reserved. 16

17.

変数選択(GLMSELECTプロシジャ) GLMSELECTプロシジャは変数選択を実施できる(カテゴリー変数や交互作用項も扱える) proc glmselect data=cars_category; class horsepower_cat ; model MPG_City = horsepower_cat Cylinders MPG_Highway Cylinders*MPG_Highway / selection=stepwise(select=SL slentry=0.5 slstay=0.5); run; quit; Copyright©EPS All rights reserved. 17

18.

変数選択(HPREGプロシジャ) HPREGプロシジャは変数選択を実施できる(カテゴリー変数や交互作用項も扱える) proc hpreg data=cars_category; class horsepower_cat ; model MPG_City = horsepower_cat Cylinders MPG_Highway Cylinders*MPG_Highway selection method=stepwise (select=sl sle=0.5 sls=0.5); run; quit; Copyright©EPS All rights reserved. ; 18

19.

Ridge回帰(REGプロシジャ) REGプロシジャはRidge回帰を実施できる proc reg data=sashelp.cars outest=chk ridge=0.001 to 0.02 by 0.001; model MPG_City = Cylinders horsepower MPG_Highway; run; quit; Copyright©EPS All rights reserved. 19

20.

Lasso回帰(GLMSELECTプロシジャ・HPREGプロシジャ) GLMSELECTプロシジャやHPREGプロシジャはLasso回帰を実施できる proc glmselect data= sashelp.cars ; model MPG_City = Cylinders horsepower MPG_Highway / selection=lasso; run; quit; proc hpreg data=sashelp.cars ; model MPG_City = Cylinders horsepower MPG_Highway ; selection method=lasso ; run; quit; Copyright©EPS All rights reserved. 20

21.

回帰分析まとめ(REG vs HPREG vs GLM vs GLMSELECT) プロシジャ名 適しているシチュエーション(例) REG ・ 回帰診断のグラフを確認したい場合 ・ 複数のモデルを1回でまとめて実行したい場合 ・ 多重共線性の確認をしたい場合 ・ Ridge回帰を実施したい場合 HPREG ・ AICなどの統計的評価指標も出力したい場合 ・ 交互作用も含めて検討したい場合 ・ 説明変数にカテゴリー変数がある場合 ・ 多重共線性の確認をしたい場合 ・ カテゴリー変数や交互作用項を含めて変数選択をしたい場合 ・ Lasso回帰を実施したい場合 GLM ・ タイプⅠ, タイプⅢ平方和を確認したい場合 ・ 交互作用も含めて検討したい場合 ・ 説明変数にカテゴリー変数がある場合 GLMSELECT ・ カテゴリー変数や交互作用項を含めて変数選択をしたい場合 ・ Lasso回帰を実施したい場合 Copyright©EPS All rights reserved. 21

22.

1.回帰分析 2.対応のない2標本t検定 3.対応のある2標本t検定 4.二元配置分散分析 5.まとめ Copyright©EPS All rights reserved. 22

23.

Studentのt検定・Welchのt検定(TTESTプロシジャ) ・ Studentのt検定(Pooled)とWelchのt検定(Satterthwaite)の両方を出力 ・ 等分散性の検定結果・データの分布・Q-Qプロットを出力 proc ttest data= testdata; class ARM; var AVAL; run; data testdata; length SUBJID 8. ARM $10. ; input SUBJID ARM AVAL ARMCD; datalines ; 1 実薬群 153 1 2 実薬群 153 1 3 実薬群 152 1 4 実薬群 150 1 5 実薬群 151 1 6 実薬群 151 1 7 実薬群 148 1 8 実薬群 155 1 9 実薬群 154 1 10 実薬群 153 1 11 対照群 140 2 12 対照群 145 2 13 対照群 143 2 14 対照群 144 2 15 対照群 154 2 16 対照群 153 2 17 対照群 149 2 18 対照群 149 2 19 対照群 146 2 20 対照群 141 2 ; run; Copyright©EPS All rights reserved. 23

24.

Studentのt検定(GLMプロシジャ) 以下のコードではデータ分布・ Studentのt検定の結果・群間差を出力 proc glm data= testdata; class ARM ; model AVAL=ARM /nouni; /* /nouniを指定しないと分散分析結果・R2値・Type Ⅰ/Ⅲ平方和等も出力される*/ lsmeans ARM /tdiff = control("対照群")cl; run; quit; Copyright©EPS All rights reserved. 24

25.

Welchのt検定(GLMプロシジャ) 以下のコードではデータ分布・ Welchのt検定の結果を出力 proc glm data= testdata; class ARM ; model AVAL=ARM /nouni; means ARM /welch; run; quit; Copyright©EPS All rights reserved. 25

26.

Studentのt検定(MIXEDプロシジャ) 以下のコードでは共分散パラメータの推定・適合度統計量・固定効果のType Ⅲ検定・ Studentのt検定の結果を出力 proc mixed data= testdata; class ARM ; model AVAL=ARM ; lsmeans ARM /pdiff = control("対照群") cl ; run; Copyright©EPS All rights reserved. 26

27.

Welchのt検定(MIXEDプロシジャ) 以下のコードでは反復履歴・共分散パラメータの推定・適合度統計量・帰無モデルの尤 度比検定・固定効果のType Ⅲ検定・Welchのt検定の結果を出力 proc mixed data=testdata; class ARM ; model AVAL=ARM /ddfm=satterth; repeated /group=ARM ;/* repeatedは誤差項の分散共分散行列を指定するステートメント。group=オプションでは、指定した変数の水準ごとの共分散パラメータを推定できる*/ run; 群ごとに推定した共分散パラメータを用いてt検定の結果を得る Copyright©EPS All rights reserved. 27

28.

対応のないt検定まとめ(TTEST vs GLM vs MIXED) ・ StudentsとWelchのどちらも興味がある場合はTTESTプロシジャが便利 ・ 書き方がシンプルなので基本的にはTTESTプロシジャを使うことで良いと考える ちなみにSAS Version6以前のTTESTプロシジャによるWelch検定は GLMプロシジャやMIXEDプロシジャで結果を再現できないため注意 Welch検定(Sattethwaite近似の自由度による検定)において、 現行のSASではTTESTプロシジャ, GLMプロシジャ, MIXEDプロシジャのいずれも、 小数点自由度に対応した累積分布関数の値を使用しているが、 SAS Version6以前のTTESTプロシジャは p値を求める時に線形近似(線形補間)を用いている (小数点の自由度に対応したp値を求める時、それを含む2つの整数値のp値から線形補間して計算を実施) https://www.sas.com/offices/asiapacific/japan/service/technical/faq/list/body/stat027.html Copyright©EPS All rights reserved. 28

29.

1.回帰分析 2.対応のない2標本t検定 3.対応のある2標本t検定 4.二元配置分散分析 5.まとめ Copyright©EPS All rights reserved. 29

30.

対応のあるt検定(MEANSプロシジャ・UNIVARIATEプロシジャ) 2群の差を格納した変数に対する1標本t検定としてt値を算出することができる proc means data=testdata_paired noprint; var CHG; output out=outdata_means T=T PROBT=PROBT; run; proc univariate data=testdata_paired noprint; var CHG; output out=outdata_univariate T=T PROBT=PROBT; run; data testdata_paired; input SUBJID PRE POST; datalines ; 1 153 155 2 153 160 3 152 150 4 150 158 5 151 159 6 151 161 7 148 161 8 155 167 9 154 156 10 153 155 ; run; data testdata_paired; set testdata_paired; /* 対応のある2群の差分を変数chgに格納 */ CHG=POST-PRE; run; Copyright©EPS All rights reserved. 30

31.

対応のあるt検定(TTESTプロシジャ) ・ pairedオプションに第1引数*第2引数を指定すると、第1引数-第2引数の差を検定する ・ 全症例の推移や一致度のグラフを出力するので視覚的に理解しやすい proc ttest data=testdata_paired; paired POST*PRE; /*この場合はPOST-PREを検定する*/ run; Copyright©EPS All rights reserved. 31

32.

対応のあるt検定(TTESTプロシジャ) pairedオプションを用いずに、 2群の差を格納した変数に対する1標本t検定としてt値を算出することもできる proc ttest data=testdata_paired; var CHG; run; Copyright©EPS All rights reserved. 32

33.

対応のあるt検定(MIXEDプロシジャ) 対応のあるデータを縦積みにして、MIXEDプロシジャでt値を算出することもできる data v_stacked; set testdata_paired; AVAL=PRE; PAIRNUM=2; /*2つの対応する値を区別する変数。POST-PREの差に興味があるためPOSTに1,PREに2を設定*/ output; AVAL=POST; PAIRNUM =1; output; run; proc mixed method=type3; class SUBJID PAIRNUM; model AVAL= PAIRNUM /ddfm=kenwardroger; random SUBJID; /* 個人差を考慮するため、変量効果にSUBJIDを設定 */ lsmeans PAIRNUM /tdiff cl; run; Copyright©EPS All rights reserved. 33

34.

対応のあるt検定まとめ(MEANS vs UNIVARIATE vs TTEST vs MIXED) ・ いずれの場合も検定の方向(差の向き)に留意する必要がある ・ データを視覚的に理解したい場合はTTESTプロシジャのpairedオプションが使いやすい ・ MEANSプロシジャ, UNIVARIATEプロシジャ, TTESTプロシジャはコードがシンプル Copyright©EPS All rights reserved. 34

35.

1.回帰分析 2.対応のない2標本t検定 3.対応のある2標本t検定 4.二元配置分散分析 5.まとめ Copyright©EPS All rights reserved. 35

36.

出力(ANOVAプロシジャ) ANOVAプロシジャはアンバランスドデータ(要因の各水準に割付られたデータの数が等しくない)を 適切に解析できない data exp; input A $ B $ Y @@; datalines; A1 B1 12 A1 B1 14 A1 B2 11 A1 B2 9 A2 B1 20 A2 B1 18 A2 B2 17 ; run; proc anova data=exp; class A B; model Y=A B A*B; run; quit; Copyright©EPS All rights reserved. 36

37.

分散分析(GLMプロシジャ・MIXEDプロシジャ) ・ GLMプロシジャやMIXEDプロシジャはアンバランスドデータも解析できる ・ 今回のモデルの場合、GLMプロシジャは交互作用プロットを出力した proc glm data=exp; class A B; model Y=A B A*B; run; quit; Copyright©EPS All rights reserved. 37

38.

分散分析まとめ(ANOVA vs GLM vs MIXED) ANOVAプロシジャを用いるメリットを見いだせなかった 基本的に分散分析はGLMプロシジャかMIXEDプロシジャを用いることが良いと考える Copyright©EPS All rights reserved. 38

39.

1.回帰分析 2.対応のない2標本t検定 3.対応のある2標本t検定 4.二元配置分散分析 5.まとめ Copyright©EPS All rights reserved. 39

40.

まとめ ・ 回帰分析・t検定・分散分析についてプロシジャ選択の材料になる情報を示した ・ それぞれのプロシジャの特徴を理解した上で解析することが重要 ・ 色々とコードを動かす中でプロシジャの挙動の理解が深まったので、 文献を読むだけでなく、自分でコードを動かす大切さを改めて感じた 皆様がどのようにプロシジャを選択しているか(選択すべきと考えているか)、 ご意見ございましたらぜひコメントいただけますと幸いです Copyright©EPS All rights reserved. 40

41.

参考文献 [1]SAS/STAT 15.2 User’s Guide The GLM Procedure ODS Graphics https://documentation.sas.com/doc/en/statug/15.2/statug_glm_details71.htm [2]中川雄貴 デザイン行列 SASユーザー総会2024 https://sas-user2024.ywstat.jp/download.html?n=45&key=paper [3]Learning with Jelly PROC GLM vs PROC REG and PROC ANOVA: SAS for Beginners (Lesson 28) https://www.youtube.com/watch?v=So1UWL2fHLw [4]杉本真理 t検定の基礎 (Studentのt検定とWelchのt検定) 第9回大阪SAS勉強会 https://www.docswell.com/s/6484025/ZQ8DYN-2024-03-28-051934 [5]TTESTプロシジャのWelch検定が、GLM,MIXEDプロシジャのものと異なる。 SAS FAQ https://www.sas.com/offices/asiapacific/japan/service/technical/faq/list/body/stat027.html [6]高田浩成 重回帰分析における多重共線性について 第9回大阪SAS勉強会 https://www.docswell.com/s/6484025/5P9DDQ-2024-03-26-062816 [7]SAS/STAT 15.2 User’s Guide PROC GLM: PROC GLM for Unbalanced ANOVA https://support.sas.com/documentation/cdl/en/statug/63033/HTML/default/viewer.htm#statug_glm_s ect005.htm [8]横溝孝明 他 臨床試験データへのGLMSELECT procedureの適用 SASユーザー総会2010 https://www.sas.com/content/dam/SAS/ja_jp/doc/event/sas-user-groups/usergroups10-a-06.pdf [9]ネイチャーインサイト株式会社 線形回帰の過学習を抑えよう ~Ridge回帰とLasso回帰~ https://www.n-insight.co.jp/niblog/20190917-1351/ Copyright©EPS All rights reserved. 41

42.

参考文献 [10]REGプロシジャでCLASSステートメントがなかったり,交互作用の事前処理が必要な点はHPREGで改善されているよという話 データステップ100万回 SAS新手一生 https://sas-tumesas.blogspot.com/2025/03/regclasshpreg.html [11]臨床評価研究会(ACE) 基礎解析分科会 新版 実用SAS生物統計ハンドブック 第2版 [12]Jack S. Nyberg The Paired T-Test: Does PROC MIXED Produce the Same Results as PROC TTEST? PharmaSUG 2004 https://www.lexjansen.com/pharmasug/2004/Posters/PO05.pdf [13] SASのproc hpregで線形回帰 Shingoの数学ノート https://mathshingo.chillout.jp/blog42.html Copyright©EPS All rights reserved. 42