Rで統計解析入門(6) 分散分析と共分散分析

本日のメニュー
1
1.

分散分析
 イントロ データ「DEP」による例示

2.

2

共分散分析
分散分析

分散分析
分散分析：要因が目的変数に影響を与えているかどうかを調べる手法



例：薬剤が QOL に影響を与えるか ⇒ 薬剤は効果があるか
平方和：「平均からの距離の 2 乗」の和（＝ ばらつき，変動）例 薬剤 QOL への影響をみる場合，以下の平方和が考えられる
例：薬剤の
影響を
場合 以
方和が考 られ

総平方和（SST）：薬剤の平方和と誤差の平方和の和

薬剤の平方和（SSG）：意味のある変動，興味のある変動



誤差の平方和（SSE）：意味のない変動

以以下の方法で薬剤が方法 薬剤が QOL に影響を与えているかどうかを調べるに影響を与かど かを調3



薬剤の平方和が誤差の平方和（意味のない変動）と同じ⇒ 薬剤の影響は誤差と同程度 ⇒ 薬剤は QOL に影響を与えない ⇒ 効果なし



薬剤の平方和が誤差の平方和（意味のない変動）よりも大きい⇒ 薬剤の影響は誤差より大きい ⇒ 薬剤は QOL に影響を与える ⇒ 効果あり

分散分析の例
薬剤

A

A

A

B

B

B

QOL

1

2

3

4

5

6

QOL に関するデータ（データ「DEP」とは別のもの）



GROUP：薬剤の種類（A，B）



QOL：QOL の点数（数値）⇒ 点数が大きい方が良い

以下の平方和を求める



4



総平方和（Sum of Squares for Total；SST）



薬剤の平方和（Sum of Squares for Group；SSG）



誤差の平方和（Sum of Squares for Error；SSE）

分散分析の例
薬剤

A

A

A

B

B

B

QOL

1

2

3

4

5

6



総平方和（SST）：（各データ－全平均）2 の総和



薬剤の平方和（SSG）：（各薬剤の平均－全平均）2 の総和



誤差の平方和（SSE）：（各データ－各薬剤の平均）2 の総和

F=が 1 に近い：薬剤の効果はない
薬剤の効果はない

1 より大きい：薬剤の効果はある

5

平方和の計算関数 lm() と関数 Anova() の組み合わせで計算できる

> GROUP <‑ c("A","A","A","B","B","B")> QOL<‑ c(1,2,3,4,5,6)> result <‑ lm(QOL
GROUP)> install.packages("car", dep=T)# パッケージ car のインストール> library(car)# パッケージ car の呼び出し> Anova(result, Type="II")# 分散分析表（Type II 平方和）
Response: QOL
Sum Sq Df F value Pr(>F)
GROUP
13.5 113.5 0.02131 *Residuals
4.0 4‑‑‑
Signif. codes: 0

6

***

0.001

**

0.01

*

0.05

.

0.1

1

※ Type II とは何か，については後述

平方和の計算> Anova(result, Type="II")# 分散分析表（Type II 平方和）
Response: QOL
Sum Sq Df F value Pr(>F)
GROUP
13.5 113.5 0.02131 *Residuals
4.0 4

薬剤 平方和（薬剤の平方和（SSG）：13.5）



誤差の平方和（SSE）： 4.0



総平方和（SST）：13 5 + 4
総平方和（SST）：13.5
4.0
0 = 1717.5
5

F = { 13.5/(2-1) } ÷ { 4.0/(6-2) } = 13.5

7



検定の帰無仮説 H0：F = 1 （薬剤の効果はなし）

F が 1 かどうかの検定結果 p = 0.02131 ⇒ 有意なので F ≠ 1

よって薬剤の効果あり※ p 値が 5%より大きいか小さいかで判定しています平方和の計算
地道に計算することも可> mean(QOL); mean(QOL[1:3]); mean(QOL[4:6]) # 全平均，Aの平均，Bの平均[1] 3.5[1] 2[1] 5> ( SST <‑ sum( (QOL‑3.5)^2 ) )[1] 17.5> ( SSG <‑ 3*(2‑3.5)^2 + 3*(5‑3.5)^2 )[1] 13.5> ( SSE <‑ sum( (QOL[1:3]‑2)^2 ) + sum( (QOL[4:6]‑5)^2 ) )
[1] 4
> ( F
<‑ ( SSG/(2‑1) ) / ( SSE/(6‑2) ) )[1] 13.5> 1‑pf(F, 1, 4)[1] 0.02131164
8図による平方和の説明

