Hausarbeit (Wiederholung)

Ähnliche Dokumente
Programmieren mit statistischer Software Sommersemester Hausarbeit

PSYCHOLOGIE F R E U N D S C H A F T M E N S C H E N M A S S E N L I E B E

Woche 1: Interpretation und Wahrnehmung

zum 60-sten Geburtstag der DGQ

Multivariate Verfahren

Vorname: Nachname: Matrikel-Nr.: Klausur Statistik

Übungsblatt vom Kontinent: Kontinent dem das Land zugehört. Europa: 1=europäisches Land; 0=auÿereuropäisches Land

Multivariate Verfahren

Programmieren mit statistischer Software

Kurzanleitung für SPSS Statistics 22

1 Berechnung von Summen (ca = 10 Punkte)

Bitte am PC mit Windows anmelden!

Schriftliche Prüfung zur Computergestützten Mathematik zur Linearen Algebra (PO 2014: Erste Klausur / PO 2008: Klausur)

Einstieg in SPSS. Man kann auch für jede Ausprägung einer Variablen ein Wertelabel vergeben.

Bivariate explorative Datenanalyse in R

Die Formel für die Standardabweichung lautet (ohne die Wurzel haben wir die Varianz):

Programmieren mit Statistischer Software - Simulationen -

Variablen in MATLAB. Unterschiede zur Mathematik: Symbolisches und numerisches Rechnen. Skriptdateien. for-schleifen.

Grundlagen der Bioinformatik Übung 5 Einführung in R. Ulf Leser, Yvonne Mayer

Einführung in SPSS. Sitzung 2: Datenbereinigung und Datenmanagement. Knut Wenzig. 9. Dezember 2004

Theorie-Teil: Aufgaben 1-3: 30 Punkte Programmier-Teil: Aufgaben 4-9: 60 Punkte

FERNUNIVERSITÄT IN HAGEN WIRTSCHAFTSWISSENSCHAFT

PROC MEANS. zum Berechnen statistischer Maßzahlen (für quantitative Merkmale)

Statistische Software (R)

Workshop Statistik mit R

WiMa-Praktikum 1. Woche 8

Wegweiser zum Wesentlichen Nr.8 Rituale (1) - Januar 2006

Statistisches Testen

Grundlagen der Bioinformatik Assignment 4: Introduction to R. Yvonne Lichtblau SS 2017

Klausur Statistik Lösungshinweise

Einführung in SPSS. Sitzung 2: Datenbereinigung und Datenmanagement. Knut Wenzig. 4. Dezember 2006

Statistische Datenanalyse mit R, R-Studio. Dr. Andrea Denecke Leibniz Universität IT-Services

Safety vs. Security. Arbeitsschutztagung Essen, den Sicherheit

Basis-Kurs Statistik und SPSS für Mediziner Lösungen. SPSS-Übung Statistische Tests

Praktikum zu XML: Übung 11

Musterlösung. Modulklausur Multivariate Verfahren

R-Wörterbuch Ein Anfang... ein Klick auf einen Begriff führt, sofern vorhanden, zu dessen Erklärung.

3.4 Bivariate Datenanalyse in R


Deskription, Statistische Testverfahren und Regression. Seminar: Planung und Auswertung klinischer und experimenteller Studien

Statistische Software (R)

Einführung in SPSS. Sitzung 2: Datenbereinigung und Datenmanagement. Knut Wenzig. 15. Dezember 2005

Sozialwissenschaftliche Fakultät der Universität Göttingen. Sommersemester 2009, Statistik mit SPSS

Ingenieurinformatik II Numerik für Ingenieure Teil 2

Programmieren mit statistischer Software

Aufgaben zu Kapitel 9

# Befehl für den Lilliefors-Test

Programmieren mit statistischer Software

6. Tutoriumsserie Statistik II

PROC NPAR1WAY. zum Durchführen des U-Tests für zwei unverbundene Stichproben (für quantitative nicht-normalverteilte Merkmale)

Klausur am 28. Januar 2005

