係数の項と線形方程式のインタラクティブ項を適用する方法は?


9

Rを使用して、連続予測子と離散予測子の混合からの単一応答変数の線形モデルを近似しました。これは基本的ですが、離散因子の係数がどのように機能するかを理解するのに苦労しています。

コンセプト:明らかに、連続変数「x」の係数は次の形式で適用されy = coefx(varx) + interceptますが、係数が非数値の場合、係数zに対してどのように機能しますか?y = coefx(varx) + coefz(factorz???) + intercept

具体的:私はRのモデルをlm(log(c) ~ log(d) + h + a + f + h:a)どこにh、そしてf離散的で非数値的な因子としてフィットさせました。係数は次のとおりです。

Coefficients:
              Estimate 
(Intercept)  -0.679695 
log(d)        1.791294 
h1            0.870735  
h2           -0.447570  
h3            0.542033   
a             0.037362  
f1           -0.588362  
f2            0.816825 
f3            0.534440
h1:a         -0.085658
h2:a         -0.034970 
h3:a         -0.040637

これらを使用して予測方程式を作成する方法:

log(c) =  1.791294(log(d)) + 0.037362(a) + h??? + f???? + h:a???? + -0.679695

それとも私はそれを間違っていますか?

私は、被験者が、カテゴリに該当する場合はその概念だと思うh1f2、式は次のようになります。

log(c) =  1.791294(log(d)) + 0.037362(a) +  0.870735  + 0.816825  + h:a???? + -0.679695

しかし、h:aインタラクティブな用語がどのように解析されるのか、私は本当にはっきりしていません。安心してくれてありがとう。

回答:


14

これは Rに固有の問題ではありません。Rは従来の係数表示を使用します。

そのような回帰出力(論文、教科書、または統計ソフトウェアから)を読むときは、どの変数が「連続」でどの変数が「カテゴリ」であるかを知る必要があります。

  • 「連続」のものは明示的に数値であり、それらの数値は回帰フィッティングでそのまま使用されました。

  • 「カテゴリー」変数は、数値の変数を含めどのタイプでもかまいません。それらをカテゴリに分類するのは、ソフトウェアがそれらを「要因」として処理したことです。つまり、見つかったそれぞれの個別の値は、個別の何かの指標と見なされます。

    ほとんどのソフトウェアは、数値以外の値(文字列など)を因子として扱います。ほとんどのソフトウェアも、数値を因子として扱うように説得できます。たとえば、郵便サービスコード(米国では郵便番号)数字のように見えますが、実際には一連のメールボックスのコードにすぎません。郵便番号に他の数値を加算、減算、乗算するのは意味がありません。(この柔軟性はよくある間違いの原因です。注意を怠ったり、気づかなかったりすると、ソフトウェアはカテゴリカルであると見なす変数連続として扱う可能性があります。逆も同様です。注意してください。)

    それにもかかわらず、フィッティングアルゴリズムを適用するには、カテゴリ変数を何らかの方法で数値として表す必要があります。それらをエンコードする多くの方法があります。コードは「ダミー変数」を使用して作成されます。このサイトで検索して、ダミー変数エンコーディングの詳細を確認してください。詳細はここでは関係ありません。

質問ではhfカテゴリー値(「離散」)であると言われています。デフォルトでは、log(d)a連続しています。知っておくべきことはこれだけです。モデルは

y=0.679695+1.791294 log(d)+0.870735 if h=h10.447570 if h=h2+0.542033 if h=h3+0.037362 a0.588362 if f=f1+0.816825 if f=f2+0.534440 if f=f30.085658 a if h=h10.034970 a if h=h20.040637 a if h=h3

ここで適用されるルールは次のとおりです。

  • 「切片」という用語が現れる場合、それは加法定数です(最初の行)。

  • 連続変数は、その係数を乗じても、「相互作用」のようなh1:ah2:ah3:a用語。(これは元の質問に答えます。)

  • カテゴリー変数(または因子)は、その因子の値が現れる場合にのみ含まれます。

log(d)=2h=h3a=1f=f2

y^=0.6797+1.7913×(2)+0.5420+0.0374×(1)+0.81680.0406×(1).

hh1h2h3(0.870735,0.447570,0.542033)h(0.085658,0.034970,0.040637)ah:aインタラクション; 同様に、f特定の場合に適用される係数は1つだけです。


8

これは単なるコメントですが、自由に使用できる限られた編集ボックスには収まりません。

LATEX

最初にいくつかのデータをシミュレーションしてみましょう。