0

1

2

3

QOL
Q

4

5

6

7

> plot(QOL, ylim=c(0,7), xaxt="n")> axis(1, 1:6, GROUP)

A

9

A

A

B
Index

B

B

図による平方和の説明

総平方和（SST）：（各データ－全平均）2 の総和

67⇒ 「各データ」と「全平均」の距離の 2 乗を足し算している

5

2.52=6.25

3

QOL
Q

4

0.52=0.25

全平均

0.52=0.25

2

1.52=2.25

1.52=2.25

0

1

2.5
2
52=6.25
=6 25

A

10

A

A

B
Index

B

B

図による平方和の説明
薬剤の平方和（SSG）：（各薬剤の平均－全平均）2 の総和⇒「データが属する薬剤の平均値」と「全平均」の距離の 2 乗を足し算

67⇒ 値が小さい：薬剤の効果なし，値が大きい：薬剤の効果あり

5

B 平均
Bの平均

QOL
Q

4

1.52=2.25 1.52=2.25 1.52=2.25
1.52=2.25 1.52=2.25 1.52=2.25

Aの平均

0

1

2

3

全平均

A

11

A

A

B
Index

B

B

図による平方和の説明


誤差の平方和（SSE）：（各データ－各薬剤の平均）2 の総和⇒「データ」と「データが属する薬剤の平均値」の距離の 2 乗を足し算

67⇒「総平方和から薬剤の平方和を引いた残り（ゴミ）」の方が理解しやすい？

5

0

12=1

B 平均
Bの平均

3

QOL
Q

4

12=1

0

12=1

2

Aの平均

0

1

12=1

A

12

A

A

B
Index

B

B

図による平方和の説明

B

B

B

大きい
大きい

A

A

B

B

薬剤の効果あり0 1 2 3 4 5 6 7

QOL
A

A

F = 13.5 (p=0.0213)

A

13

A

B

0 1 2 3 4 5 6 7

0 1 2 3 4 5 6 7

QOL
OL

A

QOL
OL

QOL

0 1 2 3 4 5 6 7

薬剤の平方和が誤差の平方和よりも大きい ＝ 薬剤の効果あり⇒「QOL の変動（平方和）」を「薬剤の平均からの変動（平方和） 」
を代わりに使うことで，ある程度説明することが出来るという状態



A

A

B

B

B

F = 1.5 (p=0.2879)

誤差平方和
よりも小さい
A

A

A

B

B

薬剤の効果なし

B【参考】前の頁のグラフを作成するプログラム> par(mfrow=c(2,1))

> QOL

> QOL

> plot(QOL, ylim=c(0,7), xaxt="n")<‑ c(1,2,3,4,5,6)<‑ c(2,3,4,3,4,5)> plot(QOL, ylim=c(0,7), xaxt="n")> axis(1, 1:6, GROUP)> axis(1, 1:6, GROUP)> abline(h=3.5, col="blue")> abline(h=3.5, col="blue")

> QOL

> QOL

> plot(QOL, ylim=c(0,7), xaxt="n")<‑ c(2,2,2,5,5,5)<‑ c(3,3,3,4,4,4)> plot(QOL, ylim=c(0,7), xaxt="n")> axis(1, 1:6, GROUP)> axis(1, 1:6, GROUP)> segments(1,3, 3,3, col="red")> segments(1,2, 3,2, col="red")> segments(4,4, 6,4, col="orange")> segments(4,5, 6,5, col="orange")> abline(h=3.5, col="blue")> abline(h=3.5, col="blue")14本日のメニュー
分散分析

1
1.

 イントロ データ「DEP」による例示

2.

15

共分散分析
分散分析

準備：データ「DEP」の読み込み
データ「DEP」を以下からダウンロードする1.

http://www.cwk.zaq.ne.jp/fkhud708/files/dep.csv
2.

ダウンロードした場所を把握する ⇒ ここでは「c:/temp」とする

3.

R を起動し，2. の場所に移動し，データを読み込む

4.

データ「DEP」から薬剤 A と B のデータを抽出> setwd("c:/temp")# dep.csv がある場所に移動> getwd()# 移動できたかどうか確認> DEP <‑ read.csv("dep.csv")# dep.csv を読み込む> AB <‑ subset(DEP, GROUP != "C")# 薬剤 A と B のデータを抽出> AB$GROUP <‑ factor(AB$GROUP)# 薬剤の水準を 2 カテゴリに> AB$GROUP <‑ relevel(AB$GROUP, ref="B") # ベースを「B」に変更
16

