Statistisches Programmieren



Ähnliche Dokumente
Programmierkurs Java

Excel Funktionen durch eigene Funktionen erweitern.

Java Einführung Operatoren Kapitel 2 und 3

2. Programmierung in C

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

LU-Zerlegung. Zusätze zum Gelben Rechenbuch. Peter Furlan. Verlag Martina Furlan. Inhaltsverzeichnis. 1 Definitionen.

Einführung in. Logische Schaltungen

Übungskomplex Felder (1) Eindimensionale Felder Mehrdimensionale Felder

Einführung in die Java- Programmierung

Professionelle Seminare im Bereich MS-Office

Übungen Programmieren 1 Felix Rohrer. Übungen

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis

Übung 4: Einführung in die Programmierung mit MATLAB

Einführung in die Java- Programmierung

Kapitel 15. Lösung linearer Gleichungssysteme

Kurzeinführung LABTALK

Lineare Gleichungssysteme

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

R-Tutorial. R bietet zahlreiche Hilfe-Funktionen an. Informiere Dich über die Funktion log():

Visio Grundlagen. Linda York. 1. Ausgabe, Oktober 2013

Grundbegriffe der Informatik

Einführung in die Programmierung (EPR)

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Erwin Grüner

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

> patienten<-data.frame( c(28,61,79,54,na,48), c(2,2,3,2,1,1), c("pillen","pillen","massage","gymnastik","massage","gymnastik"),

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03

Tutorial: Homogenitätstest

Anleitung zum erstellen einer PDF-Datei aus Microsoft Word

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

DHBW Karlsruhe, Vorlesung Programmieren, Klassen (2)

Zm Eingewöhnen Aufgabe 1 Schreiben Sie ein Programm, daß Ihren Namen in einem Fenster ausgibt.

Objektorientierte Programmierung

Faktura. IT.S FAIR Faktura. Handbuch. Dauner Str.12, D Mönchengladbach, Hotline: 0900/ (1,30 /Min)

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Internet Explorer Version 6

Einfaches Datenmanagement in R

Einkaufslisten verwalten. Tipps & Tricks

Anwendungspraktikum aus JAVA Programmierung im SS 2006 Leitung: Albert Weichselbraun. Java Projekt. Schiffe Versenken mit GUI

Schnellanleitung: Verbuchung von Studien- und Prüfungsleistungen

Einführung in die Programmierung

Theoretische Grundlagen der Informatik

Modellierung und Programmierung 1

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Programmiersprachen und Übersetzer

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

Bedienungsanleitung Anlassteilnehmer (Vereinslisten)

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

4 Aufzählungen und Listen erstellen

Anwendungsbeispiele Buchhaltung

der Eingabe! Haben Sie das Ergebnis? Auf diesen schwarzen Punkt kommen wir noch zu sprechen.

Austausch- bzw. Übergangsprozesse und Gleichgewichtsverteilungen

Diana Lange. Generative Gestaltung Operatoren

Schnelleinstieg. Datenimport für die EXPOSÉ - Familie. Import von Adress / Objektdaten aus MS Excel. = Datenintegration aus anderen Lösungen

Running R. Windows Aus Menü. Lese R Code ein führt den Code auch gleich aus, eventuell muss vorher das Verzeichnis gewechselt werden.

my.ohm Content Services Autorenansicht Rechte

Zeichen bei Zahlen entschlüsseln

Musterlösungen zur Linearen Algebra II Blatt 5

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)

Einfache kryptographische Verfahren

Berechnungen in Access Teil I

Praktische Mathematik: Lineare und Netzwerk-Optimierung (SS 2015) Praktikumsaufgaben

Zur drittletzten Zeile scrollen

Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Lineare Gleichungssysteme

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

Übungen für Woche 10

EasyWk DAS Schwimmwettkampfprogramm

Einführung in das Programmieren Prolog Sommersemester Teil 2: Arithmetik. Version 1.0

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Ohne Fehler geht es nicht Doch wie viele Fehler sind erlaubt?

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Bedingungen. Bedingungen. Bedingungen

Mathematik: Mag. Schmid Wolfgang Arbeitsblatt 3 1. Semester ARBEITSBLATT 3 RECHNEN MIT GANZEN ZAHLEN

2. Grundlagen der technischen Software - Beispiel: MathCAD 2.1 Einführung 2.2 Grundlagen an Beispielen

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser

Bedienungsanleitung EKZ Preis- und Produktvergleichsrechner

Sowohl die Malstreifen als auch die Neperschen Streifen können auch in anderen Stellenwertsystemen verwendet werden.

Umgang mit der Software ebuddy Ändern von IP Adresse, Firmware und erstellen von Backups von ewon Geräten.

Dossier: Rechnungen und Lieferscheine in Word