Einführung in MATLAB

1 Univariate Statistiken

Übungsaufgaben. zahlen bis auf das 3. und 7. Element enthält. (e) Erstellen Sie einen Vektor. zahlen3, der ein Klon von

Übung Statistik I Statistik mit Stata SS Wiederholung und Probeklausur

Statistik Klausur Sommersemester 2013 Hamburg, BITTE LESERLICH IN DRUCKBUCHSTABEN AUSFÜLLEN!

Übung 1 im Fach "Biometrie / Q1"

Aufgaben zu Kapitel 9

Aufgaben zu Kapitel 8

Wahrscheinlichkeit 1-α: richtige Entscheidung - wahrer Sachverhalt stimmt mit Testergebnis überein. Wahrscheinlichkeit α: falsche Entscheidung -

14.3 Das Einstichprobenproblem in R

Formale Methoden der Ökonomik: Einführung in die empirische Wirtschaftsforschung

Übungszettel 2a - Python

THEMA: "STATISTIK IN DER PRAXIS TESTEN IST BESSER ALS VERMUTEN" TORSTEN SCHOLZ

4. Lösung weitere Übungsaufgaben Statistik II WiSe 2016/2017

11. Übungsblatt zur Vorlesung Ökonometrie SS 2014

Einführung in SPSS. Sitzung 4: Bivariate Zusammenhänge. Knut Wenzig. 27. Januar 2005

Auswertung und Lösung

hue12 January 24, 2017

Tutorial: χ 2 -Test auf vorgegebene Verteilung

Statistische Datenanalyse mit R, Statistische Tests. Dr. Andrea Denecke Leibniz Universität IT-Services

Statistik II. Version A. 1. Klausur Sommersemester 2011 Hamburg, BITTE LESERLICH IN DRUCKBUCHSTABEN AUSFÜLLEN!

Wirtschaftswissenschaftliches Prüfungsamt Bachelor-Prüfung Deskriptive Statistik und Wahrscheinlichkeitsrechnung Sommersemester 2011.

Ferienkurse Mathematik Sommersemester 2009

Ermitteln Sie auf 2 Dezimalstellen genau die folgenden Kenngrößen der bivariaten Verteilung der Merkmale Weite und Zeit:

Klausur zur BSc-Vorlesung Rechnergestützte Modellierung des WS Termin

Programmieren mit statistischer Software

Der χ 2 -Test. Überblick. Beispiel 1 (χ 2 -Anpassungstest)

Übungen zum MATLAB Kurs Teil

Primzahlen und Programmieren

Der χ2-test Der χ2-test

Einführung in SPSS Wintersemester 2000/2001

Prüfung aus Statistik 1 für SoziologInnen

Stochastik (BSc D-MAVT / BSc D-MATH / BSc D-MATL)

Softwarepraktikum. zu Elemente der Mathematik. Carsten Rezny Institut für angewandte Mathematik Universität Bonn

Übung 4 im Fach "Biometrie / Q1"

Übungen zur Vorlesung. Statistik 2

Aufgaben zu Kapitel 8

Die erhobenen Daten werden zunächst in einer Urliste angeschrieben. Daraus ermittelt man:

Häufige Mengen ohne Kandidatengenerierung

Eine Einführung in R: Grundlagen II

fh management, communication & it Constantin von Craushaar fh-management, communication & it Statistik Angewandte Statistik

Biometrisches Tutorial III

Die erhobenen Daten werden zunächst in einer Urliste angeschrieben. Daraus ermittelt man:

pue02 October 28, 2016

Sozialwissenschaftliche Fakultät der Universität Göttingen. Sommersemester Statistik mit SPSS

Regressionsmodelle mit Anwendungen in der Versicherungs- und Finanzwirtschaft Probeklausur Wintersemester 2017/

Transkript:

Programmieren mit statistischer Software Sommersemester 2016 Moritz Berger, Eva Endres Hausarbeit Organisatorisches Hausarbeit (Wiederholung) Diese Hausarbeit besteht aus 5 Aufgaben mit einer Gesamtpunktzahl von 244 Punkten. Durch die Abgabe dieser Hausarbeit können maximal 85 % der erreichbaren Gesamtpunktzahl für den Kurs Programmieren mit statistischer Software im Sommersemester 2016 erreicht werden. Die erreichte Gesamtpunkzahl für den Kurs Programmieren mit statistischer Software setzt sich aus der erreichten Punktzahl durch abgegebene Übungsaufgaben (maximal 15 %) und der erreichten Punktzahl durch die Abgabe dieser Hausarbeit (maximal 85 %) zusammen. Letztmöglicher Abgabetermin: 13. Januar 2017 (23:55 Uhr). Hinweise zur Bearbeitung Bitte geben Sie die Hausarbeit über Moodle ab. Eine Abgabe ist nur möglich, falls Sie sich für den Kurs eingeschrieben haben. Ihre erreichte Note können Sie nach der Korrektur ebenfalls über Moodle abrufen. Soweit nicht anders vorgegeben, verwenden Sie für Ihre Lösung ausschließlich die Vorlagendatei ProgStat16 Nachname Vorname.R. Benennen Sie die Datei entsprechend mit Ihrem Nach- und Vornamen. Tragen Sie in die R-Syntax-Datei ProgStat16 Nachname Vorname.R an ausgewiesener Stelle alle prüfungsrelevanten Informationen (vollständiger Name, Matrikelnummer, Studiengang, Prüfungsordnung) ein. Bitte geben Sie nur Ihre R-Syntax-Dateien ab. Machen Sie jeweils deutlich, welcher Programm-Code zu welcher (Teil-) Aufgabe gehört. Achten Sie darauf, dass Ihr Programm-Code grundsätzlich nachvollziehbar ist. Alle Teilschritte, die aufgrund eines fehlerhaften Programm-Codes eine nicht beabsichtigte Fehlermeldung erzeugen, werden mit 0 Punkten bewertet. Geben Sie eine sinnvoll und ordentlich kommentierte Syntax ab.

Aufgabe 1 (Datenanalyse und Grafiken) [48 Punkte] Laden Sie sich von der GESIS-Homepage 1 den ALLBUS-Datensatz ZA5240 v2-1-0.sav und die zugehörige Variablenliste herunter. Dazu müssen Sie sich vorher bei GESIS registrieren. Bitte geben Sie als Verwendungszweck für den Download der Daten Ich nutze die Daten im Rahmen des Studiums an. Die für die nachfolgenden Aufgaben relevanten Variablen sind in folgender Tabelle kurz beschrieben. Variable V12 V15 V18 V31 V225 V275 V277 Beschreibung FREIZEIT: BUECHER LESEN FREIZEIT: CHATTEN, SOZIALE NETZWERKE FREIZEIT: SPAZIERENGEHEN, WANDERN FREIZEIT: BESUCH MUSEEN, AUSSTELLUNGEN GESUNDHEITSZUSTAND BEFR. KOERPERGROESSE IN CM, BEFRAGTE<R> GEWICHT IN KG, BEFRAGTE<R> a) Lesen Sie den Datensatz mit folgendem Code ein. (Hinweis: Ignorieren Sie die dabei entstehenden Warnmeldungen.) library ( foreign ) allbus <- read.spss (" ZA5240 _v2-1 -0. sav ", to. data. frame =TRUE, use. value. labels = TRUE ) b) Erstellen Sie daraus einen neuen Teildatensatz teil.allbus, der nur die Variablen aus obiger Tabelle enthält. Weisen Sie den Variablen des Datensatzes teil.allbus aussagekräftige Namen zu. Kodieren Sie die Variablen, falls nötig, in geeigneter Weise um. Verwenden Sie für alle folgenden Teilaufgaben den Datensatz teil.allbus. c) Verschaffen Sie sich, unter Verwendung geeigneter Funktionen, einen Überblick über den Datensatz. d) Wie viele Ausprägungen hat die Variable V18? Welche Ausprägungen hat die Variable V12? e) Geben Sie die Anzahl der fehlenden Werte pro Variable in Form einer Tabelle aus. f) Erstellen Sie eine neue Variable BMI, die den BMI der Befragten beinhaltet. Gewicht in kg Hinweis: BMI = (Körpergröße in m) 2 g) Entfernen Sie aus dem Datensatz alle Beobachtungen, die einen fehlenden Wert in Variable BMI und/oder V12 beinhalten. h) Erstellen Sie mithilfe des Pakets ggplot2 eine Grafik (inkl. aussagekräftiger Beschriftung/Legende), die den BMI in Form von Boxplots getrennt nach der sportlichen Aktivität (V27) darstellt. Die Ausprägungen der Variable V15 sollen dabei zusätzlich in verschiedenen Farben hervorgehoben werden. Die Breite der Box soll jeweils proportional zur (Wurzel der) Anzahl der Beobachtungen in den Gruppen der Variable V15 sein. i) Berechnen Sie das mittlere Gewicht der Befragten, die einen guten Gesundheitszustand haben und mindestens einmal pro Woche wandern. j) Erzeugen Sie eine Kreuztabelle mit der Verteilung (absolute Häufigkeiten) der Variablen V12, V15, V18 und V31 (in den Spalten). Verwenden Sie dazu eine geeignete Funktion der apply-familie. k) Erstellen Sie eine neue R-Datei uebersicht nachname vorname.r und speichern Sie diese im Ordner, in dem Ihre Lösungsdatei ProgStat16 Nachname Vorname.R liegt. 1 https://dbk.gesis.org/dbksearch/sdesc2.asp?no=5240&tab=3&db=d&dab=0 2