準備：架空のデータ「DEP」の変数


GROUP：薬剤の種類（A，B，C）



QOL：QOL の点数（数値）⇒ 点数が大きい方が良い

EVENT：改善の有無（ 1：改善あり，2：改善なし）⇒ QOLの点数が 5 点以上である場合を「改善あり」とする



DAY：観察期間（数値 単位は日）
DAY：観察期間（数値，単位は日）PREDRUG：前治療薬の有無（YES：他の治療薬を投与したことあり，
NO：投与したことなし）



DURATION：罹病期間（数値，単位は年）

17準備：架空のデータ「DEP」（ 部）
準備：架空のデータ「DEP」（一部）
GROUP
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
B
B
B
B
B
B
B
B
B
B

QOL
15
13
11
11
10
9
8
8
6
6
4
3
3
3
1
6
5
4
2
2
13
12
11
4
4
5
5
4
3
3

EVENT
1
1
1
1
1
1
1
1
1
1
2
2
2
2
2
1
1
2
2
2
1
1
1
2
2
1
1
2
2
2

DAY
50
200
250
300
350
400
450
550
600
100
250
500
750
650
1000
150
700
800
900
950
380
880
940
20
560
320
940
80
140
160

PREDRUG
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
YES
YES
YES
YES
YES
NO
NO
NO
NO
NO
YES
YES
YES
YES
YES

DURATION
1
3
2
4
2
2
4
2
5
7
4
6
3
7
8
6
5
7
12
10
9
5
2
7
2
11
3
6
7
13

【復習】交絡の有無の判定方法
興味のある因子が薬剤，「前治療の有無」が交絡因子かどうかを判定する
以下のモデルで回帰分析し，薬剤の効果（薬剤に関する傾き β1 ）が

変わる場合，「前治療の有無」は交絡因子



「薬剤のみ」のモデル ：QOL＝ β0 ＋ β1×薬剤

「薬剤＋前治療の有無」のモデル：QOL β0 ＋ β1×薬剤 ＋ β2×前治療の有無「薬剤＋前治療の有無」のモデル：QOL＝薬剤の効果が変わる ＝「分散分析の結果，薬剤の効果が変わる」と読み替えて，分散分析表から交絡の有無を判定してみる

19

交絡が起きているかの判定> result <‑ lm(QOL GROUP, data=AB)> Anova(result, Type="II")Response: QOL
Sum Sq Df F value Pr(>F)
GROUP
62.5 1 4.2035 0.04728 *Residuals 565.0 38# 薬剤のみのモデル# 分散分析表（Type II 平方和）> result <‑ lm(QOL GROUP+PREDRUG, data=AB)> Anova(result, Type="II")Response: QOL
Sum Sq Df F value
Pr(>F)
GROUP
0.0 1
0.000 1.0000000
PREDRUG
187.5 1 18.378 0.0001243 ***Residuals 377.5 37# 薬剤＋前治療の有無のモデル# 分散分析表（Type II 平方和）

薬剤のみのモデル ：薬剤の p 値 = 0.04728（薬剤の効果あり）



薬剤+前治療の有無のモデル：薬剤の p 値 = 1.00...（薬剤の効果なし）⇒⇒「効果あり」から「効果なし」に変わっているので交絡が起きているが20※ p 値が 5%より大きいか小さいかで判定しています【復習】交互作用があるかどうかの判定方法「薬剤×前治療の有無」の交互作用があるかどうかを判定する場合
以下のモデルで回帰分析し，交互作用項の効果（傾き β3 ）が



0 でない変わる場合，交互作用あり「薬剤＋前治療の有無＋薬剤×前治療の有無」のモデル：
QOL ＝ β0 ＋ β1 ×薬剤 ＋ β2×前治療の有無＋ β3×薬剤×前治療の有無交互作用項の効果が 0 でない＝「分散分析の結果，交互作用の効果がある」と読み替えて，分散分析表から交互作用の有無を判定してみる

21

交互作用があるかどうかの判定> result <‑ lm(QOL GROUP*PREDRUG, data=AB)> Anova(result, Type="II")Anova Table (Type II tests)# 交互作用モデル（薬剤×前治療）# 分散分析表（Type II 平方和）