Einführung in die Programmierung

Kostenstellen verwalten. Tipps & Tricks

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

Sin-Funktion vgl. Cos-Funktion

Abituraufgabe zur Stochastik, Hessen 2009, Grundkurs (TR)

Partnerportal Installateure Registrierung

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Konzepte der Informatik

Datenbanken Kapitel 2

efa elektronisches Fahrtenbuch im Berliner Ruder-Club

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Datentypen. Agenda für heute, 4. März, Pascal ist eine streng typisierte Programmiersprache

Transkript:

Statistisches Programmieren Session 1 1 Was ist R R ist eine interaktive, flexible Software-Umgebung in der statistische Analysen durchgeführt werden können. Zahlreiche statistische Funktionen und Prozeduren werden zur Verfügung gestellt und die Software ist frei erhältlich. Der Syntax und der grundlegende Aufbau orientiert sich an der kommerziellen Software S. R bietet außer der Möglichkeit statistische Analysen durchzuführen 1. Stukturen einer Programmiersprache (Loops, Branches, Funktionskonstrukt) 2. Möglichkeiten der graphischen Datenanalyse. 3. Schnittstellen zu Datenbanken, Excel,... 2 Die R Console - ein besserer Taschenrechner In der R-Konsole hat man die Möglichkeit einfache Rechnungen durchzuführen und Funktionen aufzurufen. Arithmetische Operationen werden mit den Symbolen +, -, *, / bzw ˆ notiert. > 1+1 [1] 2 > 2^{0.5} [1] 1.414214 > (1+1)*7 [1] 14 > 1+1*7 [1] 8 > 2.1/2 [1] 1.05 Funktionsaufrufe sind von der Form funktionsname(argument1, argument2,... ). Zum Beispiel kann man 2 auch durch den Befehl 1

> sqrt(2) [1] 1.414214 berechnen. Andere Beispiele sind > exp(2) [1] 7.389056 > log(7.389056) [1] 2 > factorial(100) [1] 9.332622e+157 > sin(sqrt(2)) [1] 0.987766 Achtung: R ist case sensitve, d.h. SQRT(2) oder Sqrt(2) würden eine Fehlermeldung produzieren. > Sqrt(2) Fehler: konnte Funktion Sqrt nicht finden R kennt eine Vielzahl von Funktionen. Um die genaue Funktionsweise einer Funktion herauszufinden, kann man sich der Funktion help bedienen. Der Syntax ist help(funktionsname). Zum Beispiel > help(sqrt) Hat eine Funktion mehr als ein Argument, so muss man entweder die genaue Reihenfolge der Argumente kennen oder man benennt die übergebenen Werte entsprechend der Argumentnamen. Die Funktion round() hat zum Beispiel die Argumente x und digits. Nach dem Gesagten sind also folgende Befehle gleichbedeutend > round(sqrt(2),2) [1] 1.41 > round(x=sqrt(2), digits=2) [1] 1.41 > round(digits=2, x=sqrt(2)) [1] 1.41 Manche Argumente in einem Funktionsaufruf werden unbedingt benötigt, während andere Argumente optional sind. Optionale Argumente haben immer 2

einen Standardwert, der verwendet wird, wenn das Argument nicht spezifiziert wird. Das Argument digits der Funktion round() ist zum Beispiel ein optionales Element mit Standardwert 0. > round(sqrt(2)) [1] 1 Die Namen der Argumente und welche Argumente optional sind, ist der sogenannten Signatur der Funktion (Funktionsname und Argumente) zu entnehmen. Die Signatur einer Funktion findet sich in dem entsprechenden Eintrag in der Hilfe. Die Signatur von round() ist zum Beispiel: round(x, digits = 0). Die Tatsache das dem Argument Digits der Wert 0 zugewiesen wird, signalisiert, dass das Argument den Standardwert 0 hat und daher ein optionales Element ist. 3 Variablen und Zuweisungen R bietet die Möglichkeit, Ergebnisse von Berechnungen in Variablen zu speichern. Dies ist offensichtlich bei Rechnungen, die aus mehreren Teilschritten bestehen, eine Notwendigkeit. R kennt folgende grundlegende (atomare) Typen von Variablen 1. numeric: Integer und Double Datentyp, mögliche Werte: Zahlen x zwischen mit x <= 1.7976931348623157 10 308 und (64 bit, double precision) 2. complex: complexe Zahlen 3. logical: logischer Datentyp, mögliche Werte: TRUE und FALSE 4. character: Zeichen, mögliche Werte: Buchstaben, Zahlen, Satzzeichen,... Zuweisungen erfolgen mittels der Operatoren < oder > Operatoren. Der Inhalt einer Variable kann überprüft werden, indem man den Variablennamen eingibt. Wie auch bei Funktionsnamen gilt auch für Variablennamen, dass R case sensitive ist. 3