l) Schreiben Sie in der Datei uebersicht nachname vorname.r eine Funktion uebersicht, die als Input einen Datensatz verlangt und folgenden Grundstruktur aufweist: uebersicht <- function ( daten ){ Die Funktion soll folgende Informationen ausgeben: Die Objektklasse des Datensatzes Die Anzahl der Beobachtungen des Datensatzes Die Anzahl der Variablen des Datensatzes Den Anteil der fehlenden Werte des Datensatzes. Der Output der Funktion in der Konsole soll (in etwa) wie folgt aussehen: Das Objekt gehört der Klasse data. frame an und beinhaltet 312 Beobachtungen von 4 Variablen. 10.25 Prozent der Einträge sind fehlende Werte. Des Weiteren soll die Funktion für jede Variable des Datensatzes eine Grafik auf dem Bildschirm ausgeben. Für jede numerische Variable soll der Output ein Boxplot und für jede Faktor-Variable ein Balkendiagramm sein. Als Überschrift der Grafiken soll der jeweilige Variablenname verwendet werden. Definieren Sie dafür eine geeignete plot-methode für die Objektklasse numeric. Machen Sie sich mit dem Grafikparameter ask vertraut und verwenden Sie ihn an geeigneter Stelle in Ihrer Funktion. m) Rufen Sie, mithilfe geeigneter Syntax, die von Ihnen in uebersicht nachname vorname.r definierte Funktion aus l) auf und wenden Sie die Funktion auf den Datensatz teil.allbus an. Hinweis: Denken Sie daran, auch die R-Syntax-Datei uebersicht nachname vorname.r über Moodle abzugeben. 3