Response: QOL
Sum Sq Df F value
Pr(>F)GROUP
0.0 1 0.0000 1.0000000
PREDRUG
187.5 1 18.6053 0.0001196 ***GROUP:PREDRUG 14.7 1 1.4587 0.2350191
Residuals
362.8 36‑‑‑
Signif. codes: 0 *** 0.001 ** 0.01 *




0.05

.

0.1

1

検定の帰無仮説 H0：F = 1 （交互作用の効果はない）
交互作用項の p 値 = 0.2350（交互作用の効果なし）⇒ 交互作用はなさそう22※ p 値が 5%より大きいか小さいかで判定しています本日のメニュー
分散分析

1
1.

 イントロ データ「DEP」による例示

2.

23

共分散分析
分散分析

分散分析と共分散分析
前頁までで紹介した手法で QOL に影響を与える因子を調べる際，


モデルの中の因子が全てカテゴリ変数（薬剤，性別，前治療の有無等）⇒ 分散分析



カテゴリ変数が 1 つだけ（薬剤）入っている：一元配置分散分析



カテゴリ変数が 2 つ（薬剤+前治療の有無）入っている：二元配置分散分析つ（薬剤 前治療の有無）入 ている：二元配置分散分析



カテゴリ変数が 3 つ入っている場合：三元配置分散分析



カテゴリ変数が 4 つ・・・：四元配置分散分析

モデルの中にカテゴリ変数と連続変数（年齢や罹病期間等）が混在⇒ 共分散分析

ここではモデルに「薬剤」と「罹病期間」を入れてみる
24

QOL に関する共分散分析


以下のモデルについて共分散分析を行い回帰式と分散分析表を求める
QOL ＝ β0 ＋ β1×薬剤 ＋ β2×罹病期間 （薬剤 → 1：A，0：B）⇒ QOL ＝ 7.89 ＋ 1.29×薬剤 － 0.53×罹病期間 となった
> result <‑ lm(QOL> summary(result)

GROUP+DURATION, data=AB)# 薬剤＋罹病期間のモデル# 結果の要約を表示

Coefficients:
Estimate Std. Error t value Pr(>￨t￨)(Intercept)
7.89661.47775.344 4.85e‑06 ***GROUPA
1.29071.16781.105 0.27619
DURATION‑0.5375
0.1732 ‑3.102 0.00367 **‑‑‑Signif. codes: 0
***
0.001
**
0.01
*
0.05

25

.

0.1

1

β0：切片（Intercept）

QOL に関する共分散分析
回帰式 QOL ＝ 7.89 ＋ 1.29×薬剤 － 0.53×罹病期間 （薬剤→1：A，0：B）
薬剤 A の回帰式：QOL ＝ 9.18 － 0.53×罹病期間



薬剤 B の回帰式：QOL ＝ 7.89 － 0.53×罹病期間
15



10

薬剤A
薬剤B

0

5

QOL
OL



0

26

5

10
DURATION(年)15前頁のグラフを描くプログラム> # 散布図と回帰直線> A <‑ function(x) 7.89+1.29*1‑0.54*x> B <‑ function(x) 7.89+1.29*0‑0.54*x> plot(QOL
DURATION, data=AB, pch=ifelse(GROUP=="A",1,2),+
col=ifelse(GROUP=="A",1,2),+
xlim=c(0,16), ylim=c(0,15), lwd=2, lty=1, ann=F)> par(new=T)> curve(A, xlim=c(0,16), ylim=c(0,15), lwd=2, col=1, lty=1, ann=F)> par(new=T)> curve(B, xlim=c(0,16), ylim=c(0,15), lwd=2, col=2, lty=2,+
xlab="DURATION(年)", ylab="QOL")> legend(11, 14, c("薬剤A ","薬剤B "), lwd=2, col=1:2, lty=1:2,+
ncol=1, cex=1.0, bg="gray90")

27

QOL に関する共分散分析


薬剤間のQOLの平均値の差：
薬剤 A と薬剤 B の回帰式の引き算から，QOL
回帰式 引き算からの平均値の差が求まる
均値 差が求まる⇒ 回帰式の「薬剤の傾きの推定値（GROUPA：1.29）」を見ればよい

薬剤間の QOL の平均値の差に対する「Pr(>|t|)」の意味：

