Verwendung von ~ (Tilde) in R Programmiersprache

Ich habe in einem Tutorial zur Regressionsmodellierung den folgenden Befehl gesehen:

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

Was genau macht dieser Befehl und was ist die Rolle von ~ (Tilde) im Befehl?

   

Die Sache rechts von < - ist ein formula . Es wird oft verwendet, um ein statistisches Modell zu bezeichnen, wobei das Ding links von ~ die Antwort ist und die Dinge rechts von ~ die erklärenden Variablen sind. Also in Englisch würde man etwas wie "Art hängt von Kelchblattlänge, Kelchblattbreite, Blütenblattlänge und Blütenblattbreite" sagen.

Der myFormula < - Teil dieser Zeile speichert die Formel in einem Objekt namens myFormula so dass Sie es in anderen Teilen Ihres R-Codes verwenden können.


Andere häufige Verwendungen von Formelobjekten in R

Das lattice verwendet diese, um die zu plottenden Variablen zu spezifizieren .
Das ggplot2 Paket verwendet diese zum ggplot2 Panels zum Plotten .
Das dplyr Paket verwendet sie für die nicht standardmäßige Auswertung .

R definiert einen ~ (Tilde) Operator zur Verwendung in Formeln. Formeln haben alle möglichen Anwendungen, aber am häufigsten ist die Regression:

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

help("~") oder help("formula") bringt Ihnen mehr bei.

@ Spacedman hat die Grundlagen abgedeckt. Lassen Sie uns diskutieren, wie es funktioniert.

Beachten Sie zunächst, dass es sich bei einem Operator um eine Verknüpfung zu einer function handelt (mit zwei Argumenten):

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

Das kann hilfreich sein, um zB Familienbefehle apply .

Zweitens können Sie die Formel als Text bearbeiten :

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

Drittens können Sie es als Liste manipulieren:

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

Schließlich gibt es einige hilfreiche Tricks mit Formeln (siehe help("formula") für mehr):

 myFormula < - Species ~ . 

Zum Beispiel ist die obige Version die gleiche wie die ursprüngliche Version, da der Punkt "alle Variablen noch nicht verwendet" bedeutet. Dies betrachtet den data.frame, den Sie in Ihrem eventuellen Modellaufruf verwenden, sieht, welche Variablen im data.frame vorhanden sind, aber nicht explizit in Ihrer Formel erwähnt werden, und ersetzt den Punkt durch die fehlenden Variablen.