5

数式で ~ 演算子を使用する方法を見てきました。たとえば、y~xy は x として配布されます。

しかし、私は~0+aこのコードで何を意味するのか本当に混乱しています:

require(limma)
a = factor(1:3)
model.matrix(~0+a)

なぜmodel.matrix(a)うまくいかないのですか?の結果がmodel.matrix(~a)と異なるのはなぜmodel.matrix(~0+a)ですか? そして最後に、ここでの ~ 演算子の意味は何ですか?

4

3 に答える 3

12

~式を作成します - 式の右辺と左辺を分離します

から?`~`

チルダは、モデル式で左辺と右辺を区切るために使用されます

公式のヘルプより引用

たとえば、lm および glm 関数によって適合されるモデルは、コンパクトな記号形式で指定されます。~ 演算子は、そのようなモデルの形成において基本的なものです。y ~ model 形式の式は、応答 y がモデルによってシンボリックに指定された線形予測子によってモデル化されるという仕様として解釈されます。このようなモデルは、+ 演算子で区切られた一連の項で構成されます。用語自体は、: 演算子で区切られた変数名と因子名で構成されます。このような用語は、用語に現れるすべての変数と要因の相互作用として解釈されます。

+ と : に加えて、他の多くの演算子がモデル式で役立ちます。* 演算子は因子交差を示します: a*b は a+b+a:b として解釈されます。^ 演算子は、指定された角度まで交差することを示します。たとえば、(a+b+c)^2 は (a+b+c)*(a+b+c) と同じで、a、b、c の主効果とその 2 番目の効果を含む式に展開されます。 -注文相互作用。%in% 演算子は、左側の用語が右側の用語内にネストされていることを示します。たとえば、a + b %in% a は式 a + a:b に展開されます。- 演算子は、(a+b+c)^2 - a:b が a + b + c + b:c + a:c と同じになるように、指定された項を削除します。また、切片項を削除するためにも使用できます。線形モデルをフィッティングする場合、y ~ x - 1 は原点を通る線を指定します。切片のないモデルは、y ~ x + 0 または y ~ 0 + x として指定することもできます。

したがって、特定の問題に関して~a+0

  • 切片なしでモデル マトリックスを作成します。a要因としてmodel.matrix(~a)、インターセプト列を返します(クラスを完全に指定するにはインジケーターa1が必要です)n-1n

各機能のヘルプ ファイルは、よく書かれていて、詳細で、見つけやすいです。

なぜ機能しないmodel.matrix(a)のですか

model.matrix(a)式または条件オブジェクトではなく変数でaあるため、機能しませんfactor

のヘルプからmodel.matrix

object 適切なクラスのオブジェクト。デフォルトのメソッドの場合、モデル式または項オブジェクト。

R特定のクラスのオブジェクトを探しています。式~aを渡すことで、クラスのオブジェクトを渡していますformulamodel.matrix(terms(~a))(式に対応する項オブジェクトを渡すこともできます)~a


一般的な注意事項

@BenBolker は、彼のコメントで役立つことに注意してください。

Introduction to Rに適切な説明があります。

于 2012-10-05T00:21:44.750 に答える
6

いくつかのマニュアルを読んだ後、この素晴らしい本の章model.matrix(~0+x)を見つけた最近、otilの意味に戸惑いました。

数学0+aでは、等しいaという用語を書くの0+aは非常に奇妙です。y=ax+bただし、ここでは線形モデルを扱っています。予測変数 (x) と観測値 (y) の間の関係を明らかにするような単純な高校の方程式です。

したがって、 orは次の形式の方程式と~0+x同様に考えることができます。追加することにより、強制的にゼロになります。つまり、原点を通過する直線 (切片なし) を探しているということです。または単にのようなモデルを示した場合、あてはめられた方程式にゼロ以外の項が含まれる可能性があります。同様に、式または両方の意味で制限することもできます: 切片なし (負のインデックスによって R の行または列を除外するのと同じ方法)。しかし、やのようなものは無意味です。~x+0y=ax+b0b~x+1~xbb~x-1~-1+x~x-2~x+3

@mnel の有用なコメントに感謝します。最後に、使用する理由と使用~しない理由は何=ですか? 標準的な数学用語/記号y~xでは、y が x に等しいことを示しy=xます。線形モデルを当てはめているとき、実際には と言っているわけではありませんがy=x、y を x の線形関数としてモデル化できるということです (y = ax+bたとえば)。

于 2012-10-08T00:56:41.760 に答える
2

質問の一部に答えるために、チルダを使用してモデル式の左側と右側を分離します。詳細については、 を参照してください?"~"

于 2012-10-05T00:21:14.527 に答える