Aufgabe 2 (Text und S3) [42 Punkte] Gegeben ist ein beliebiger Text, wie zum Beispiel: Nach eienr Stidue der Cmabridge Uinverstiaet ist es eagl, in wlehcer Reiehnfogle die Bchustbaen in Woeretrn vokrmomen. Es ist nur withcig, dsas der ertse und lettze Bchusatbe an der ricthgien Stlele ist. Der Rset knan total falcsh sein und man knan es onhe Porbelme leesn. Das ist, wiel das mneschilche Geihrn nciht jeden Bchustbaen liset, sodnern das Wrot als Gaznes. Krsas oedr??? oder Da e1 mei2t mit Wichtige1em be2chäftigt wa1, hatte Ein2tein mit Dingen de2 täglichen Leben2 gewi22e 2chwie1igkeiten. 2o konnte e1 wäh1end eine1 Vo1t1ag21ei2e 2eine Fah1ka1te nicht finden. E1 k1amte, 2uchte, d1ehte alle Ta2chen um, ve1geben2. De1 Fah1ka1tenkont1olleu1 hatte MItleid und 2agte, e1 2olle 2ich einfach eine neue Fah1ka1te kaufen und die alte al2 unbenutzt ein1eichen, wenn e1 2ie gefunden habe, e1 bekäme dann 2ein Fah1geld zu1ück. "Da2 i2t ja nicht da2 Schlimm2te", e1wide1te Ein2tein, äbe1 ohne Fah1ka1te weiß ich doch nicht, wohin ich eigentlich fah1en wollte. a) Schreiben Sie eine Funktion analyze_text, die eine deskriptive Beschreibung der Buchstaben, Ziffern und Satzzeichen eines Textes zurückgibt. Die Grundstruktur der Funktion soll folgendermaßen aussehen: analyze_ text <- function ( text ){ Rückgabe der Funktion ist eine Liste mit folgenden Elementen: Die Gesamtzahl an Zeichen des Textes (ohne Leerzeichen und Zeilenumbrüche) Die Anzahl an Buchstaben des Textes (inklusive Umlaute) Die Anzahl an Ziffern des Textes Die Anzahl an Satzzeichen des Textes Tabelle der im Text vorhandenen Buchstaben, nach absteigender Häufigkeit geordnet Tabelle der im Text vorhandenen Ziffern, nach absteigender Häufigkeit geordnet Tabelle der im Text vorhandenen Satzzeichen, nach absteigender Häufigkeit geordnet Die Funktion soll außerdem folgende Spezifikationen erfüllen: Die Elemente des Outputs sollen sinnvoll bezeichnet werden. Die Funktion soll auch einen sinnvollen Output erzeugen, falls eine der Komponenten (Buchstaben, Ziffern, Satzzeichen) gar nicht im Text vorkommt. Der Output der Funktion soll von der Objektklasse textanalyze sein. b) Definieren Sie eine print-methode für die Objektklasse textanalyze, die die Ergebnisse der Funktion analyze_text übersichtlich in der Konsole ausgibt. c) Führen Sie für die beiden obigen Beispieltexte eine Textanalyse mit der von Ihnen definierten Funktion in a) aus und geben Sie die Ergebnisse in der Konsole mithilfe von print aus. 4

