1. ホーム
  2. r

[解決済み] R線形回帰式の大文字の「I」は何を意味しているのですか?

2022-03-05 08:55:53

質問

この質問に対する答えが見つかりません。それは、単独の文字("I"など)を含むものをググると問題が発生することが主な理由です。

このようなモデルにおいて、"I"はどのような役割を担っているのでしょうか?

data(rock)
lm(area~I(peri - mean(peri)), data = rock)

以下のように動作しないことを考慮する。

lm(area ~ (peri - mean(peri)), data = rock)

で、その これ は動作します。

rock$peri - mean(rock$peri)

また、自分で調べる際のキーワードがあれば、とても助かります。

どのように解決するのですか?

I アイソレート または インシュレーション の中身は I( ... ) Rの数式解析コードの視線から。これにより、Rの標準的な演算子は、特別な数式演算子として扱われるのではなく、数式の外で使用した場合と同じように動作するようになります。

例えば

y ~ x + x^2

は、Rにとって「くれ」という意味です。

  1. x = の主効果である。 x であり、かつ
  2. x^2 = の主効果と2次の交互作用がある。 x となります。

意図しない x プラス x -の2乗です。

> model.frame( y ~ x + x^2, data = data.frame(x = rnorm(5), y = rnorm(5)))
           y           x
1 -1.4355144 -1.85374045
2  0.3620872 -0.07794607
3 -1.7590868  0.96856634
4 -0.3245440  0.18492596
5 -0.6515630 -1.37994358

これは、以下の理由からです。 ^ で説明したように、数式中の特殊な演算子です。 ?formula . を含むだけになってしまいます。 x が主効果を持つので、モデルフレームに x はすでに x の項を交差させる必要はありません。 x の2次相互作用を得るために、この関数と x^2 という項があります。

通常の演算子を取得するためには I() を使用して、数式コードから呼び出しを分離します。

> model.frame( y ~ x + I(x^2), data = data.frame(x = rnorm(5), y = rnorm(5)))
            y          x       I(x^2)
1 -0.02881534  1.0865514 1.180593....
2  0.23252515 -0.7625449 0.581474....
3 -0.30120868 -0.8286625 0.686681....
4 -0.67761458  0.8344739 0.696346....
5  0.65522764 -0.9676520 0.936350....

(最後の列は正しいのですが、ただクラスが AsIs .)

あなたの例では - を式で使用した場合、次のようになります。 除去 という用語をモデルから削除する必要があります。 - という通常の二項演算子の意味を持っています。 減算 :

> model.frame( y ~ x - mean(x), data = data.frame(x = rnorm(5), y = rnorm(5)))
Error in model.frame.default(y ~ x - mean(x), data = data.frame(x = rnorm(5),  : 
  variable lengths differ (found for 'mean(x)')

これは、以下の理由で失敗します。 mean(x) は長さ1のベクトルであり model.frame() これは他の変数の長さと一致しないことを正しく伝えています。これを回避する方法は I() :

> model.frame( y ~ I(x - mean(x)), data = data.frame(x = rnorm(5), y = rnorm(5)))
           y I(x - mean(x))
1  1.1727063   1.142200....
2 -1.4798270   -0.66914....
3 -0.4303878   -0.28716....
4 -1.0516386   0.542774....
5  1.5225863   -0.72865....

したがって、特殊な意味を持つ演算子を式の中で使いたいが、その演算子の 非形式 の意味で、その操作の要素を I( ) .

読む ?formula は特殊演算子について、そして ?I 関数自体の詳細については は、データフレーム内でのもう1つの主な使用例です(ここで AsIs のビットに由来しています。)