使用

2013-02-20 10 views
127

私は、次のコマンドをモデル化回帰についてのチュートリアルで見た:使用

myFormula <- Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width 

は、このコマンドは正確に何をするのか、と~(チルダ)の役割は何であるにコマンド?

+0

チュートリアルへのリンクを共有しても大丈夫ですか?興味深いですね。 – cheeesus

+1

@cheeesus ...ケーススタディを使ってRの電子ブックデータマイニングを行っていましたが、そこに興味深い例がたくさんあります。 – Ankita

答えて

145

<-の右側の物がformulaオブジェクトです。これは、よく統計モデルを表すために使用されます。~の左側のものが応答で、~の右側のものが説明変数です。ですから、英語ではのようなものがあります。「種は、セパンの長さ、セパレーションの幅、花びらの長さ、ペタルの幅に依存します」

myFormula <-この行の一部は、myFormulaという名前のオブジェクトに数式を格納するので、Rコードの他の部分でも使用できます。


R

における式オブジェクトの他の一般的な用途をlatticeパッケージはspecify the variables to plotにそれらを使用します。
ggplot2パッケージは、specify panels for plottingにそれらを使用します。
dplyrパッケージでは、non-standard evaulation用にパッケージが使用されています。

+0

もう少し広範囲にわたる議論のために:http://stackoverflow.com/questions/8055508/the-tilde-operator-in-r/8055683#8055683 –

+0

['lazyeval' vignette]の 'formula'セクション(https: //cran.r-project.org/web/packages/lazyeval/vignettes/lazyeval.html)は、式が何であるかをよく紹介しています – RobinL

61

Rは、式で使用する~(チルダ)演算子を定義します。式には、用途のすべての種類を持っていますが、おそらく最も一般的なのは、回帰のためにある:

library(datasets) 
lm(myFormula, data=iris) 

help("~")またはhelp("formula")は、より多くのお教えします。

@Spacedmanは基本をカバーしています。それがどのように機能するかについて話しましょう。

まず、操作者である、それは本質的に機能するショートカット(2つと引数)であることに注意:

> `~`(lhs,rhs) 
lhs ~ rhs 
> lhs ~ rhs 
lhs ~ rhs 

例えばにおける使用のために知ることが有用であることができますapplyファミリコマンド。

第二に、あなたはテキストとして式を操作することができます

oldform <- as.character(myFormula) # Get components 
myFormula <- as.formula(paste(oldform[2], "Sepal.Length", sep="~")) 

第三に、あなたはリストとしてそれを操作することができます

myFormula[[2]] 
myFormula[[3]] 

は最後に、といくつかの有用なトリックがあります公式(詳細についてはhelp("formula")を参照してください):

myFormula <- Species ~ . 

たとえば、ドットは「未使用のすべての変数」を意味するため、上記のバージョンは元のバージョンと同じです。これは最終的なモデル呼び出しで使用するdata.frameを見て、data.frameにどの変数が存在するかを見ていますが、数式で明示的に言及されていない変数を見て、それらの欠損変数でドットを置き換えます。

+0

回答ありがとうございます@Ari B. Friedmanしかし最後の行は少し曖昧ですあなたは 'ドット'はまだ使用されていないすべての変数を意味します。あなたはそれをさらに説明することができます。 – Ankita

+4

@Ankitaは、この文脈では「まだ使用されていません」とは言及していません。 'Species〜.'では、speciesは使用されている唯一の変数です。したがって、data.frameの他のすべての変数に依存します。 – voidHead