Aufgabe 3 (Simulationen) [50 Punkte] Sie möchten in einer Simulation untersuchen, wie sich der Fehler 1. Art beim Testen mehrerer Hypothesen verhält. Gehen Sie dabei wie folgt vor. a) Schreiben Sie eine Funktion simulation.data, die einen Datensatz mit n Beobachtungen aus einer multivariaten Normalverteilung (Dimension r) mit Mittelwertsvektor µ und Kovarianz-Matrix Σ generiert. simulation.data <- function (n, mu, Sigma ){ Output der Funktion ist eine Matrix der Dimension n r. b) Schreiben Sie eine Funktion simulation.test, die für jede Spalte der Daten aus a), mithilfe eines zweiseitigen t-tests (Signifikanzniveau α), den empirischen Mittelwert mit dem wahren Mittelwert vergleicht und die zugehörigen p-werte ausgibt. simulation.test <- function ( data, mu, alpha ){ Output der Funktion ist ein Vektor der Länge r. c) Schreiben Sie eine Funktion simulation.repeat, die die Funktionen simulation.data und simulation.test wiederholt (n rep mal) aufruft und die entsprechenden Ergebnisse ausgibt. simulation. repeat <- function (n.rep, n, mu, Sigma, alpha ){ Output der Funktion ist eine Matrix der Dimension n rep r. d) Schreiben Sie eine Funktion simulation.result, die für den Output der Funktion simulation.repeat für jeden Testdurchlauf (zeilenweise) überprüft, ob mindestens ein signifikantes Ergebnis vorliegt. simulation.result <- function ( p. values, alpha ){ Output der Funktion ist der Anteil der Testdurchläufe mit mindestens einem signifikaten Ergebnis. e) Schreiben Sie eine Funktion simulation, die die Funktionen simulation.repeat und simulation.result n sim mal aufruft und jeweils den Anteil an signifikanten Testentscheidungen ausgibt. simulation <- function (n.sim, n.rep, n, mu, Sigma, alpha ){ Output der Funktion ist ein Vektor der Länge n sim. 5

f) Rufen Sie die Funktion simulation mit folgenden Parametern auf: Σ = 4, µ = 1, n = 100, n rep = 200, n sim = 100, α = 0.05 Achten Sie darauf, dass Ihre Ergebnisse reproduzierbar sind. Stellen Sie das Simulationsergebnis in geeigneter Weise grafisch dar und interpretieren Sie es. g) Rufen Sie die Funktion simulation mit folgenden Parametern auf: 1 0 0 0 0 1 0 1 0 0 0 Σ = 0 0 1 0 0 0 0 0 1 0, µ = 1 2 0, n = 100, n rep = 200, n sim = 100, α = 0.05 0 0 0 0 1 0 Achten Sie darauf, dass Ihre Ergebnisse reproduzierbar sind. Stellen Sie das Simulationsergebnis in geeigneter Weise grafisch dar und vergleichen Sie es mit dem theoretischen Wert 0.226. Wie lässt sich dieses Ergebnis erklären? 6

Aufgabe 4 (Schiffe versenken) [65 Punkte] Vor Beginn des Spiels Schiffe versenken fertigt sich jeder Spieler einen 10 10 Kästchen großen Plan an. Dieser stellt das eigene Kampfgebiet dar. In das eigene Kampfgebiet trägt man, ohne dass der Mitspieler dies sieht, seine Flotte ein. Dies geschieht, indem man Gebilde von unterschiedlicher Kästchenlänge einzeichnet. Folgende Spielregeln müssen dabei eingehalten werden: Die Schiffe dürfen nicht aneinander stoßen. Die Schiffe dürfen nicht über Eck gebaut sein oder Ausbuchtungen besitzen. Die Schiffe dürfen auch am Rand liegen. Die Schiffe dürfen nicht diagonal aufgestellt werden. Die Flotte besteht aus insgesamt 10 Schiffen: Ein Schlachtschiff (5 Kästchen) Zwei Kreuzer (je 4 Kästchen) Drei Zerstörer (je 3 Kästchen) Vier U-Boote (je 2 Kästchen) a) Schreiben Sie eine Funktion combat_zone, die ein Kampfgebiet gemäß der obigen Spielregeln zufällig generiert und als Grafik auf dem Bildschirm ausgibt. Argumente der Funktion sind die Anzahl an Schlachtschiffen (n5), Kreuzern (n4), Zerstörern (n3) und U-Booten (n2). Die Grundstruktur der Funktion soll folgendermaßen aussehen: combat_zone <- function (n5,n4,n3,n2){ Der grafische Output der Funktion könnte beispielsweise folgendermaßen aussehen: 7

Die Funktion soll außerdem folgende Spezifikationen erfüllen: Ausgangspunkt ist ein leeres Kampfgebiet. Alle Schiffe werden nacheinander der Größe nach platziert (beginnend mit dem Größten). In jedem Schritt wird die Position und die Richtung des neu zu platzierenden Schiffes zufällig bestimmt. Bedingt durch die Platzierung der bisherigen Schiffe kann es vorkommen, dass kein möglicher Platz mehr für das nächste Schiff in der gewählten Richtung exisitiert. In einem solchen Fall, soll die Platzierung der Schiffe neu gestartet werden, beginnend mit einem leeren Kampfgebiet. Desweitern soll beispielsweise (in etwa) folgende Meldung in der Konsole ausgegeben werden: Error : Das Boot der Länge 2 hat in vertikaler Richtung keinen Platz mehr! Wurde die Platzierung der Schiffe 50 mal ohne Erfolg gestartet, soll die Funktion abbrechen und (in etwa) folgendes in der Konsole ausgeben: Error : Platzierung der Schiffe nicht möglich! Wurden alle Schiffe platziert, wird das Kampfgebiet als Grafik auf dem Bildschirm ausgegeben und zusätzlich die Anzahl an benötigten Versuche in der Konsole ausgegeben, zum Beispiel: Benötigte Versuche : 3 Schiffe derselben Länge werden in der Grafik jeweils in derselben Farbe dargestellt. b) Generieren Sie, mithilfe der von Ihnen definierten Funktion in a), drei Kampfgebiete für die oben angegebene Flotte und speichern Sie diese als pdf-datei in Ihrem Arbeitsverzeichnis ab. 8