(> a <- 1) [1] 1 > (sqrt(2) -> b) [1] 1.414214 > (c <- a>b) [1] FALSE > (d <- a<b) [1] TRUE > (e = :) ) [1] :) Um zu überprüfen, von welchem Datentyp eine bestimmte Variable ist, verwendet man die Funktion mode() oder alternativ is.type(). > mode(a) [1] numeric > is.numeric(a) [1] TRUE > is.logical(a) [1] FALSE > is.logical(is.numeric(a)) [1] TRUE Die erzeugte Variablen bleiben im Speicher bis R beendet wird. Um sich einen Überblick über die sich im Speicher befindlichen Variablen zu verschaffen, kann man die Funktion ls() verwenden. Um eine detailliertere Liste zu erhalten, verwendet man ls.str(). > a <- 1 > b <- TRUE > c <- 1:100 > ls() [1] a b c > ls.str() a : num 1 b : logi TRUE c : int [1:100] 1 2 3 4 5 6 7 8 9 10... Um Variablen aus dem Speicher zu löschen, verwendet man den Befehl rm(variablenname). Angewandt auf die obige Situation: 4

rm(a) ls() [1] b c Man kann statt einem Variablennamen auch eine Liste von Variablennamen übergeben. Insbesondere löscht der Befehl rm(list=ls()) alle momentan definierten Variablen aus dem Workspace. 4 Vektoren, Matrizen und Arrays 4.1 Vektoren Einzelne Variablen können zu Vektoren zusammengefasst werden. Hierbei kann man sich der Funktion c() auf folgende Weise bedienen > (a <- c(1,2,3)) [1] 1 2 3 > c(a, 4, 5) [1] 1 2 3 4 5 Mit numerischen Vektoren kann man genauso wie mit Zahlen rechnen. Operationen werden hierbei Punktweise durchgeführt. 5

> (a <- 1:3) [1] 1 2 3 > a+5 [1] 6 7 8 > (b = 4:6) [1] 4 5 6 > a*b [1] 4 10 18 > a+b [1] 5 7 9 > a-b [1] -3-3 -3 > a/b [1] 0.25 0.40 0.50 > fahrenheit <- c( 17, 32, 0, 104, -12) > (celsius <- (fahrenheit - 32) * 5/9) [1] -8.333333 0.000000-17.777778 40.000000-24.444444 > a+b==5 [1] TRUE FALSE FALSE Für logische Vektoren sind die logischen Operatoren & (und), (oder) und! (nicht) definiert. Die Funktion xor() liefert das exklusive Oder. > a <- c(false, TRUE, TRUE, TRUE, FALSE) > b <- c(true, TRUE, TRUE, FALSE, FALSE) > a b [1] TRUE TRUE TRUE TRUE FALSE > a&b [1] FALSE TRUE TRUE FALSE FALSE >!a [1] TRUE FALSE FALSE FALSE TRUE > xor(a,b) [1] TRUE FALSE FALSE TRUE FALSE R bietet zahlreiche Methoden zur Datenkonversion an. Konversionen werden mit der Funktion as.type() durchgeführt. 6

> (a <- 1:10) [1] 1 2 3 4 5 6 7 8 9 10 > as.character(a) [1] 1 2 3 4 5 6 7 8 9 10 > as.numeric(a) [1] 1 2 3 4 5 6 7 8 9 10 > b <- c(0, 1, 2, 3, 0, 0) > as.logical(b) [1] FALSE TRUE TRUE TRUE FALSE FALSE 4.2 Matrizen Matrizen können in R zum Beispiel mit der Funktion matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL) generiert werden. Das Argument data sollte hierbei eine Vektor sein, der die Einträge der Matrix enthält. Die Argumente nrow und ncol bestimmen die Form der Matrix. > matrix(1:16, ncol=4, nrow=4) [,1] [,2] [,3] [,4] [1,] 1 5 9 13 [2,] 2 6 10 14 [3,] 3 7 11 15 [4,] 4 8 12 16 > matrix(1:16, ncol=8, nrow=2) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [1,] 1 3 5 7 9 11 13 15 [2,] 2 4 6 8 10 12 14 16 Das logische Argument byrow kann verwendet werden, um zu bestimmen, ob Matrizen spalten- oder zeilenweise eingelesen werden sollen (default: spaltenweise). Matrizen können mit den Funktionen cbind und rbind spalten- bzw zeilenweise zusammengefügt werden (siehe Hilfe). In R erlaubt es mit Matrizen wie gewohnt zu rechnen. Die Operatoren +, funktionieren wie erwartet (punktweise), während bei zwischen punktweiser Multiplikation mit und Matrixmultiplikation mit % % unterschieden wird. 7

