交互作用項/Interaction term

交互作用項の結果の解釈

AとBの交互作用項を入れたときの主効果の意味は、

・主効果 A : B = 0 の時の A の効果
・主効果 B : A = 0 の時の B の効果

です。「交互作用項を入れたときの主効果には意味がない!」などという人がいますが、意味がないことはありません。

もっとも意味がないと言いたくなる人の気持ちも、場合によってはわかります。例えば年齢と喫煙の交互作用項をモデルに入れる場合、年齢の主効果は喫煙=0の時の効果、喫煙の主効果は年齢=0の時の効果になります。0歳の時の喫煙の効果を調べることに意味があるかと言えば、0歳で喫煙している人はいないでしょうから、「意味はありません」。ただ、それが何にも意味がないかと言われれば、今言ったような内容が結果の解釈となるわけです。[mfn]逆に、解釈する意味のある値にしたいのであれば、平均年齢が0になるように変数を変換するなどの方法が考えられます。[/mfn]

Stataのスクリプト

Stataで交互作用項を入れる場合には「♯」を使います。結果変数がyでAとBの相互作用を見たいときは、

reg y i.A##i.B
reg y A B i.A#i.B

のいずれかが一般的でしょう。「i.」はその変数が離散変数であることを宣言する接頭辞です。上記二つの方法に加えて、AとBの交互作用項を事前に作るという方法もあります。

gen Int = A*B
reg y A B Int

交互作用を検討する変数が連続変数である場合には、「c.」を変数名の前につけましょう。

reg y i.A##c.C
reg y c.C##c.D

上記例だと一つ目が離散変数Aと連続変数Cの交互作用、二つ目は連続変数Cと連続変数Dの交互作用になります。

ちなみに、離散変数どうしの交互作用項を見るときに、♯ひとつだけをつかうと、交互作用を検討している変数が取りうる値の組み合わせごとの推定値を返します。Aの取りうる値が0か1、Bの取りうる値も0か1である場合を具体的に書くと、

reg y i.A#i.B

下図で示すように、A=0, B= 0をreferenceとした場合の、A=0, B=1、A=1, B=0、A=1, B=1、それぞれの場合の値を算出します。得られた3点の点推定値と信頼区間はA=0, B=0というreference groupと比較した場合の数値です。それらの値単独では交互作用があったかどうかは分かりませんが、それぞれの組み合わせの場合にどのような値を取ることになるのか確認するという意味では便利です。

具体例①:血圧に関する年齢と性別の交互作用

変数名
・bp_after: 血圧(連続値)
・agegrp:1:30-45;2:46-59;3:60+
・sex:0:男性;1:女性

sysuse bpwide.dta, clear
gen age2 = .
replace age2 = 0 if agegrp == 1 | agegrp == 2
replace age2 = 1 if agegrp == 3
gen ht = 0
replace ht = 1 if bp_after >= 160
logit ht i.sex#i.age2, or
logit ht i.sex##i.age2, or
margin, at(sex=(0 1) agegrp=(0 1))
marginsplot, noci x(agegrp) ylabel(, angle(0)) xscale(r(-0.25 1.25)) ///
graphregion(color(white)) legend(col(2))}
1行目:データの読み込み。
2~4行目:結果の説明をしやすいように年齢階級を減らしました。
5、6行目:II・III度高血圧を収縮期血圧のみで定義しました。[mfn]かなり雑な定義です。[/mfn]
7行目:♯ひとつをつかって交互作用を定義した場合です。ロジスティック回帰分析にしています。[mfn]本当はLogistic regressionのRare disease assumptionが満たされていないので、Poisson with a robust variance estimatorなどが望ましいです。[/mfn]
8行目:♯ふたつをつかって交互作用を定義した場合です。
9行目:交互作用の様子をグラフにするためのコマンド marginを使用しています。sexが0と1、agegrpが1と3の場合に取りうる組み合わせごとに予測値を計算しろという指令です。6行目の後にやっても、5行目の後にやっても同じ結果を返します。
10、11行目:marginで計算した値をグラフにするコマンドです。

7行目の結果
男性で年齢が若い群をReference groupにしたときに、男性で高齢群、女性で若い群、女性で高齢群それぞれにおいて、血圧が160 mmHg以上になるオッズ比を計算しています。

Logistic regression                             Number of obs     =        120
                                                LR chi2(3)        =      26.40
                                                Prob > chi2       =     0.0000
Log likelihood =  -58.33007                     Pseudo R2         =     0.1845

------------------------------------------------------------------------------
          ht | Odds Ratio   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
    sex#age2 |
     Male#1  |   3.857143   2.228282     2.34   0.019     1.243152     11.9676
   Female#0  |   .1093117   .0874682    -2.77   0.006     .0227803    .5245354
   Female#1  |   .8901099     .52814    -0.20   0.844     .2782208    2.847723
             |
       _cons |   .4814815   .1625384    -2.17   0.030     .2484455    .9330996
------------------------------------------------------------------------------

