ϕ(f) ist ja aus dem Vektorraum der Polynome Show Nein, das f ist daraus. Das Bild ist jeweils ein Element aus R^3 , also $$ϕ(1) = \begin{pmatrix} 1\\1\\1 \end{pmatrix} ϕ(x) = \begin{pmatrix} 0\\1\\2 \end{pmatrix} ϕ(x^2) = \begin{pmatrix} 0\\1\\4 \end{pmatrix} $$ Setze ich jedes Mal für X={1,2,3} ein? Nein 0,1,2 ! ϕ(x) = ( 0, 1, 2) ergibt sich aus der Definition (wenn man die Spalte als Zeile schreibt, das kannst du ja dann anpassen.) ϕ(f) := ( f(0) , f(1) , f(2) ) für das Polynom x hast du ja ausführlich f(x) = 0 + 1*x + 0*x^2 also ist dann f(0) = 0 + 1*0 + 0*0^2 = 0 f(1) = 0 + 1*1 + 0*1^2 = 0 + 1 + 0 = 1 f(2) = 0 + 1*2 + 0*2^2 = 2 entsprechend bei x^2 f(x) = 0 + 0*x + 1*x^2 Da musst du ja dann zu dem Vektor (u,v,w) das passende Polynom finden. Mit dem Ansatz f(x) = a+bx+cx^2 hättest du beim Einsetzen von ( 0;u) , (1;v) und (2;w) die Gleichungen u = f(0) = a und dieses Gleichungssystem nach a,b,c, auflösen und du hast dein Polynom. Oder sind das einfach Platzhalter für einen Vektor im R³? Ja, du musst ja überlegen: Wie komme ich von einem gegebenen Vektor von R^3 (Den nenne ich mal (u,v,w).) zu dem Polynom ? Und wie kommst du auf die Gleichungen? Das ist so ähnlich wie du den Term eines Polynoms bestimmst, dessen Graph durch 3 vorgegebene Punkte gehen soll . Diese sind dann ( 0;u) , (1;v) und (2;w) und die Ergebnisse für a,b,c musst du dann durch u,v,w ausdrücken , etwa so a=u und b= -1,5u +2v - 0,5w und c= 0,5u - v +0,5w . Also ist die Umkehrabbildung (u,v,w) ↦ f(x) = u +( -1,5u +2v)x +(0,5u - v +0,5w)x^2 Im letzten Abschnitt habt ihr R als glorifizierten Taschenrechner gesehen. Zuerst ein bisschen Terminologie:
Oder in der Sprach-Analogie: Alles was in R existiert (Variablen, Tabellen, etc.) ist ein Nomen (Objekt) und alles, was etwas tut, ist ein Verb (Funktion). GrundfunktionenDie einfachsten Funktionen haben wir in Form der Rechenzeichen Eine der wichtigsten Grundfunktionen ist
Was wir hier sehen ist der Unterschied zwischen Funktionen, die aus mehreren Zahlen eine machen ( Eine weitere praktische Funktion ist \[\bar{x} = \frac{1}{n} \sum^n_{i=1} x_i\] …und wir das übersetzen in “Die Summe aller Werte geteilt durch die Anzahl der Werte”, dann können wir statt
Ihr seht vielleicht so langsam, wieso wir das mit den Klammern und den Leerzeichen für die Lesbarkeit erwähnt haben. FunktionsbeispieleWenn ihr R lernt, werdet ihr erfahrungsgemäß die meiste Zeit damit verbringen herauszufinden wie bestimmte Funktionen funktionieren und welche Funktion für euer Vorhaben die richtige ist. Funktionen sind zwar vom Schema immer gleich — ihr steckt irgendwelche Argumente rein, und es kommt irgendein Ergebnis raus — aber wie die Argumente
aussehen unterscheidet sich von Funktion zu Funktion.
Der default für Einige andere Funktionen, die insbesondere zum Lernen und Ausprobieren praktisch sind, werden zur Erstellung von Sequenzen benutzt — also Reihen von Zahlen in einem bestimmten Muster:
Das
VariablenWenn Funktionen wie Verben sind, dann sind Variablen wie Nomen. Sie haben einen Namen, und mit ihnen kann man Dinge tun. Oder sogar Sachen machen.
Hier haben wir die Zahlen An dieser Stelle bietet es sich an, einen neuen Typ einzuführen: Den String (oder auch Wichtig dabei ist, dass sich Anführungszeichen ähnlich verhalten wie Klammern. Wenn wir einen String mit
Wir können auch Zahlen in Ihr sehr jetzt vermutlich die Meldung
Was es mit Eine letzte Sache noch: Strings sind “dominanter” als Zahlen, das heißt, wir können zwar Zahlen
verbinden zu Merke: Ein Vektor in R muss immer Elemente des gleichen Typs haben, Zahlen und Buchstaben zusammen werden zu Strings konvertiert! TabellenJetzt haben wir schonmal das Vokuabular an der Hand um Zahlen und beliebige Strings in R zu verarbeiten, aber noch ist das alles etwas unahndlich um damit richtig zu arbeiten. Stellt euch vor, wir wollen einen kleinen Datensatz erstellen über die Statistiktutorien in QM mit Variablen wie Namen, Alter, und vielleicht sowas wie Beliebtheit auf einer Skala von 1-10.
Schön und gut, aber das ist ja unhandlich. Was, wenn wir die Namen aller TutorInnen haben wollen, die jünger als 30 sind? Alles was wir mit Um mehrere Variablen in Kontext zu setzen, gibt es tabellarischen Datenstrukturen, namentlich nennt sich sowas in R dann
Was haben wir da gemacht?
Das Ergebnis ist eine Variable Tabellen, und damit
Das mit den “Levels” wird im Abschnitt zu Datentypen erklärt Was wir hier benutzen nennt sich Subsetting, also im Grunde nur einen Teil von etwas rausholen. Hier also einen Teil der Tabelle on Form einer einzelnen Spalte. Umgang mit TabellenDa wir noch nicht an dem Punkt sind, wo wir beliebige Daten einlesen können, und wir natürlich zu faul sind uns eine größere Tabelle selber zu schreiben, greifen wir zu
Übungszwecken mal auf einen Datensatz zurück, der bei R von Haus aus mitgeliefert wird: Dieser Datensatz beinhaltet die Daten aus einer Medikamentenstudie, bei der es um Schlafgewinn bzw. -verlust ging. Die Tabelle hat drei Spalten (Variablen) zu 10 Personen:
Wie viele Zeilen hat die Tabelle?
Die number of rows bekommen wir mit
Surprise! Okay, aber was interessiert uns an diesem Datensatz jetzt? Wie wäre es mit dem durchschnittlichen Schlafzuwachs:
Schön und gut, aber wir wollen ja vermutlich die beiden Gruppen (Medikamente) vergleichen, also was tun?
Okay, Schritt für Schritt. Wieso dann eigentlich noch diese
Die allgemeine Form ist
Bei einer Tabelle ist es nützlich mit Zeilen und Spalten zu arbeiten, um die gewünschten Werte rauszuholen, aber bei einem Vektor gibt es in diesem Sinne nur eine Dimension.
Vermutlich verwirrt euch das ganze Geklammere jetzt mehr oder weniger stark, aber glaubt mir, wenn wir erstmal ein Gefühl dafür habt ist es sehr viel Wert diese Grundlagen auf dem Schirm zu haben (oder sie zumindest nachlesen zu können), denn in der ersten Zeit eurer R-Nutzung werdet ihr
massenhaft kleinere und größere Fehler in dieser Art machen, wo ihr zwar das richtige meint, aber R nicht das richtige sagt. Wir schneiden das Ganze Thema Subsetting hier auch erstmal nur an, aber wenn ihr’s jetzt schon ganz genau wissen wollt, könnt ihr die Details hier nachlesen Logische VergleicheLogik! Eine Welt des Spaßes, der internen Konsistenz[^Naja, fast. Aber Gödel lassen wir mal aus.] und der unendlichen Anwendbarkeit in allen Bereichen. Wir brauchen Logik in R in erster Linie zum indizieren von Objekten. Das heißt, wenn wir alle Zeilen einer Tabelle haben wollen, für die eine bestimmte Variable einen bestimmten Wert hat oder eine Bedingung erfüllt, dann drücken wir das durch Logik aus. Dasselbe funktioniert natürlich auch bei Vektoren (und strenggenommen funktioniert Tabellenindizierung sowieso über Vektorindizierung). Man nehme folgendes Beispiel:
Das heißt: “Nimm die Tabelle Das Ergebnis eines logischen Vergleichs ist immer entweder
Hier haben wir uns effektiv nur die ersten beiden Werte des Vektors
Wichtig hierbei ist, dass der logische Vektor ein ganzer Faktor des Zielvektors ist, das heißt, dass die Anzahl der Element im Zielvektor ganz durch die Anzahl der Elemente im logischen Vektor
teilbar sein muss (also ohne Rest), ansonsten bekommen wir potenziell schwer vorhersagbare Ergebnisse. OperatorenEs gibt eine Reihe logischer Operatoren wie hier
Diese Ausdrücke können wir auch auf bestimmte Arten verknüpfen:
Spezielle TestsDie obigen Operatoren können wir für getrost für Vektorvergleiche benutzen, aber es gibt noch ein paar Sonderfälle. Was zum Beispiel, wenn wir nur generell wissen wollen, ob ein Element wie eine Zahl oder ein String in einem Vektor enthalten ist? Oder was, wenn wir wir auf spezielle Typen oder Klassen testen wollen? Was das im Detail heißt sehen wir in den entsprechenden Abschnitten zu Datentypen noch einmal, aber hier schonmal eine Kurzreferenz:
Indexing: BeispieleDas war jetzt relativ viel Information, und ihr müsst euch das auch nicht alles sofort merken, sondern nur wissen, wo ihr’s bei Bedarf nachschlagen könnt. VektorenVektoren werden immer elementweise verglichen, das heißt, dass das Ergebnis von
Das Ganze lässt sich natürlich beliebig komplex aussehen lassen, weshalb zu viele Bedingungen in Kombination etwas verwirrend aussehen können.
Tabellen |