02 「重回帰分析」の入門

Preview:

DESCRIPTION

心理・医学系研究者のためのデータ解析環境Rによる統計学の研究会http://blue.zero.jp/yokumura/Rhtml/session05.html での発表資料です。

Citation preview

「重回帰分析」の入門MULTIPLE LINEAR REGRESSION

2012年4月7日

      リウマチ膠原病内科 吉田和樹

公益社団法人日本心理学会

第5回「心理・医学系研究者のための による統計学の研究会」

本日の発表内容

回帰分析とは?

よく使われる回帰分析、他の分析との関係

重回帰分析の原理とモデルの仮定

交互作用とは?

Rでの重回帰分析、仮定の検証、交互作用の入れ方

回帰REGRESSIONとは?

t検定やANOVAは群間に差があるかどうかを検定する。

相関係数は2つの変数の関連

の強さをみる。

回帰では一つ以上の変数の値からアウトカムを予測する。

●●

●●●

0 5 10 15 20

0.0

0.5

1.0

1.5

2.0

data(thuesen)

blood.glucose

short.velocity

●●

●●●

0 5 10 15 20

0.0

0.5

1.0

1.5

2.0

data(thuesen)

blood.glucose

short.velocity

モデル式で考える

Rで使われるモデルの表記の方法

アウトカム変数 ~ 説明変数A

アウトカム変数 ~ 説明変数A + 説明変数B + 説明変数C

アウトカム変数 ~ 説明変数A + 説明変数B + A:B

SCALES/尺度について

Ratio scale/比尺度: 絶対温度, 身長, 体重, 回数

Interval scale/間隔尺度: 摂氏温度

Ordinal scale/順序尺度: 癌のステージ

Nominal scale/名義尺度: 疾患の有無, 都道府県

Stevens SS. On the Theory of Scales of Measurement. Science 1946;103:677-80.

連続変数 VS 離散変数

離散変数

連続変数無限に値がある

飛び飛び

Continuous

variable

Discrete

variable

Ratio

Interval

Nominal

Ordinal

ContinuousD

iscrete

Kleinbaum et al

Ratio

Interval

Nominal

Ordinal

ContinuousD

iscrete

Kleinbaum et al

身長 体重回数絶対温度

摂氏温度

出身都道府県

癌のステージ

さいころの目

疾患の有無

テニスの世界ランキング

性別

華氏温度

log変換年齢

各種手法とモデル式

t-test: 間隔/比尺度 ~ 名義尺度(2グループ)

ANOVA: 間隔/比尺度 ~ 名義尺度(≥3グループ)

ANCOVA: 間隔/比尺度 ~ 名義(≥3) + 間隔/比 + ...

Correlation: 間隔/比尺度 ~ 間隔/比尺度

Linear regression: 間隔/比尺度 ~ Any + Any + ...

アウトカム変数の種類

アウトカム変数の例

二変量解析 多変量解析

間隔/比尺度 血圧, 体重, 温度相関係数, 回帰分析, t

検定, ANOVA重回帰分析, ANOVA

二値名義尺度 死亡, 癌発症,

ICU入室χ2検定, Fisher’s, t検定, 傾向のχ2検定, Mann-Whitney

ロジスティック回帰分析

順序尺度 疾患のstage,

症状の重症度傾向のχ2検定, Mann-

Whittney, Spearman相関係数Proportional odds

regression

名義尺度(>2値)死亡原因,

がんの発生部位χ2検定, ANOVA,

Kruskal-WallisMultinomial logistic

regression

time to outcome死亡までの時間,

癌発症までの時間Log-rank検定 比例ハザードモデル

回数 感染の回数,

入院回数Poisson回帰分析, negative

binomial regression

Poisson回帰分析, negative

binomial regression

発生率 新規感染症の発生率,

交通事故の発生率z scores

Poisson回帰分析, negative

binomial regression

Katz MH. Multivariable Analysis.

重回帰分析の仕組み

単回帰分析の仕組み