「薬剤 B の QOL の平均値を 0 としたときの，薬剤 A のQOL の平均値が 0 かどうかの検定」の結果＝「薬剤 A と薬剤 B の QOL の平均値の差が 0 かどうかの検定」⇒ 結果は「Pr(>|t|)：0.276」となっており，5% よりも大きいので「帰無仮説は間違っていない」⇒ QOL の平均値に差があるとはいえない

Estimate Std. Error t value Pr(>￨t￨)(Intercept)
7.89661.47775.344 4.85e‑06 ***GROUPA
1.29071.16781.105 0.27619
DURATION‑0.5375
0.1732 ‑3.102 0.00367 **28

Estimate：推定値

QOL に関する共分散分析
薬剤間の QOL の平均値の差に対する「Pr(>|t|)」の意味：「薬剤 A と薬剤 B の QOL の平均値の差が均値 差が 0 かどうかの検定」
かどうか 検定⇒ 結果は「Pr(>|t|)：0.276」となっており，5% よりも大きいので
15「帰無仮説は間違っていない」⇒ QOL の平均値に差があるとはいえない

10

薬剤A
薬剤B

QOL
OL
5

共分散分析の検定は
ここが 0 かどうかの検定↓
罹病期間の値によらず薬剤間の差は同じ

0



0

29

5

10
DURATION(年)15【参考】回帰直線と平均値の関係


薬剤 A の回帰式：QOL ＝ 9.18 － 0.53×罹病期間



薬剤 B の回帰式：QOL ＝ 7.89 － 0.53×罹病期間



ここで，各薬剤の罹病期間の平均を算出 → A：5 年，B：7.25 年

各薬剤の罹病期間の平均を各薬剤の回帰式に代入すると・・・

薬剤 A の回帰式：QOL ＝ 9.18 － 0.53×5



薬剤 B の回帰式：QOL ＝ 7.89 － 0.53×7.25 ＝ 4.0 ⇒ QOL の平均と一致> by(AB$DURATION, AB$GROUP, mean)＝ 6.5 ⇒ QOL の平均と一致# 各薬剤の罹病期間の平均

AB$GROUP: B[1] 7.25‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑
AB$GROUP: A
[1] 5
30

Estimate：推定値

【参考】回帰直線と平均値の関係
各薬剤の罹病期間の平均を各薬剤の回帰式に代入すると・・・

薬剤 A の回帰式：QOL ＝ 9.18 － 0.53×5



薬剤 B の回帰式：QOL ＝ 7.89 － 0.53×7.25 ＝ 4.0 ⇒ QOL の平均と一致＝ 6.5 ⇒ QOL の平均と一致

薬剤 A の回帰式

4.0

6.5

10

10

15

15

薬剤 B の回帰式

0

0



0

31

5

10

15

0

QOL の平均と一致

5

7.25

10

15

ある因子が交絡因子かどうかの判定方法
興味のある因子が薬剤，「罹病期間」が交絡因子かどうかを判定する
以下のモデルで共分散分析し，薬剤の効果が変わる場合，

「罹病期間」は交絡因子
QOL ＝ β0 ＋ β1×薬剤

「薬剤のみ」のモデル：

「薬剤＋罹病期間」のモデル：QOL
デ＝ β0 ＋ β1×薬剤 ＋ β2×罹病期間【参考】前回の「薬剤」と「前治療の有無」の場合は，全体と層別の結果（前治療なしの結果と，前治療ありの結果）を比較することでも確認することが出来たが 連続変数の場合は一旦カテゴリ化（例えばことが出来たが，連続変数の場合は旦カテゴリ化（例えば，罹病期間が罹病期間が5 年以上，5 年以下）した上で層別の結果を出せばよい⇒ が，カテゴリ化する際の閾値（ 5 年？ 6 年？ 7 年？）の設定の仕方で結果がコロコロ変わる場合があるので注意が必要
32

【再掲】薬剤のみのモデル> result <‑ lm(QOL> summary(result)

GROUP, data=AB)# 薬剤のみのモデル# 結果の要約を表示

Coefficients:
Estimate Std. Error t value Pr(>￨t￨)(Intercept) 4.0000
0.8622 4.639 4.07e‑05 ***GROUPA
2.50001.2194 2.050 0.0473 *> Anova(result, Type="II")# 分散分析表（Type II 平方和）

Response: QOL
Sum Sq Df F value Pr(>F)
GROUP
62.5 1 4.2035 0.04728 *Residuals 565.0 38