8行目の結果
sex#agegrpが有意ではないので、交互作用があるとは言えないという結論になります。

Logistic regression                             Number of obs     =        120
                                                LR chi2(3)        =      26.40
                                                Prob > chi2       =     0.0000
Log likelihood =  -58.33007                     Pseudo R2         =     0.1845

------------------------------------------------------------------------------
          ht | Odds Ratio   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
         sex |
     Female  |   .1093117   .0874682    -2.77   0.006     .0227803    .5245354
      1.age2 |   3.857143   2.228282     2.34   0.019     1.243152     11.9676
             |
    sex#age2 |
   Female#1  |   2.111111   2.212291     0.71   0.476      .270716    16.46298
             |
       _cons |   .4814815   .1625384    -2.17   0.030     .2484455    .9330996
------------------------------------------------------------------------------

これを図にするとこうなります。

具体例②:出生体重の決定要因

変数名
・bwt:出生体重
・race:1:白人;2:黒人;3:その他
・smoke:0:喫煙なし;1:喫煙あり

use http://www.stata-press.com/data/r15/lbw.dta, clear
reg bwt i.race##i.smoke
margin, at(race=(1 2 3) smoke=(0 1))
marginsplot, x(smoke) noci ylabel(, angle(0)) xscale(r(-0.25 1.25)) ///
graphregion(color(white)) legend(col(3))
      Source |       SS           df       MS      Number of obs   =       189
-------------+----------------------------------   F(5, 183)       =      6.19
       Model |  14455540.4         5  2891108.08   Prob > F        =    0.0000
    Residual |  85459758.2       183  466993.214   R-squared       =    0.1447
-------------+----------------------------------   Adj R-squared   =    0.1213
       Total |  99915298.6       188  531464.354   Root MSE        =    683.37

-------------------------------------------------------------------------------
          bwt |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
--------------+----------------------------------------------------------------
         race |
       black  |    -574.25   199.5008    -2.88   0.004    -967.8674   -180.6326
       other  |  -614.5136   138.2182    -4.45   0.000    -887.2198   -341.8075
              |
        smoke |
      smoker  |  -601.3654    139.979    -4.30   0.000    -877.5456   -325.1851
              |
   race#smoke |
black#smoker  |   250.8654   308.9992     0.81   0.418    -358.7938    860.5245
other#smoker  |   544.2957   258.8455     2.10   0.037     33.59038    1055.001
              |
        _cons |    3428.75   103.0218    33.28   0.000     3225.487    3632.013
-------------------------------------------------------------------------------


Multiplicative interaction vs. Additive interaction

交互作用にはMultiplicative interactionとAdditive interactionがあります。♯で普通に交互作用を定義するときに得られるのは、ロジスティック回帰やポワソン回帰を使っている場合はMultiplicative interaction(具体例①)、線形回帰を使用している場合はAdditive interaction(具体例②)になります。これらを交互作用の結果として示すことが一般的なのですが、例①の場合にAdditive interactionを計算することもできます。
なぜロジスティック回帰やポワソン回帰の場合でもAdditive interactionを計算するのかという理由について深く知りたい人は、以下のリンクを参考にするといいと思います。

・コロ助氏のブログ 「交互作用」とはなにか ([Link]
・VanderWeele, T. J., & Knol, M. J. (2014). A tutorial on interaction. Epidemiologic Methods, 3(1), 33-72. [Link]

ここでは、例①の場合にAdditive interactionをどのように計算するか示しておくだけにします。交互作用項を別途新規の変数として定義する必要があります。

sysuse bpwide.dta, clear
gen age2 = .
replace age2 = 0 if agegrp == 1 | agegrp == 2
replace age2 = 1 if agegrp == 3
gen ht = 0
replace ht = 1 if bp_after >= 160
gen Int = sex*age2
logit ht i.sex i.age2 Int, or
nlcom exp(_b[1.sex] + _b[1.age2] + _b[Int]) - exp(_b[1.sex]) - (_b[1.age2]) + 1
------------------------------------------------------------------------------
          ht |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
       _nl_1 |   .4308714   .6482181     0.66   0.506    -.8396128    1.701356
------------------------------------------------------------------------------

この結果からいえることは、例①の場合は、Additive scaleでもMultiplicative scaleでも交互作用があるとは言えないということです。

 

1件のコメント

Бесплатные промокоды Mostbet при регистрации 2025. Получить бонус на сумму 35000 рублей могут все новые участники клуба. Регистрируйте аккаунт по электронной почте или через привязку аккаунтов популярных социальных сетей и получайте бонусом до 35000 рублей на первый депозит. Для зачисления бонусов необходимо пополнить счет с банковской карты или электронного кошелька, не забыв при этом указать актуальный промокод. Для того чтобы бонус стал доступен к снятию необходимо выполнить простое условие. Выбирайте любое событие, на которое принимаются ставки с коэффициентом от 1.4 и выше.

CharlesTaind へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

ABOUT US
inoyo