library(ISwR)よりdata(thuesen)

心筋収縮速度 ~ 血糖(mmol/L)とのデータ。

これを線形関数(一次関数)で説明(近似)し、回帰直線(regression line)を引きたい。

●●

●●●

0 5 10 15 20

0.0

0.5

1.0

1.5

2.0

data(thuesen)

blood.glucose

short.velocity

●●

●●●

0 5 10 15 20

0.0

0.5

1.0

1.5

2.0

data(thuesen)

blood.glucose

short.velocity

単回帰分析の仕組み

yi = α + βxi + εi

α: 切片 (intercept)

β: 係数(regression coefficient, slope)

εi: 残差(residuals), N(0, σ2)の正規分布, 説明できない誤差

傾き一次関数

●●

●●●

0 5 10 15 20

0.0

0.5

1.0

1.5

2.0

data(thuesen)

blood.glucose

short.velocity

単回帰分析の仕組み

残差の平方和

を最小にするようなα, βを選ぶ。

least square method 最小二乗法

共分散の式の分子

分散の式の分子

重回帰分析の仕組み

y = α + β1x1 + β2x2 + β3x3 + ε (3変数の場合)

同様に実測値と予測値の差の二乗の合計(残差の平方和)を最小化するβj

βjが偏回帰係数(partial regression coefficient)

xjが単独で 1 上昇するときのyの変化量である

http://online.stat.psu.edu/online/development/stat501/08multiple/07multiple_matrix.html

行列計算で解かれる

β0 β1

β2 β3

よく使われる回帰分析

重回帰分析: “lm()”

ロジスティック回帰分析: “glm(family=binomial)”

比例ハザードモデル: “coxph()”

ポアソン回帰分析: “glm(family=poisson)”

→ いろいろあるが使い分けはアウトカム変数の型による。

アウトカム変数の種類

アウトカム変数の例

二変量解析 多変量解析

間隔/比尺度 血圧, 体重, 温度相関係数, 回帰分析, t

検定, ANOVA重回帰分析, ANOVA

二値名義尺度 死亡, 癌発症,

ICU入室χ2検定, Fisher’s, t検定, 傾向のχ2検定, Mann-Whitney

ロジスティック回帰分析

順序尺度 疾患のstage,

症状の重症度傾向のχ2検定, Mann-

Whittney, Spearman相関係数Proportional odds

regression

名義尺度(>2値)死亡原因,

がんの発生部位χ2検定, ANOVA,

Kruskal-WallisMultinomial logistic

regression

time to outcome死亡までの時間,

癌発症までの時間Log-rank検定 比例ハザードモデル

回数 感染の回数,

入院回数Poisson回帰分析, negative

binomial regression

Poisson回帰分析, negative

binomial regression

発生率 新規感染症の発生率,

交通事故の発生率z scores

Poisson回帰分析, negative

binomial regression

Katz MH. Multivariable Analysis.

アウトカム変数の変形

Linear regression: Y = α + β1x1 + β2x2 + β3x3

Logistic regression: ln(p/1-p) = ln(Pr(Y=1) / Pr(Y=0)) = α + β1x1 + β2x2 + β3x3

Poisson regression: ln(Y) = α + β1x1 + β2x2 + β3x3

Cox regression: ln(h(t) / h0(t)) = α + β1x1 + β2x2 + β3x3

モデルの仮定と検証

モデルの仮定x軸のどの値においてもyの値は

正規分布(Normality)かつ分散

が等しく(Homoscedasticity)、

お互いに独立(Independence)。

(t検定やANOVAの仮定と同じ)

xが増えるとyは直線的に増える

(Linearity)

残差(Residuals)を評価

wikipedia

交互作用とは

参考: Gordis, Epidemiology

交互作用

Interaction

2と3をあわせて7になったり、逆に4になったりするのが交互作用!!

数学的な交互作用モデルは生物学的な相互作用を必ずしも意味しない

イメージ

