インターネットで次のコードを見つけました
mod1 <- lm(mpg ~ weight + I(weight^2) + foreign, auto)
機能は何I()
ですか? の結果はweight^2
と同じようI(weight^2)
です。
インターネットで次のコードを見つけました
mod1 <- lm(mpg ~ weight + I(weight^2) + foreign, auto)
機能は何I()
ですか? の結果はweight^2
と同じようI(weight^2)
です。
の機能はI()
、式の項を通常の式の解析と構文から分離することです。I()
データ フレームには"AsIs"
、通常の変換を行わずにオブジェクトを埋め込むことができるクラスを持つ、またはクラスから継承するオブジェクトを作成するのに役立つ他の用途があります。
式の場合、それはあなたが具体的に尋ねるものであるため、次のように演算子に続いて与えられる次数^
への項の交差を示す特別な式演算子です: . そのため、式には通常の算術解釈がありません。(同様に、、、および演算子にも特別な数式の意味があるため、これらを使用して数式解析ツールから分離する必要があります。)n
n
^n
^
-
+
/
*
I()
あなたが与える特定の例(組み込みのデータセットを使用して説明します)では、二次項を丸めるのtrees
を忘れた場合、Rはこの場合、 (例では)としてその項を完全に無視しますすでにモデルに含まれており、変数とそれ自体との多元相互作用を求めていますが、これは二次項ではありません。I()
Volume
weight
最初なし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, which
poly()` の間の相関によるものです。したがって、より安定した仕様は次のようになります。
> 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
、^
より高次の交互作用または多数の変数間の交互作用が必要な場合に役立ちます。