Mais conteúdo relacionado Osaka.Stan #4 Chapter 7 回帰分析の悩みどころ (7.1–7.5) 【※Docswellにも同じものを上げています】1. Chapter 7 (7.1–7.5)
回帰分析の悩みどころ (前半)
『StanとRでベイズ統計モデリング』読書会 (Osaka.Stan #4)
2017年4月29日
大阪大学大学院人間科学研究科D2・日本学術振興会
武藤 拓之 (Hiroyuki Muto)
01/53
交互作用 対数をとるか否か 非線形の関係 多重共線性 交絡
3. 自己紹介
武藤 拓之 (むとう ひろゆき)
• 大阪大学大学院人間科学研究科D2
研究分野
• 認知心理学 (e.g., 空間認知,顔認知,言語理解)
よく分析するデータ
• 反応時間,正答率
R歴
• 約3年
ベイズ歴
• 勉強:約3年前から
• 実践:ほぼゼロ (つまりペーパーベイジアン) Twitter: @mutopsy
03/53
交互作用 対数をとるか否か 非線形の関係 多重共線性 交絡
5. 交互作用とは
交互作用 (interaction)
• ある説明変数の効果が,
別の説明変数の値によって変化すること。
• モデル式では,
「回帰分析において説明変数同士の掛け算の項を考慮す
ること (p.103)」
※掛け算でなくても良いが,掛け算が最も頻繁に使われる。
交互作用の例
• ある薬は成人には有効だが未成年には害をなす。
• 真珠を人にあげると喜ばれるが,豚にあげても喜ばれない。
• 「※ただしイケメンに限る」 (中西, 2013)
交互作用 対数をとるか否か 非線形の関係 多重共線性 交絡
05/53
中西 大輔 [daihiko] (2013年7月15日). 「ただしイケメンに限る」ってのは要するに交互作用のことだから、交互作用の説
明をする時に例に出すと分かりやすいね。[ツイート]. Retrieved from
<https://twitter.com/daihiko/status/356980280411684864>.
6. 交互作用項を含まないモデル
男性の「魅力」を「容姿」と「年収」で説明するモデル
魅力:1 (低魅力)から10 (高魅力) の10段階評価
容姿:1 (イケメン) か0 (非イケメン) かの2値変数
年収:単位は万
架空データを,交互作用項を含まないモデルで分析してみる。
まずはlm関数で分析してみる。(Stanコードも後述)
μ[n] = b1 + b2Ikemen[n] + b3Nenshu[n] n = 1, …, N
Y[n] ~ Normal (μ[n], σ) n = 1, …, N
※清水先生の以下の記事に書かれている例を参考にしました。
重回帰分析で交互作用を検討する<http://norimune.net/1733>
交互作用 対数をとるか否か 非線形の関係 多重共線性 交絡
06/53
8. 交互作用項を含むモデル
先ほどのモデルに交互作用項を追加。
この式は次のように変形できる。
μ[n] = b1 + b2Ikemen[n] + b3Nenshu[n]
+ b4Ikemen[n]Nenshu[n] n = 1, …, N
Y[n] ~ Normal (μ[n], σ) n = 1, …, N
μ[n] = b1 + b2Ikemen[n]
+ (b3 + b4Ikemen[n])Nenshu[n] n = 1, …, N
Y[n] ~ Normal (μ[n], σ) n = 1, …, N
年収の効果は,傾きb3だけでなく,
イケメンか否かによって変わる,という仮定。
交互作用 対数をとるか否か 非線形の関係 多重共線性 交絡
08/53
11. Stanでやってみる_交互作用なしモデル
交互作用項を含まないモデル(Chapter 5の復習)
data {
int N;
int<lower=1, upper=10> Miryoku[N];
int<lower=0, upper=1> Ikemen[N];
real<lower=0> Nenshu[N];
}
parameters{
real b[3];
real<lower=0> sigma;
}
model{
for (n in 1:N){
Miryoku[n] ~ normal(b[1] + b[2]*Ikemen[n] + b[3]*Nenshu[n], sigma);
}
}
交互作用 対数をとるか否か 非線形の関係 多重共線性 交絡
11/53
13. Stanでやってみる_交互作用ありモデル
交互作用項を含むモデル(青字の部分が相違点)
data {
int N;
int<lower=1, upper=10> Miryoku[N];
int<lower=0, upper=1> Ikemen[N];
real<lower=0> Nenshu[N];
}
parameters{
real b[4];
real<lower=0> sigma;
}
model{
for (n in 1:N){
Miryoku[n] ~ normal(b[1] + b[2]*Ikemen[n] + b[3]*Nenshu[n]
+ b[4]*Ikemen[n]*Nenshu[n], sigma);
}
}
交互作用 対数をとるか否か 非線形の関係 多重共線性 交絡
交互作用項 (2つ
の説明変数の積)
をモデルに追加
13/53
15. 交互作用を解釈するために
このモデル式から次のことが言える:
b1 :Ikemen = 0の時の 年収の切片
b3 : 年収の傾き
b1 + b2 :Ikemen = 1の時の 年収の切片
b3 + b4 : 年収の傾き
Stanでこれらの値を推定してみる。
μ[n] = b1 + b2Ikemen[n] + b3Nenshu[n] + b4Ikemen[n]Nenshu[n]
= (b2 + b4 Nenshu[n])Ikemen[n]+ b1 + b3Nenshu[n]
Ikemen = 0の時に0になる部分
交互作用 対数をとるか否か 非線形の関係 多重共線性 交絡
15/53
23. 非線形変換の影響の例 (大久保, 2011)
1. 元の変数が持つ差や比の情報が失われる。
1. ローデータには存在しなかった「差の差」や「差の比」が検出される。
X1 X2 X2−X1 Y1 Y2 Y2−Y1
Xn 1.000 2.000 1.000 11.000 12.000 1.000
logXn 0.000 0.301 0.301 1.041 1.079 0.038
1/Xn 1.000 0.500 −0.500 0.091 0.083 −0.008
|(X2−X1)−(Y2−Y1)| (X2−X1)/(Y2−Y1)
Xn 0.000 1.000
logXn 0.263 7.920
1/Xn 0.492 62.500
値が大きいほど差が過小評価
交互作用項の推定結果が歪む危険性
大久保 街亜 (2011). 反応時間分析における外れ値の処理 専修人間科学論集心理学篇 1,
81-89.
交互作用 対数をとるか否か 非線形の関係 多重共線性 交絡
23/53
25. 参考:なぜ「〇〇倍」と解釈できるかの説明
元のモデル式は,
log10(Y[n]) = b1 + b2log10(X[n]) + e n = 1, …, N
ここで,X[n] = aの時とX[n] = kaの時,
log10(𝑦0) = b1 + b2log10(a) ・・・・・・①
log10(𝑦1) = b1 + b2log10(ka) ・・・・・・②
②を変形して,
log10(𝑦1) = b1 + b2log10(a) + b2log10(k)
= log10(𝑦0) + b2log10(k) (∵①)
したがって,𝑦1の最頻値 ෝ𝑦1は,
ෝ𝑦1 = 10^{log10( ෝ𝑦0) + b2log10(k)}
= 10^log10( ෝ𝑦0) × 10^b2log10(k)
= ෝ𝑦0× 10^b2log10(k) (∵②)
∴X[n]がk倍になるとX[n]の最頻値は{10^b2log10(k)} 倍になる。
交互作用 対数をとるか否か 非線形の関係 多重共線性 交絡
25/53
26. 交互作用 対数をとるか否か 非線形の関係 多重共線性 交絡
賃貸データで結果の比較 (1)
元のデータの散布図と予測分布
対数変換したデータの散布図と予測分布
薄い灰帯:80%予測区間
濃い灰帯:50%予測区間
黒線:中央値
予測区間に負の値を含む
これらの値に
結果が引きずられる
(頑健性が低い)
26/53
27. 交互作用 対数をとるか否か 非線形の関係 多重共線性 交絡
賃貸データで結果の比較 (2)
元のデータの実測値と予測値のプロットおよびノイズの分布
対数変換したデータの実測値と予測値のプロットおよびノイズの分布
予測区間に負の値を含む
エラーバーは80%予測区間
予測区間が広い
正規分布と乖離
27/53
33. 交互作用 対数をとるか否か 非線形の関係 多重共線性 交絡
二次曲線の当てはめ_モデル
data {
int N;
real X[N];
real Y[N];
}
parameters{
real a;
real b;
real x0;
real<lower=0> s_Y;
}
model{
for (n in 1:N){
Y[n] ~ normal(a + b*(X[n]-x0)^2, s_Y);
}
}
μ[n] = a + b(X[n]−x0)2 n = 1, …, N
Y[n] ~ Normal (μ[n], σ) n = 1, …, N
事前知識を用いて適宜制約を課す。例えば二次
曲線が上に凸であることが事前知識から明らかな場
合にはbの上限を0とする。制約がないと収束しない
場合があるので注意。
33/53
35. 時系列データへの指数曲線の当てはめ_モデル
data {
int N;
real X[N];
real Y[N];
}
parameters {
real<lower=0, upper=100> a;
real<lower=0, upper=5> b;
real<lower=0> s_Y;
}
model {
for (n in 1:N)
Y[n] ~ normal(a*(1 - exp(-b*X[n])), s_Y);
}
μ[n] = a{1 − exp(− bX[n])} n = 1, …, N
Y[n] ~ Normal (μ[n], σ) n = 1, …, N
事前知識を用いて適宜制約を課す。
交互作用 対数をとるか否か 非線形の関係 多重共線性 交絡
35/53
36. μ[n] = a{1 − exp(− bX[n])} n = 1, …, N
Y[n] ~ Normal (μ[n], σ) n = 1, …, N
a:頭打ちの大きさを決めるパラメータ
b:頭打ちになるまでの時間を決めるパラメータ
交互作用 対数をとるか否か 非線形の関係 多重共線性 交絡
時系列データへの指数曲線の当てはめ_結果
36/53
39. 交互作用 対数をとるか否か 非線形の関係 多重共線性 交絡
多重共線性とは
多重共線性 (multicolinearity; マルチコ)
• 回帰分析において,説明変数間の相関が高いと……
回帰係数の標準誤差が大きくなる
回帰係数の符号が直感に反する結果となり,
解釈が困難となる場合がある。
回帰係数が収束せず,うまく推定できないことがある。
※モデルによる予測に関心があり,回帰係数の解釈をしないのであれば,多重
共線性は必ずしも問題とならない。
多重共線性がある場合の例
英検のグレード
TOEICスコア
年収 高い正の相関
39/53
40. モデル式から見た多重共線性の説明
重回帰分析のモデル式 (説明変数:A[n] と B[n] )
説明変数A[n]とB[n]の相関が高い時の近似式
この時,例えばb2 + b3 = 3が真の値の時,
(b2, b3) の組み合わせは一意に決まらない。
e.g., (1, 2), (−5, 8), (123.45, −120.45)
μ[n] = b1 + b2A[n] + b3B[n] n = 1, …, N
Y[n] ~ Normal (μ[n], σ) n = 1, …, N
A[n] ≅ B[n] のとき,
μ[n] = b1 + (b2 + b3) A[n] n = 1, …, N
Y[n] ~ Normal (μ[n], σ) n = 1, …, N
交互作用 対数をとるか否か 非線形の関係 多重共線性 交絡
40/53
42. Rのlm関数でシミュレーション_コード
##パラメータ等の指定##
rAB <- 0.9 #説明変数間の母相関係数。この値をいろいろ変えてみる。
rAY <- 0.5 #AとYの母相関係数
rBY <- 0.6 #BとYの母相関係数
n <- 100 #サンプルサイズ
Rep <- 1000 #サンプリング回数
##分散・共分散行列の作成##
Mat <- matrix(c(1, rAB, rAY, rAB, 1, rBY, rAY, rBY, 1), ncol=3)
##N = nのデータセットをRep回生成し,それぞれに対して重回帰分析##
Res_beta <- data.frame(b2 = 1:n, b3 = 1:n)
for (i in 1:Rep){
d <- as.data.frame(mvrnorm(n= n, mu= c(0, 0, 0), Sigma= Mat, empirical= FALSE))
colnames(d) <- c("A","B","Y")
reg <- lm(Y ~ A + B, data = d)
Res_beta[i,] <- reg$coefficients[2:3]
}
Res_beta #Rep回分の偏回帰係数 (b2とb3) が格納されたデータフレーム。
交互作用 対数をとるか否か 非線形の関係 多重共線性 交絡
42/53
43. 交互作用 対数をとるか否か 非線形の関係 多重共線性 交絡
Rのlm関数でシミュレーション_結果
ρAB= .90のとき(多重共線性あり)
ρAB= .20のとき(多重共線性なし)
43/53
44. 交互作用 対数をとるか否か 非線形の関係 多重共線性 交絡
Rのlm関数でシミュレーション_結果
ρAB= .90のとき(多重共線性あり)
ρAB= .20のとき(多重共線性なし)多重共線性があると……
推定値のばらつきが大きい
符号が逆転傾向
e.g., TOEICスコアが高いと年収が上がり,
英検のグレードが高いと年収が下がる?
44/53
48. 交互作用 対数をとるか否か 非線形の関係 多重共線性 交絡
交絡とは
交絡 (confounding)
• 「モデルの外側に応答変数と説明変数の両方に影響を与
える変数が存在すること (p.112)」
• 体重が重い小学生ほど足が速い?
体重足の速さ
+
48/53
49. 交互作用 対数をとるか否か 非線形の関係 多重共線性 交絡
交絡とは
交絡 (confounding)
• 「モデルの外側に応答変数と説明変数の両方に影響を与
える変数が存在すること (p.112)」
• 体重が重い小学生ほど足が速い?
• 年齢が増えると体重が増える
• 年齢が増えると筋力が増して足が速くなる
• 体重が増えすぎると走る速さは遅くなる
体重足の速さ
年齢
隠れた変数
++
−
49/53
52. パス解析のすすめ
パス解析 (path analysis)
• 「複数の回帰を組み合わせて
変数間の因果関係を模索する解析 (p.113)」
• 交絡変数を考慮できる。
• パス図を描くと視覚的に理解しやすい。
パス解析のコツ
• 解釈しやすいシンプルな仮定を優先すると良い。
(複雑なモデルは解釈しにくい)
• 利用できる背景知識をモデルに組み込む。
• モデルの改善には試行錯誤が欠かせない。
体重足の速さ
年齢
交互作用 対数をとるか否か 非線形の関係 多重共線性 交絡
52/53