スプライン関数の生成

 私たちは分析するデータについて、 具体的な数式の形を仮定したくない場合があります。 例えば、いくつかの説明変数を用いて回帰させることを考えるとき、 その説明変数の関数形については何も決めたくない場合があります。 スプライン基底関数は、説明変数の関数形を柔軟に近似する方法です。 また、アウトカムと説明変数、または変数間の関係を視覚化したい場合もあります。 そのような場合、スプラインを使って関係性を視覚化できますが、 その際に直線性や他の関数系に言及する必要はありません。

 Stata 18 では、新しいmakesplineコマンドを使って、既存の変数からBスプライン、 区分多項式スプライン、制約付き3次スプラインの基底関数を生成できます。 たとえば、次のように書きます。

. makespline bspline x1 x2 x3 x4 ...x100

 変数x1からx100までの各変数に対して、3次のB-スプライン基底関数を作成します。 これにより、どの基底関数でもモデルに適合させることができます。 また、makesplineが生成した基底関数のいくつかを使って、 関心のあるアウトカムとの関係を視覚化することもできます。

操作例

 telasso コマンドを使用して、母親の喫煙(mbsmoke)が乳児の出生体重(bweight)に与える 影響を考察します。telasso コマンドを使用すると、結果(bweight)と 処置(mbsmoke)の両方をモデル化することができます。私たちは、出生体重と母親の年齢(mage)、 母親の教育水準(medu)、および父親の教育水準(fedu)の間に関係があると考えています。 また、母親の教育水準(medu)は妊娠中に母親が喫煙するかを予測するために有効な変数であると考えています。
 私たちは、変数 bweightとmage、medu、feduの関係はよくわかっていません。 また、変数 mbsmokeとmeduの関係についても同様です。これは telasso にとって重要ではありません。 このコマンドは、指定した多くの変数の中から説明変数を選択し、関心のある処置効果を推定します。
 関心のある各変数から基底関数を生成するために、makespline を使用します。

. makespline bspline mage medu fedu

 私たちは、mage、medu、feduについてそれぞれ5つの変数で構成される3次のB-スプライン基底関数を生成しました。 生成された変数は、_bspで始まる一般的なシステム名を持っています。 basis()オプションを使用して基底の名前を指定することもできます。
 以下に、生成された変数を示します:

. describe _bsp*

 mageのB-スプライン基底関数である変数の変数名は_bsp_1から始まり、meduについては_bsp_2、 feduについては_bsp_3から始まります。これらの基底関数を使用して、処置効果モデルを適合させます:

. telasso (bweight c._bsp_1*##c._bsp_2* _bsp_3*) (mbsmoke _bsp_2*)

 makespline によって作成された基底関数変数とその相互作用により、40の潜在的な制御変数が生成されました。 telasso はそのうちの5つの制御変数を選択し、それらを使用して処置効果を計算しました。 その結果、乳児の出生体重は263グラム減少するという結果が得られました。

Stata is a registered trademark of StataCorp LLC, College Station, TX, USA, and the Stata logo is used with the permission of StataCorp.

page_top_icon