n <- 200
x1 <- runif(n)
x2 <- runif(n)
x3 <- runif(n)
g1 <- gl(2, 100, n, labels=letters[1:2])
g2 <- cut2(runif(n), g=4)
y <- x1 + x2 + rnorm(200)

次に、回帰モデルを当てはめます。

f <- ols(y ~ x1 + x2 + x3 + g1 + g2 + x1:g1)

次の結果が得られます。

Linear Regression Model

ols(formula = y ~ x1 + x2 + x3 + g1 + g2 + x1:g1)

                Model Likelihood     Discrimination    
                   Ratio Test           Indexes        
Obs      200    LR chi2     35.22    R2       0.161    
sigma 0.9887    d.f.            8    R2 adj   0.126    
d.f.     191    Pr(> chi2) 0.0000    g        0.487    

Residuals

    Min      1Q  Median      3Q     Max 
-3.1642 -0.7109  0.1015  0.7363  2.7342 

                   Coef    S.E.   t     Pr(>|t|)
Intercept           0.0540 0.2932  0.18 0.8541  
x1                  1.1414 0.3642  3.13 0.0020  
x2                  0.8546 0.2331  3.67 0.0003  
x3                 -0.0048 0.2472 -0.02 0.9844  
g1=b                0.2099 0.2895  0.73 0.4692  
g2=[0.23278,0.553)  0.0609 0.1988  0.31 0.7598  
g2=[0.55315,0.777) -0.2615 0.1987 -1.32 0.1896  
g2=[0.77742,0.985] -0.2107 0.1986 -1.06 0.2901  
x1 * g1=b          -0.2354 0.5020 -0.47 0.6396  

次に、対応する回帰方程式を出力するにはlatex、次のようにジェネリック関数を使用します。

latex(f)

dviをpngに変換すると、そのようなものが得られるはずです

ここに画像の説明を入力してください

IMO、これには、数値およびカテゴリカル予測子の実際の値または選択された値に応じて予測値を計算する方法を示すメリットがあります。後者の場合、因子レベルは対応する係数の近くの括弧内に示されます。


1
+0.2099013{b}g1{b}g1=bbb01

1
@whuber上記の画像はトリミングされていますが、「サブジェクトがグループcにある場合は{c} = 1、それ以外の場合は0」とある種の脚注があります(cこの特定のケースでは、2つの文字を選択するため、 g1レベルを表しますが、通常は非常に直感的です-そしてそれは純粋なtexなので、後でソースファイルを編集できます)。添付されg1ているのは、私が変更して4レベルの要素になった別の要約です。それでも、混乱を招く可能性がある0/1ラベルを使用します
CHL

5

あなたはあなたの「コントラスト」がデフォルトであることを確認しoptions()、探すことができます:

$contrasts
        unordered           ordered 
"contr.treatment"      "contr.poly" 

順序付けられていないコントラストが次のように設定されている場合contr.treatment(それらを変更していない限り、そうであるはずです)、各因子の最初のレベルがベースラインとして設定されます。係数の他のレベル用に作成されたダミー変数の前にある係数の推定のみが与えられます。実際には、これらの係数は、「因子のこのレベルでの応答変数は、因子のベースラインレベルと比較して、モデルの他のすべてのものを制御しているため、平均してどの程度異なるか」になります。

私はあなたの出力から、hとfのベースラインレベルであるan h0およびanがあるとf0思います(コントラストにデフォルト以外のオプションがない場合、その場合、いくつかの可能性があります。?contr.treatmentいくつかの助けを求めてください)。

それは相互作用と似ています。私の前の段落が正しい場合、に与えられた推定aは、実際のawhen の傾きになりh=h0ます。相互作用に適用される要約に示されている推定値は、のさまざまなレベルで勾配がどれだけ変化するかですh

したがって、h = h1およびf = f2の例では、次のことを試してください。

log(c) =  1.791294(log(d)) + (0.037362 - 0.085658) (a) +  0.870735  + 0.816825  -0.679695

ああ、それpredict()から、実際に何かを予測したい場合(レポートの方程式を書き出すのではなく)、多くの便利なことを行うのにも使用できます。によって作成されたオブジェクトに対して?predict.lmpredict()が行われるかを確認してくださいlm


いずれにしても(実際には、1か月前にこれに賛成し、たまたま今読み直しただけです)、コントラストの種類をで確認することをお勧めしますoptions()。必要なものを見つけるには、大量のジャンクをスクロールする必要があります。試してみるとoptions()$contrasts、必要なものだけが出力されます。
ガン-モニカの復活

私の脳は眠っていたに違いありません。
Peter Ellis

ご存知のように、私はよく寝る直前にCVの質問に答えます...
ガン-モニカの回復
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.