薬剤の傾き ：2.50（傾きが 0 かどうかの検定の p 値 = 0.04728）

薬剤の平方和：p 値 = 0.04728（薬剤の効果あり）
33※ p 値が 5%より大きいか小さいかで判定していますある因子が交絡因子かどうかの判定方法> result <‑ lm(QOL GROUP+DURATION, data=AB)# 薬剤＋罹病期間のモデル> summary(result)# 結果の要約を表示
Coefficients:
Estimate Std. Error t value Pr(>￨t￨)(Intercept) 7.8966
1.4777 5.344 4.85e‑06 ***GROUPA
1.29071.1678 1.105 0.27619
DURATION‑0.5375
0.1732 ‑3.102 0.00367 **> Anova(result, Type="II")Response: QOL
Sum Sq Df F value Pr(>F)
GROUP
14.80 1 1.2216 0.276187
DURATION 116.63 1 9.6243 0.003667 **Residuals 448.37 37# 分散分析表（Type II 平方和）

：群間差 = 2.50

薬剤のみのモデル

薬剤＋罹病期間のモデル：群間差 = 1.29⇒
⇒傾きが変わっているので交絡が起きているがが34※ 8.654e-16 = 8.654×10-16 ≒ 0

ある因子が交絡因子かどうかの判定方法> result <‑ lm(QOL GROUP+DURATION, data=AB)# 薬剤＋罹病期間のモデル> summary(result)# 結果の要約を表示
Coefficients:
Estimate Std. Error t value Pr(>￨t￨)(Intercept) 7.8966
1.4777 5.344 4.85e‑06 ***GROUPA
1.29071.1678 1.105 0.27619
DURATION‑0.5375
0.1732 ‑3.102 0.00367 **> Anova(result, Type="II")Response: QOL
Sum Sq Df F value Pr(>F)
GROUP
14.80 1 1.2216 0.276187
DURATION 116.63 1 9.6243 0.003667 **Residuals 448.37 37# 分散分析表（Type II 平方和）：（平均）平方和の検定の p 値 = 0.0213



薬剤のみのモデル

薬剤＋罹病期間のモデル：（平均）平方和の検定の p 値 = 0.2761⇒ 薬剤の効果が「あり→なし」に変わっているので交絡が起きている
薬剤の効果が「あり→なし」に変わ ているので交絡が起きている35

交互作用とは

交互作用：複数の変数の組み合わせにより生じる作用のこと



交互作用がある：2 つの要因（例えば「薬剤×罹病期間」）が互いに影響を及ぼし合っている状態のこと⇒「薬剤×罹病期間」を 「薬剤」と「罹病期間」との交互作用を表す⇒「薬剤×罹病期間」を，「薬剤」と「罹病期間」との交互作用を表すこととし交互作用項と呼ぶことにする⇒「薬剤×罹病期間」の交互作用がある場合，この要因である「罹病期間」を効果修飾因子と呼ぶ



「薬剤×連続変数」の交互作用が「なし」の状態と「あり」の状態を解説した後， 「薬剤×罹病期間」の交互作用があるかどうか調べる【参考】前回の「薬剤」と「前治療の有無」の場合は，全体と層別の結果（前治療なしの結果と，前治療ありの結果）を比較することでも確認することが出来たががが，連続変数の場合は一旦カテゴリ化（例えば，罹病期間が 5 年以上，5 年以下）した上で層別の結果を出せばよい⇒ が，カテゴリ化する際の閾値（が カテゴリ化する際の閾値（ 5 年？ 6 年？ 7 年？）の設定の仕方で結果がコロコロ変わる場合があるので注意が必要
36※本資料では「統計的交互作用」を「交互作用」と表現します
ロスマンの疫学等で出てくる「生物学的交互作用」は扱いません交互作用がない状態（● ○：QOL の平均値）
交互作用がない状態（●，○：QOL


左下の図は以下の特徴がある「薬剤×罹病期間」の交互作用がない
 罹病期間が QOL に影響を及ぼしていない⇒ 罹病期間の値が大きくても小さくても，薬剤間の平均値の差は同じ


QOL

QOL

―
薬剤 A
‑ ‑ 薬剤 B

同じ群間差

罹病期間
37

交互作用がない状態（● ○：QOL の平均値）
交互作用がない状態（●，○：QOL


右下の図は以下の特徴がある「薬剤×罹病期間」の交互作用がない
 罹病期間が QOL に影響を及ぼしている⇒ 罹病期間の値が大きくても小さくても，薬剤間の平均値の差は同じ