> A = matrix(1:4, nrow=2, ncol=2) > A%*%A [,1] [,2] [1,] 7 15 [2,] 10 22 > A*A [,1] [,2] [1,] 1 9 [2,] 4 16 4.3 Arrays Vektoren können als eindimensionale Arrays und Matrizen als zweidimensionale Arrays aufgefasst werden. R bietet die Möglichkeit auch Arrays höherer Dimension zu definieren. Analog zu Matrizen gibt kann ein Array mittels der Funktion array(data = NA, dim = length(data), dimnames = NULL) erzeugt werden. Zu beachten ist hierbei, dass die Dimensionen des Arrays hier mittels des Vektors dim spezifiziert werden (vergleiche nrows und ncols im Falle einer Matrix). 4.4 Indizierung Um auf Elemente einer Matrix zugreifen zu könne,n bedient man sich der eckigen Klammern. Die Indizierungsmechanismen sind prinzipiell für Vektoren, Matrizen und Arrays gleich. Es gibt grundsätzlich zwei Arten der Indizierung. Einerseits kann man die Positionen der Werte angeben, die man ansehen oder ändern will... 8

> x=8:1 > x[2] [1] 7 > x[c(2,4)] [1] 7 5 > A = matrix(x, nrow=2, ncol=4) > A[1,3] [1] 4 > A[2, 4] [1] 1 > A[3,1] Fehler: Indizierung außerhalb der Grenzen > A[cbind(c(1,2), c(2,2))] [1] 6 5 > B = array(x, c(2,2,2)) > B[1,2,1] [1] 6... andererseits kann man sich der logischen Indizierung bedienen. Bei der logischen Indizierung wird eine Datenstruktur (Vektor, Matrix, Array) von logischen Variablen übergeben, die die selbe Dimension hat wie die zu indizierende Struktur. Die logische Variable wählt die Elemente aus, an deren Position sie selbst den Wert TRUE aufweist. > x[c(true, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE)] [1] 8 6 5 1 > x[x<=3] [1] 3 2 1 > x[x%%3 == 0] [1] 6 3 > A[x<=4 & x%%2==1] [1] 3 1 9

5 Beispiele 1. Generiere einen Vektor, der alle Geraden Zahlen von 2 bis 20 enthält (a) mittels dem : Operator (b) mittels der Funktion seq 2. Generiere die Vektoren aus Beispiel 1 in umgekehrter Reihenfolge. 3. Generiere einen Vektor, der aus allen durch 5 teilbaren und allen durch 3 teilbaren Zahlen von 1 bis 20, und keine Zahl doppelt enthält. Benutze zur Lösung die Funkion union(), um die Vektoren der Zahlen, die durch 3 bzw 5 teilbar sind, zu vereinigen. 4. Löse Beispiel 3 mittels logischer Indizierung des Vektors 1:20. Erstelle hierzu mittels des Modulo-Operators %% einen logischen Indexvektor. 5. Benutze die Funktion sort(), um den Vektor [1, 13, 4, 8, 5, 2] aufsteigend bzw absteigend zu sortieren. 6. Berechne die Stichprobenvarianz von [1 3 13 105], mittels der Funktion sum() und Vektoroperationen. 7. (a) Erzeuge eine (n n) Matrix A = (a ij ) n i,j=1 mit a ij = (j 1) n + i. Benutze die Funktion matrix(). (b) Verwende die Matrix A, um eine Matrix B zu erzeugen, die punktweise multipliziert mit einer beliebigen (n n) Matrix C = (c ij ) n i,j=1, folgendes Ergebnis produziert { c ij, i j B.C = 0, sonst Also die entsprechende obere Dreiecksmatrix extrahiert. 8. Erzeuge eine (n n) Matrix B die punktweise multipliziert mit einer beliebigen Matrix A, eine Matrix C ergibt in der alle Einträge außerhalb eines Bandes um die Diagonale 0 sind und alle Einträge innerhalb des Bandes mit den entsprechenden Einträgen von A übereinstimmen. Zum Beispiel 1 3 5 6 8 10 2 1 0 3 π 2 4 8 7 3 9 6 5 5 4 e 17 2 13.B = 1 3 0 0 0 10 2 1 0 0 0 2 4 8 0 0 0 6 5 5 0 0 0 2 13 extrahiert B 1 aus einer (5 5) Matrix das entsprechende Band der Breite 3. 10

9. Gegeben seien die Datenpunkte y = (17.899, 14.62, 12.79, 6.672012) und x 1 = (12, 19, 22, 12). Bestimme den OLS Schätzer (mit Intercept) ˆβ = ( ˆβ 1, ˆβ 2 ) des linearen Modelles y = Xβ + u durch geeignete Matrixoperationen. 11