見出し画像

OLS回帰係数の和の標準誤差をどうやって求めるのか?【Stata】

なんやかんやあって、解析で、回帰係数の和とその標準誤差で作表が必要ということになりました。

回帰係数の和は足せば良いので、すぐに分かるのですが、和の標準誤差はどうするんだろう。わからん。

調べた結果を、今後おなじことで困った人(未来の自分含む)のために、日本語で記録しておこうと思います。

検索ワードは「standard error of the sum of two coefficient」でした。

Statalistに載ってた。

みつけたのはStatalistという、統計ソフトStataユーザーの共助サイトです。

質問内容が、ドンピシャリすぎて、「お前は俺か」と書き込むところでした。

Stata標準のデータサンプル「auto.dta」で説明します。

- lincom - コマンドを利用する場合

sysuse auto
regress price i.foreign weight i.foreign#c.weight
lincom _b[weight] + _b[1.foreign#c.weight]

1行目は、サンプルデータの読込みで、2行目が線形回帰分析の実行です。実行結果は下記のような感じです。

----------------------------------------------------------------------------------
          price |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-----------------+----------------------------------------------------------------
        foreign |
       Foreign  |  -2171.597   2829.409    -0.77   0.445    -7814.676    3471.482
         weight |   2.994814   .4163132     7.19   0.000     2.164503    3.825124
                |
foreign#c.weight|
       Foreign  |   2.367227   1.121973     2.11   0.038      .129522    4.604931
                |
          _cons |  -3861.719   1410.404    -2.74   0.008    -6674.681   -1048.757
----------------------------------------------------------------------------------

ここでは、weightと1.foreigh#c.weightの係数の和を求めてみようと思います。つまり、foreign=1であった時に、weightが1単位増加するときのpriceの増加分がどのくらいか?を推定します。


------------------------------------------------------------------------------
      price |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
        (1) |    5.36204   1.041877     5.15   0.000     3.284083    7.439997
------------------------------------------------------------------------------

この結果を見ますと、foreign=1であった時に、weightが1単位増加するとpriceは5.36204だけ増加したいたということが分かり、その標準誤差が1.041877であったと分かります。

- margin - コマンドを利用する場合

marginコマンドでも、同じ結果になることを確かめようと思います。

sysuse auto
regress price i.foreign weight i.foreign#c.weight
margins, dydx(weight) at (foreign = 1)

このコードの3行目では、「atの条件の時のdydxを求める」という物です。つまり、「foreign=1でweightが1単位増えた時のpriceの増加量」を求めています。

------------------------------------------------------------------------------
            |            Delta-method
            |      dy/dx   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
     weight |    5.36204   1.041877     5.15   0.000     3.284083    7.439997
------------------------------------------------------------------------------

キレイに同じ数字になりました。

まとめ

lincomコマンドやmarginコマンドを使うと何とかなりそう。

利益相反(COI)について

金銭・経済的なCOIはありません。ただし、金銭を頂くことを拒否している訳ではありません。何か贈りたい方は是非お願いします(ダイマ)


この記事が気に入ったらサポートをしてみませんか?