QOL

―
薬剤 A
‑ ‑ 薬剤 B

QOL
同じ群間差

罹病期間
38

交互作用がある状態（● ○：QOL の平均値）
交互作用がある状態（●，○：QOL


左下の図は以下の特徴がある ⇒ 量的な交互作用と呼ぶ「薬剤×罹病期間」の交互作用がある
 罹病期間の値が小さいほど，薬剤 A の平均値の方が高い⇒ 罹病期間の値によって薬剤間の平均値の差が異なる


QOL

QOL

―
薬剤 A
‑ ‑ 薬剤 B

小さい差

大きい差

罹病期間
39

交互作用がある状態（● ○：QOL の平均値）
交互作用がある状態（●，○：QOL


右下の図は以下の特徴がある ⇒ 質的な交互作用と呼ぶ「薬剤×罹病期間」の交互作用がある
 罹病期間の値が小さい：薬剤 A の方が高い，大きい：薬剤 B の方が高い⇒ 罹病期間によって薬剤間の平均値の差が異なる上，逆転現象が起こっている


QOL

QOL

―
薬剤 A
‑ ‑ 薬剤 B

Bの方が高いAの方が高い

罹病期間40

交互作用がある状態


前頁の図はいずれも「薬剤×罹病期間」の交互作用がある状態⇒罹病期間の値によって薬剤間の平均値の差が異なる⇒ 「薬剤」と「罹病期間」が互いに影響を及ぼし合っているため

左図
左図：QOLの差の大小はあれど，罹病期間の値が大きい場合も小さい
差 大小はあれど 罹病期間 値が大き 場合も小さ場合も薬剤 A の平均値の方が高い（大小関係の逆転は起こっていない）⇒ この状態を「量的な交互作用あり」の状態と呼ぶ
右図：QOL の差の違いがあり，かつ罹病期間の値によって大小関係の逆転が起こっている⇒ この状態を「質的な交互作用あり」の状態と呼ぶ


2 つの要因の間に交互作用がある場合は「薬剤」と「罹病期間」の両方を考慮して結果の解釈をする必要がある

41

ある因子が効果修飾因子かどうかの判定方法
興味のある因子が薬剤，「罹病期間」が効果修飾因子かどうかを判定する⇒「薬剤」と「罹病期間」の交互作用があるかどうかを判定する場合
以下のモデルで共分散分析し 交互作用項の効果が 0 でない場合，
以下のモデルで共分散分析し，交互作用項の効果が
でない場合

2
2.

「罹病期間」は効果修飾因子「薬剤＋罹病期間＋薬剤×罹病期間」のモデル：
QOL ＝ β0 ＋ β1 ×薬剤 ＋ β2×罹病期間＋ β3×薬剤×罹病期間

42

ある因子が効果修飾因子かどうかの判定方法> result <‑ lm(QOL GROUP*DURATION, data=AB) # 交互作用モデル（薬剤×罹病期間）> Anova(result, Type="II")# 分散分析表（Type II 平方和）
Response: QOL
Sum Sq Df F value
Pr(>F)
GROUP
14.80 1 1.4008 0.244346
DURATION
116.63 1 11.0364 0.002058 **GROUP:DURATION 67.93 1 6.4284 0.015716 *Residuals
380.44

交互作用項の（平均）平方和の検定の p 値 = 0
0.01570157⇒ 検定結果が 5% よりも小さいので「交互作用あり」

43※既に交絡があることが分かっている状況下，「交互作用」の有無の検討をすること自体あまり意味がないという話もありますが･･･，例示のためと割り切ってください本日のメニュー
分散分析

1
1.

 イントロ データ「DEP」による例示

2.

共分散分析
分散分析

3
3.

おまけ：平方和の Type について44

【おさらい】交絡の有無の判定方法
興味のある因子が薬剤，「前治療の有無」が交絡因子かどうかを判定した際以下のモデルで回帰分析し，分散分析表から交絡の有無を判定した



「薬剤のみ」のモデル ：QOL＝ β0 ＋ β1×薬剤

