-1

インターネットで次のコードを見つけました

mod1 <- lm(mpg ~ weight + I(weight^2) + foreign, auto)

機能は何I()ですか? の結果はweight^2と同じようI(weight^2)です。

4

1 に答える 1

12

の機能はI()、式の項を通常の式の解析と構文から分離することです。I()データ フレームには"AsIs"、通常の変換を行わずにオブジェクトを埋め込むことができるクラスを持つ、またはクラスから継承するオブジェクトを作成するのに役立つ他の用途があります。

式の場合、それはあなたが具体的に尋ねるものであるため、次のように演算子に続いて与えられる次数^への項の交差を示す特別な式演算子です: . そのため、式には通常の算術解釈がありません。(同様に、、、および演算子にも特別な数式の意味があるため、これらを使用して数式解析ツールから分離する必要があります。)nn^n^-+/*I()

あなたが与える特定の例(組み込みのデータセットを使用して説明します)では、二次項を丸めるのtreesを忘れた場合、Rはこの場合、 (例では)としてその項を完全に無視しますすでにモデルに含まれており、変数とそれ自体との多元相互作用を求めていますが、これは二次項ではありません。I()Volumeweight

最初なしI()

> lm(Height ~ Volume + Volume^2, data = trees)

Call:
lm(formula = Height ~ Volume + Volume^2, data = trees)

Coefficients:
(Intercept)       Volume  
    69.0034       0.2319  

Volume数式に用語だけが含まれていることに注意してください。二次モデルの正しい仕様は次のとおりです (実際にはそうではない場合があります。以下を参照してください)。

> lm(Height ~ Volume + I(Volume^2), data = trees)

Call:
lm(formula = Height ~ Volume + I(Volume^2), data = trees)

Coefficients:
(Intercept)       Volume  I(Volume^2)  
   65.33587      0.47540     -0.00314

私はそれが正しくないかもしれないと言った。これは、Volumeと Volume^2 . An identical but more stable fit can be achieved by the use of orthogonal polynomials, whichpoly()` の間の相関によるものです。したがって、より安定した仕様は次のようになります。

> lm(Height ~ poly(Volume, 2), data = trees)

Call:
lm(formula = Height ~ poly(Volume, 2), data = trees)

Coefficients:
     (Intercept)  poly(Volume, 2)1  poly(Volume, 2)2  
          76.000            20.879            -5.278  

入力データが異なるため (直交多項式と生の多項式)、係数の推定値が異なりますが、近似は以前のモデルと同じであることに注意してください。summary()あなたが私を信じていないなら、あなたは彼らの出力でこれを見ることができます:

> summary(lm(Height ~ poly(Volume, 2), data = trees))

Call:
lm(formula = Height ~ poly(Volume, 2), data = trees)

Residuals:
     Min       1Q   Median       3Q      Max 
-11.2266  -3.6728  -0.0745   2.4073   9.9954 

Coefficients:
                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)       76.0000     0.9322  81.531  < 2e-16 ***
poly(Volume, 2)1  20.8788     5.1900   4.023 0.000395 ***
poly(Volume, 2)2  -5.2780     5.1900  -1.017 0.317880    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 5.19 on 28 degrees of freedom
Multiple R-squared: 0.3808, Adjusted R-squared: 0.3365 
F-statistic: 8.609 on 2 and 28 DF,  p-value: 0.001219 

> summary(lm(Height ~ Volume + I(Volume^2), data = trees))

Call:
lm(formula = Height ~ Volume + I(Volume^2), data = trees)

Residuals:
     Min       1Q   Median       3Q      Max 
-11.2266  -3.6728  -0.0745   2.4073   9.9954 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 65.335867   4.110886  15.893 1.52e-15 ***
Volume       0.475398   0.246279   1.930   0.0638 .  
I(Volume^2) -0.003140   0.003087  -1.017   0.3179    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 5.19 on 28 degrees of freedom
Multiple R-squared: 0.3808, Adjusted R-squared: 0.3365 
F-statistic: 8.609 on 2 and 28 DF,  p-value: 0.001219

モデルの線形項と二次項のt検定の違いに注意してください。ここで、入力多項式の項の直交性が役立ちます。

数式で何が行われているかを実際に確認する^には (の用語に?formula慣れていない場合は、次のモデルを検討してください。

> lm(Height ~ (Girth + Volume)^2, data = trees)

Call:
lm(formula = Height ~ (Girth + Volume)^2, data = trees)

Coefficients:
 (Intercept)         Girth        Volume  Girth:Volume  
    75.40148      -2.29632       1.86095      -0.05608

には 2 つの項がある(...)^2ため、数式解析コードはそれを 2 つの変数の主効果とその 2 次相互作用に変換します。このモデルは、より簡潔に のように記述できますがHeight ~ Girth * Volume^より高次の交互作用または多数の変数間の交互作用が必要な場合に役立ちます。

于 2013-02-27T15:02:39.333 に答える