Aufgabe 5 (Funktionen und Ausnahmen) [39 Punkte] Eine Primzahltabelle bis n ist eine Liste aller Primzahlen zwischen 1 und n. Für n = 10 lautet diese: 2, 3, 5, 7. Für jede Zahl i, die keine Primzahl ist, gibt es zwei Zahlen j und k, 2 j, k n, für die gilt, dass i = j k. Damit kann folgender Algorithmus zur Erstellung einer Primzahltabelle abgeleitet werden: 1. Definiere einen Vektor prims mit den Zahlen 2 bis n. 2. Für alle j = 2,..., n und für alle k = 2,..., n, berechne i = j k. 3. Entferne jeweils das Ergebnis i, falls in prims vorhanden, aus dem Vektor prims. Alle Zahlen, die am Ende im Vektor prims vorkommen, sind Primzahlen. a) Schreiben Sie eine Funktion prime_table1, die eine Primzahltabelle bis zu einer Zahl n nach obiger Vorschrift berechnet und zurückgibt. Die Grundstruktur der Funktion soll folgendermaßen aussehen: prime _ table1 <- function ( n){ Eine deutlich effizientere Version des Verfahrens ist das sogenannte Sieb des Eratosthenes, welches folgendermaßen definiert ist: 1. Definiere einen Vektor prims mit den Zahlen 2 bis n. 2. Für alle j = 2,..., n, falls in prims vorhanden, und für alle k = j,..., n j, berechne i = j k. 3. Entferne jeweils das Ergebnis i, falls in prims vorhanden, aus dem Vektor prims. Alle Zahlen, die am Ende im Vektor prims vorkommen, sind Primzahlen. b) Schreiben Sie eine Funktion prime_table2, die eine Primzahltabelle bis zu einer Zahl n mithilfe des Sieb des Eratosthenes berechnet und zurückgibt. c) Berechnen Sie mithilfe der Funktionen prime_table1 und prime_table2 die Primzahltabellen für die Zahlen n = 50 und n = 150. Überprüfen Sie, ob beide Funktionen jeweils zum selben Ergebnis führen. d) Schreiben Sie eine Funktion check.input, die überprüft, ob die Eingabe eine natürliche Zahl ist. Falls der Input kleiner oder gleich 0 ist, soll die Funktion das Programm abbrechen und eine entsprechende Fehlermeldung ausgeben. Falls der Input positiv ist, aber keine natürliche Zahl, soll die Funktion den Input runden und das Programm weiter ausführen. Weiterhin soll eine entsprechende Warnmeldung ausgegeben werden. e) Fügen Sie die Funktion check.input an geeigneter Stelle in die Funktionen prime_table1 und prime_table2 ein und testen Sie ihre Funktionalität. f) Vergleichen Sie, auf geeignete Weise, mithilfe der Funktion microbenchmark aus dem R-Paket microbenchmark die Laufzeiten der Funktionen prime_table1 und prime_table2 für n = 1000 und stellen Sie die Ergebnisse kurz dar. 9