運動や食事に気をつけていない人は平均寿命が65歳だった運動のみをしている人は平均寿命が70歳だった健康な食事のみをしている人は平均寿命が70歳だった

じゃあ、両方とも気をつけている人はどうか?

数式化:交互作用無し

運動や食事に気をつけていない人は平均寿命が65歳だった運動のみをしている人は平均寿命が70歳だった

健康な食事のみをしている人は平均寿命が70歳だった

予測平均寿命 = 65 + 運動の有無 * 5 + 健康な食事の有無 * 5

有り = 1, 無し = 0とする

60

65

70

75

80

運動なし 運動あり

食事だめ群

食事よい群

交互作用があると

例1: 運動をして健康な食事をしている人は寿命がいずれでもない人とより15年長かった → positive interaction

例2: 運動をして健康な食事をしている人は寿命がいずれでもない人とより7年長かった → negative interaction

60

65

70

75

80

運動なし 運動あり

食事だめ群

食事よい群

60

65

70

75

80

運動なし 運動あり

食事だめ 食事よい

予測平均寿命 = 65 + 5*運動 + 5*食事 + 5*運動*食事

両方1のときだけ有効な交互作用項

80で予想した75より高い

60

65

70

75

80

運動なし 運動あり

食事だめ 食事よい

60

65

70

75

80

運動なし 運動あり

食事だめ 食事よい

予測平均寿命 = 65 + 5*運動 + 5*食事 - 3*運動*食事

両方1のときだけ有効な交互作用項

72で予想した75より低い

予想される値とは何か?

- +

- 3.0 9.0

+ 15.0 ?

Risk factor A

Risk

factor

B

ADDITIVE MODEL

- +

- 3.0 9.0

+ 15.0 21.0

Risk factor A

Risk

factor

B

+6

+12

+18

足し算モデル

MULTIPLICATIVE MODEL

- +

- 3.0 9.0

+ 15.0 45.0

Risk factor A

Risk

factor

B

×3

×5

×15

かけ算モデル

交互作用と尺度の関係

名義尺度A * 名義尺度B の時: 場合分けになり2×2表になる

間隔/比尺度A * 名義尺度B の時: 2本の傾きの異なるグラフ

間隔/比尺度A * 間隔/比尺度B の時: 傾きが連続的に変化する面

Dalgaard

間隔/比尺度 * 名義尺度の交互作用の場合

交互作用があると

傾きも変わる

交互作用がないと

切片のみ変化して

平行移動

名義尺度

X軸: 間隔/比尺度

いつ交互作用を検討するか

データを見る前にどの交互作用を検討するか決めておけ!

a priori, based on:

Clinical relevance: 結果が世の中に役に立つものを!

Plausibility: 原理的にあり得るものを!

Grobbee

やり過ぎは禁物

急性心筋梗塞が疑われた患者でaspirin(抗血小板薬)とstreptokinase(血栓溶解薬)の効果を検討したISIS-2 study

(1980)

Aspirinは生命予後を改善した!

しかし、星座ごとに検討すると双子座と天秤座の患者ではaspirinで予後が悪化。

星座はaspirinの効果に対する交互作用をもつ!Grobbee

 でやってみる

GINZBERG

car パッケージのGinzbergデータセット

82名の被検者での下記の3つの連続変数データ

adjsimp: 単純性。何でも白黒つけようとする傾向。

adjfatal: 運命論。運命に対して人は無力と考える傾向。

adjdep: ベックの抑うつ自己評価尺度。

data(Ginzberg)pairs(Ginzberg[,4:6])

## Model without interactionlm.ginz <- lm(data = Ginzberg, adjdep ~ adjsimp + adjfatal)summary(lm.ginz)

Call:lm(formula = adjdep ~ adjsimp + adjfatal, data = Ginzberg)

Residuals: Min 1Q Median 3Q Max -0.70946 -0.25204 -0.05741 0.21882 1.15001

Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 0.2492 0.1054 2.365 0.020501 * adjsimp 0.3663 0.1004 3.649 0.000471 ***adjfatal 0.3845 0.1004 3.829 0.000256 ***---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3812 on 79 degrees of freedomMultiple R-squared: 0.4332,! Adjusted R-squared: 0.4188 F-statistic: 30.19 on 2 and 79 DF, p-value: 1.823e-10