「薬剤＋性別」のモデル：QOL＝ β0 ＋ β1×薬剤 ＋ β2×前治療の有無> result <‑ lm(QOL GROUP, data=AB)> Anova(result, Type="II")Response: QOL
Sum Sq Df F value Pr(>F)
GROUP
62.5 1 4.2035 0.04728 *Residuals 565.0 38# 薬剤のみのモデル# 分散分析表（Type II 平方和）> result <‑ lm(QOL GROUP+PREDRUG, data=AB)> Anova(result, Type="II")Response: QOL
Sum Sq Df F value
Pr(>F)
GROUP
0.0 1
0.000 1.0000000
PREDRUG
187.5 1 18.378 0.0001243 ***Residuals 377.5 37# 薬剤＋前治療の有無のモデル# 分散分析表（Type II 平方和）TType
II って何?
て何?

Type II って何?

Type I 平方和と Type II 平方和の違い


本資料では一貫して「Type II 平方和」を用いて解釈を行ったが，他に「「Type
I 平方和」「Type平方和 「III 平方和」「Type平方和 「IV 平方和」等がある
平方和 等がある
例として前頁のモデルを用いる


「薬剤＋前治療 有無「薬剤＋前治療の有無」のモデル：QOL＝モデル QOL β0 ＋ β1×薬剤
薬剤 ＋ β2×前治療の有無
前治療 有無「前治療の有無＋薬剤」のモデル：QOL＝ β0 ＋ β1×前治療の有無 ＋ β2×薬剤

Type I 平方和：

普通の統計の教科書で出てくる計算方法
最初に計算した平方和が大きくなる（ p 値が小さくなる）傾向があり，「モデルに指定した因子の順番」で結果（平方和や p 値）が変わってしまう

Type II 平方和：


少し難しめの統計の本で出てくる計算方法



平方和は，計算の順番（モデルに指定した順番）によらない

46※ 本資料で出てくる解析内容の範囲内では Type III と Type III はほぼ同じ
Type IV 平方和はここでは扱わない（し、ほとんど使われていない計算方法）

Type I 平方和> result <‑ lm(QOL GROUP+PREDRUG, data=AB)# 薬剤＋前治療の有無のモデル> anova(result)# 分散分析表（Type I 平方和）
Response: QOL
Df Sum Sq Mean Sq F value
Pr(>F)GROUP
1 62.5 62.500 6.1258 0.0180277 *PREDRUG
1 187.5 187.500 18.3775 0.0001243 ***Residuals 37 377.5 10.203> result <‑ lm(QOL PREDRUG+GROUP, data=AB)# 前治療の有無＋薬剤のモデル> anova(result)# 分散分析表（Type I 平方和）
Response: QOL
Df Sum Sq Mean Sq F value
Pr(>F)PREDRUG
1 250.0 250.000 24.503 1.646e‑05 ***GROUP
1
0.0 0.000 0.000
1Residuals 37 377.5 10.203


「薬剤」と「前治療の有無」の順番を入れ替えると結果が変わる・・・

モデルに指定する順番で結果が変わるのはよろしくない・・・
47

Type II 平方和> result <‑ lm(QOL GROUP+PREDRUG, data=AB)> Anova(result, Type="II")Response: QOL
Sum Sq Df F value
Pr(>F)GROUP
0.0 1 0.000 1.0000000
PREDRUG
187.5 1 18.378 0.0001243 ***Residuals 377.5 37> result <‑ lm(QOL PREDRUG+GROUP, data=AB)> Anova(result, Type="II")Response: QOL
Sum Sq Df F value
Pr(>F)PREDRUG
187.5 1 18.378 0.0001243 ***GROUP
0.0 1 0.000 1.0000000
Residuals 377.5 37# 薬剤＋前治療の有無のモデル# 分散分析表（Type II 平方和）

# 前治療の有無＋薬剤のモデル# 分散分析表（Type II 平方和）「薬剤」と「前治療の有無」の順番を入れ替えても結果は変わらない

この理由（モデルに指定する順番で結果が変わらない）により，
本資料では TypeT p II 平方和を用いています48

本日のメニュー
分散分析

1
1.

 イントロ データ「DEP」による例示

2.

共分散分析
分散分析

3
3.

おまけ：平方和の Type について

49

参考文献


統計学（白旗 慎吾 著，ミネルヴァ書房）



R によるやさしい統計学（山田 剛史 他著，オーム社）



ロスマンの疫学（Kenneth J. Rothman 著，矢野 栄二 他翻訳，
篠原出版新社）

The R Tips 第 2 版（オーム社）

R 流！イメージで理解する統計処理入門（カットシステム）50

Rで統計解析入門
終