## Model without interactionlm.ginz <- lm(data = Ginzberg, adjdep ~ adjsimp + adjfatal)summary(lm.ginz)

Call:lm(formula = adjdep ~ adjsimp + adjfatal, data = Ginzberg)

Residuals: Min 1Q Median 3Q Max -0.70946 -0.25204 -0.05741 0.21882 1.15001

Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 0.2492 0.1054 2.365 0.020501 * adjsimp 0.3663 0.1004 3.649 0.000471 ***adjfatal 0.3845 0.1004 3.829 0.000256 ***---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3812 on 79 degrees of freedomMultiple R-squared: 0.4332,! Adjusted R-squared: 0.4188 F-statistic: 30.19 on 2 and 79 DF, p-value: 1.823e-10

adjdep = 0.2492 + 0.3663*adjsimp + 0.3845*adjfatal

## Model with interactionlm.ginz.int <- lm(data = Ginzberg, adjdep ~ adjsimp + adjfatal + adjsimp:adjfatal)summary(lm.ginz.int)

Call:lm(formula = adjdep ~ adjsimp + adjfatal + adjsimp:adjfatal, data = Ginzberg)

Residuals: Min 1Q Median 3Q Max -0.58251 -0.23705 -0.05099 0.17981 1.21560

Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -0.1366 0.2023 -0.676 0.501319 adjsimp 0.7736 0.2083 3.714 0.000381 ***adjfatal 0.7218 0.1811 3.987 0.000150 ***adjsimp:adjfatal -0.3168 0.1430 -2.216 0.029607 * ---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3721 on 78 degrees of freedomMultiple R-squared: 0.4668,! Adjusted R-squared: 0.4463 F-statistic: 22.76 on 3 and 78 DF, p-value: 1.103e-10

## Model with interactionlm.ginz.int <- lm(data = Ginzberg, adjdep ~ adjsimp + adjfatal + adjsimp:adjfatal)summary(lm.ginz.int)

Call:lm(formula = adjdep ~ adjsimp + adjfatal + adjsimp:adjfatal, data = Ginzberg)

Residuals: Min 1Q Median 3Q Max -0.58251 -0.23705 -0.05099 0.17981 1.21560

Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -0.1366 0.2023 -0.676 0.501319 adjsimp 0.7736 0.2083 3.714 0.000381 ***adjfatal 0.7218 0.1811 3.987 0.000150 ***adjsimp:adjfatal -0.3168 0.1430 -2.216 0.029607 * ---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3721 on 78 degrees of freedomMultiple R-squared: 0.4668,! Adjusted R-squared: 0.4463 F-statistic: 22.76 on 3 and 78 DF, p-value: 1.103e-10

adjdep = -0.1366 + 0.7736*adjsimp + 0.7218*adjfatal

- 0.3168*adjsimp*adjfatal

## Model diagnosticslayout(matrix(1:4, ncol = 2, byrow = TRUE))plot(lm.ginz.int)layout(1)

0.5 1.0 1.5

-0.5

0.0

0.5

1.0

Fitted values

Residuals

Residuals vs Fitted71

7063

-2 -1 0 1 2

-10

12

34

Theoretical Quantiles

Standardized residuals

Normal Q-Q71

7063

0.5 1.0 1.5

0.0

0.5

1.0

1.5

Fitted values

Standardized residuals

Scale-Location71

7063

0.0 0.1 0.2 0.3 0.4 0.5 0.6

-2-1

01

23

4

Leverage

Standardized residuals

Cook's distance 10.5

0.51

Residuals vs Leverage71

65

80

0.5 1.0 1.5

-0.5

0.0

0.5

1.0

Fitted values

Residuals

lm(adjdep ~ adjsimp + adjfatal + adjsimp:adjfatal)

Residuals vs Fitted

71

7063

アウトカム変数の予測値

X軸に関わらず残差

がゼロ周囲に均等に

ばらけているか?

残差

(予測値と実測値のずれ

)

Linearity

Homoscedasticity

-2 -1 0 1 2

-10

12

34

Theoretical Quantiles

Standardized residuals

lm(adjdep ~ adjsimp + adjfatal + adjsimp:adjfatal)

Normal Q-Q

71

7063

残差が正規分布して

いるかどうかをみ

る。正規分布なら斜

めの線にのっかる。

Normality

標準化した残差

0.5 1.0 1.5

0.0

0.5

1.0

1.5

Fitted values

Standardized residuals

lm(adjdep ~ adjsimp + adjfatal + adjsimp:adjfatal)

Scale-Location71

7063

標準化した残差の絶対値の平方根

Homoscedasticityアウトカム変数の予測値

X軸に関わらず残差が

均等にばらけているか?

0.0 0.1 0.2 0.3 0.4 0.5 0.6

-2-1

01

23

4

Leverage

Standardized residuals

lm(adjdep ~ adjsimp + adjfatal + adjsimp:adjfatal)

Cook's distance 10.5

0.51

Residuals vs Leverage

71

65

80

標準化した残差

影響の大きいは

ずれ値の検出

てこ比変な組み合わせ

の説明変数

Cookの距離

Dalgaard P. Introductory Statistics with R. 2nd Ed. 2008. Springer.

Gordis L. Epidemiology. 4th Ed. 2011. Elsevir.

Grobbee DE. Clinical Epidemiology. 1st Ed. 2009. Jones and Bartlett.

Kabacoff RI. R in Action. 1st Ed. 2011. Manning.

Katz MH. Multivariable Analysis: A practical guide for clinicians and public health researchers. 3rd Ed. 2011. Cambridge.

Kleinbaum. Applied Regression Analysis and Other Multivariable Methods. 4th Ed. 2008. Brooks/Cole.

KogoLab. アイスクリーム統計学 http://kogolab.chillout.jp/elearn/icecream/ 2003.

Pagano M, Gauvreau K. Principles of Biostatistics. 2nd Ed. 2000. Brooks/Cole.

Rothman KJ. Epidemiology: An introduction. 1st Ed. 2002. Oxford University Press.

Toyoda H. 回帰分析入門 -Rで学ぶ最新データ解析- 2012. 東京図書.

Matsuoka S. 初心者による初心者のためのロジスティック回帰分析. 2011. 本会 第一回

Tsuchiya M. 初心者による初心者のための線形混合モデル. 2011. 本会 第二回

Tsuchiya M. 初心者による初心者のための量的データの二変量解析. 2011. 本会 第三回

おまけ学習方法などについて

背景

初期研修: 2年

総合内科: 2年

リウマチ膠原病内科: 3年間

研修病院で研修医がよく働くので比較的勉強時間はとりやすい

外来は長期フォローでデータを取りやすい

生物学的抗リウマチ薬の実地臨床での効果副作用のまとめなどしていいます。

その他の背景

数学はあまり得意でなかった

プログラミングはLinuxのshell scriptで若干経験あり

なので、統計の勉強は”R言語の学習”として入ることで興味

を持てた

学習方法

最初はsupervisorの先生に他のパッケージで解析してもらった結果をRで再現して学習

他のデータにも応用できるように統計手法の選び方をまずは学習

統計手法の適切な使用を目指してその原理や仮定などを学習中

医学研究においては

導入に有用だった資料ハンバーガー統計学 (web)

アイスクリーム統計学 (web)

R-Tips (web)

生物統計と心理統計で頻用される手法がやや異なるので

Rの生物統計本ではこれがよかった。原著は2版に改訂。

多変量解析の実践的な正しい使い方(手法の選び方, 変数

の選び方, etc)の本。原著は3版に改訂。木原ら訳。他の

木原訳本シリーズも良書ぞろい。

Recommended