Die Abgabefrist dieser Hausaufgabe ist 2023-11-06 12:00 (Montag Mittag)!
Vergessen Sie nicht Ihre Übung abzugeben (Assignment Tab / Submit Button). Einfaches Speichern reicht nicht! Sie können beliebig oft abgeben, die letzte Abgabe vor der Deadline wird gewertet.
1# execute this for default imports
2import math
3import random as rd
4import numpy as np
5import pandas as pd
6from matplotlib import pyplot as plt
7from scipy import stats
[25 Point(s)]
In dieser Aufgabe wollen wir uns die Unterschiede zwischen Varianz und Stichprobenvarianz experimentell veranschaulichen.
[3 Point(s)]
1# Nutzen Sie diese Zelle gerne für Ihre Hilfsrechnungen
2# Überlegen Sie z.B.
3# - was die möglichen Ausgänge sind,
4# - wie wahrscheinlich diese sind,
5# - was dann der Mittelwert
6# - und die Varianz ist.
7ausgaenge = [1,2,3,4,5,6]
8summe = 0
9for x in ausgaenge:
10 summe += (x - np.mean(ausgaenge)) ** 2
11var = summe / len(ausgaenge)
12
13np.var([1,2,3,4,5,6], ddof=0), var
[3 Point(s)]
Würden Sie die Wahrscheinlichkeitsverteilung nicht kennen, müssten Sie die Varianz durch sammeln und analysieren von Beobachtungen schätzen. Dies sollen Sie im folgenden tun.
Sie können die bereits für Sie implementierte Funktion get_data() aufrufen, um einen Datensatz mit 10 Werten zu erhalten.
Implementieren Sie die Funktion variances, welche die Varianz und die korrigierte Stichprobenvarianz eines Datensatzes X berechnet.
Wenn Sie variances() auf get_data() anwenden sollten Sie zwei Werte erhalten: eine Varianz und eine Stichprobenvarianz.
1def get_data():
2 return np.random.randint(low=1, high=7, size=10)
3
4get_data()
1def variances(X: [float]) -> (float, float):
2 '''
3 Calculates the variance and sample variance of X
4
5 Arguments:
6 X -- x values of the data
7 Returns:
8 var -- variance
9 sample_var -- sample variance
10 '''
11 return np.var(X), np.var(X,ddof=1)
12
13wuerfe = get_data()
14varianz, stichprobenvarianz = variances(wuerfe)
15varianz, stichprobenvarianz
test_02_Deskriptive_Stat_Var_vs_Stichprobenvarianz_aufgeteilt_B0
Score: 3.0 / 3.0 (Top)
1### BEGIN HIDDEN TESTS
2from assignmenttest import VariableTest, grade_report
3import numpy as np
4
5X = np.random.randint(low=0, high=20, size=100)
6
7varRef = np.var(X)
8sample_varRef = np.var(X, ddof=1)
9
10studv, studs = variances(X)
11
12
13def grade():
14 refs, stud = np.array((varRef, sample_varRef)), np.array((studv, studs))
15 if np.allclose(refs, stud, atol=1e-6):
16 return 1
17
18 if np.allclose(refs[0], stud[0], atol=1e-6):
19 print("error in variance")
20 return .5
21 if np.allclose(refs[1], stud[1], atol=1e-6):
22 print("error in sample variance")
23 return .5
24
25 print("both are wrong")
26 return 0
27
28grade_report(grade(), 3)
29### END HIDDEN TESTS
[4 Point(s)]
Nun wollen wir das Ziehen der 10 Datenpunkte und Berechnen der beiden Varianzen aus Teil b) häufiger wiederholen und mitteln.
Implementieren Sie dafür die Funktion means_of_variances(). In dieser soll n mal die Funktion get_data() aufgerufen werden, um neue Zufallszahlen zu erhalten und dann jeweils die beiden Varianzen davon zu berechnen. Anschließend soll die Funktion den Durchschnitt der n Varianzen und den Durchschnitt der n Stichprobenvarianzen berechnen.
Sie sollten nun erneut nur zwei Werte haben und zurückgeben: einen Durchschnitt der Varianzen und einen Durchschnitt der Stichprobenvarianzen.
1def means_of_variances(n: int) -> (float, float):
2 '''
3 Calculates the averages of variance and sample variance.
4
5
6 Arguments:
7 n -- number of repetitions of the experiment
8 Returns:
9 avg_var -- average variance over the n experiments
10 avg_sample_var -- average sample variance over the n experiments
11 '''
12 return np.mean([variances(get_data()) for _ in range(n)], 0)
13
14means_of_variances(1000)
test_02_Deskriptive_Stat_Var_vs_Stichprobenvarianz_aufgeteilt_C0
Score: 4.0 / 4.0 (Top)
1### BEGIN HIDDEN TESTS
2from assignmenttest import VariableTest, grade_report
3import numpy as np
4
5n= 1000
6means = np.mean(np.array([variances(get_data()) for _ in range(n)]), axis=0)
7
8
9stud_high_repetitions = means_of_variances(n)
10stud_low_repetitions = means_of_variances(1)
11
12
13def grade():
14 points = 1
15 if stud_low_repetitions[0] < 0 or stud_low_repetitions[0] > 6.25:
16 print("error in variance for low repetitions")
17 points -= 0.5
18 if stud_low_repetitions[1] < 0 or stud_low_repetitions[1] > 7:
19 print("error in sample variance for low repetitions")
20 points -= 0.5
21
22 if stud_high_repetitions[0] < 2.4 or stud_high_repetitions[0] > 2.8:
23 print("error in variance for high repetitions")
24 points -= 0.5
25 if stud_high_repetitions[1] < 2.7 or stud_high_repetitions[1] > 3.1:
26 print("error in sample variance for high repetitions")
27 points -= 0.5
28
29 # print("both are right")
30 return max(points, 0)
31
32grade_report(grade(), 4)
33### END HIDDEN TESTS
[8 Point(s)]
Beim mehrfachen Ausführen von Aufgabenteil c) stellen wir fest, dass die beiden Werte etwas schwanken. Wir möchten nun eine ganze Experimentreihe durchführen, in der wir Aufgabenteil c) m mal wiederholen, um diese nachfolgend zu visualisieren.
Implementieren Sie hierzu die Funktion multiple_means_of_variances(). Diese soll 2 Listen zurückgeben, die die Experimentreihe dokumentieren:
m Durchschnitten der n Varianzenm Durchschnitten der n Stichprobenvarianzen(Die Reihenfolge der Elemente in den Listen sollte natürlich entsprechend der Experimente geordnet sein, sodass die Indizes zueinander passen.)
1def multiple_means_of_variances(m: int, n: int) -> ([float], [float]):
2 '''
3 Series of means of variances.
4
5 Arguments:
6 m -- number of repetitions
7 n -- n for means_of_variances(n)
8 Returns:
9 smv -- series of means of variances
10 sms -- series of means of sample variances
11 '''
12 return tuple(list(t) for t in zip(*[means_of_variances(n) for _ in range(m)])) ## smv, sms
13
14multiple_means_of_variances(3, 10)
test_02_Deskriptive_Stat_Var_vs_Stichprobenvarianz_aufgeteilt_D0
Score: 8.0 / 8.0 (Top)
1### BEGIN HIDDEN TESTS
2from assignmenttest import VariableTest, grade_report
3
4stud_d_low , stud_s_d_low = multiple_means_of_variances(1000, 1)
5stud_d_high , stud_s_d_high = multiple_means_of_variances(1000, 100)
6
7
8def grade():
9 points = 1
10 if np.min(stud_d_low) < 0 or np.max(stud_d_low) > 6.25:
11 print("error in variance for low n")
12 points -= 0.5
13 if np.min(stud_s_d_low) < 0 or np.max(stud_s_d_low) > 7:
14 print("error in sample variance for low n")
15 points -= 0.5
16
17 if np.min(stud_d_high) < 2.2 or np.max(stud_d_high) > 3:
18 print("error in variance for high repetitions")
19 points -= 0.5
20 if np.min(stud_s_d_high) < 2.5 or np.max(stud_s_d_high) > 3.5:
21 print("error in sample variance for high repetitions")
22 points -= 0.5
23
24 # print("both are right")
25 return max(points, 0)
26
27grade_report(grade(), 8)
28
29### END HIDDEN TESTS
[5 Point(s)]
Visualisieren Sie nun eine Serie von 100 unserer Experimente aus Aufgabenteil d) über je 1000 Durchschnitte von (korrigierten Stichproben)Varianzen.
Fassen Sie Ihre Ergebnisse in einem einzigen Plot als 3 Line-Plots zusammen: Plotten Sie
100 Durchschnitte der jeweils 1000 Varianzen,100 Durchschnitte der jeweils 1000 korrigierten StiprobenvarianzenHinweis: Achten Sie wie immer auf sinnvolle Beschriftungen und da Sie mehrere Dinge in einer Graphik plotten, auf eine Legende.
1fig, ax = plt.subplots()
2
3data = multiple_means_of_variances(100,1000)
4var_aus_a = np.var([1,2,3,4,5,6], ddof=0)
5data_a = [var_aus_a for _ in data[0]]
6ax.plot(data[0], linestyle='-', label='Varianz')
7ax.plot(data[1], linestyle='-', label='Stichprobenvarianz')
8ax.plot(data_a, linestyle=':', label='Varianz aus a)')
9ax.legend()
10
11plt.grid() # Gitterlinien
12plt.xlabel('Versuch n mit dem Durchschnitt aus 1000 Experimenten') # Achsenbeschriftung
13plt.ylabel('(Stichproben-)varianz') # Achsenbeschriftung
14plt.title('Getestete Varianz vs getestete Stichprobenvarianz ve berechnete Varianz') # Titel
15
16plt.show()
[2 Point(s)]
[20 Point(s)]
In dieser Aufgabe geht es darum, Transformationen auf Daten anzuwenden und die Effekte dieser zu untersuchen.
In dieser Aufgabe sind nur lineare Transformationen relevant. Wie bei einer Geraden staucht oder streckt die Daten, während eine Verschiebung darstellt. Welche Auswirkungen diese Stauchungen, Streckungen und Verschiebungen auf den Mittelwert, sowie die Varianz haben, können Sie in der Vorlesung nachlesen.
[10 Point(s)]
read_data() liest einen Datensatz ein. Wenden Sie auf diesen nun Transformationen an, sodass ein Histogramm der transformierten Stichprobe identisch mit dem Zielhistogramm unten ist. Für das Histogramm der transformierten Stichprobe bekommen Sie hierbei keine Punkte. Es soll Ihnen nur dabei helfen, die richtige Transformation zu finden.
Punkte gibt es für das Überschreiben von X mit der korrekt transformierten Stichprobe.
Hinweis: Um die richtige Transformation zu finden sollten Sie sich vermutlich charakteristische Lage- und Streuungsparameter anschauen. Wenn diese bei beiden Verteilungen nach einer linearen Transformation übereinstimmen, haben Sie wahrscheinlich die richtige Transformation gefunden.

1def read_data():
2 return np.genfromtxt('WuS_Hausaufgabe_2_files/data/data.csv', delimiter=',')
1X = read_data()
2# Überschreiben sie X hier
3X = 0.1 * X - 20
4
5plt.hist(X, bins=100)
6plt.xlabel("Müslimenge in g")
7plt.ylabel("Auftrittshäufigkeit")
8plt.title("Ausgeschüttete Müslimenge pro Schüssel")
9plt.grid()
10plt.show()
test_02_Deskriptive_Stat_Transformationen_A0
Score: 10.0 / 10.0 (Top)
1### BEGIN HIDDEN TESTS
2#from assignmenttest import test_asserts
3
4x_ref1 = np.genfromtxt('WuS_Hausaufgabe_2_files/data/data.csv', delimiter=',')
5x_ref1 = (x_ref1-200)/10
6
7x_ref2 = np.genfromtxt('WuS_Hausaufgabe_2_files/data/data.csv', delimiter=',')
8x_ref2 = (x_ref2-np.mean(x_ref2))/10
9
10x_ref3 = np.genfromtxt('WuS_Hausaufgabe_2_files/data/data.csv', delimiter=',')
11x_ref3 = (x_ref3-200)/np.std(x_ref3)
12
13x_ref4 = np.genfromtxt('WuS_Hausaufgabe_2_files/data/data.csv', delimiter=',')
14x_ref4 = (x_ref4-np.mean(x_ref4))/np.std(x_ref4)
15
16#@test_asserts(10)
17def check():
18 solution_found = False
19 if np.allclose(X,x_ref1):
20 solution_found = True
21 if np.allclose(X,x_ref2):
22 solution_found = True
23 if np.allclose(X,x_ref3):
24 solution_found = True
25 if np.allclose(X,x_ref4):
26 solution_found = True
27
28 assert solution_found == True, "expected: " + str(x_ref1) + ", but got: " + str(X)
29check()
30### END HIDDEN TESTS
[2 Point(s)]
Gegeben sei eine Stichprobe mit Mittelwert = 5 und Varianz = 7.Nun wird die Transformation angewendet. Was ist der resultierende Mittelwert?
1# Zelle zum Ausprobieren
27*5-5
[2 Point(s)]
1# Zelle zum Ausprobieren
27**2*7
[3 Point(s)]
Gegeben sei eine Stichprobe mit Mittelwert = 1 und Varianz = 1.Nun wird die Transformation angewendet. Was ist der resultierende Mittelwert?
1# Zelle zum Ausprobieren
2test = [0,2]
3test_trans = 3*np.array(test)**2+1
4np.var(test), np.mean(test), np.var(test_trans), np.mean(test_trans)
[3 Point(s)]
1# Zelle zum Ausprobieren
[35 Point(s)]
[15 Point(s)]
Zusätzlich zu diesem Notebook wurde Ihnen die Datei health.csv zur Verfügung gestellt.
Dieser Datensatz enthält Umfrageergebnisse einer Gesundheitsumfrage unter Jugendlichen und jungen Erwachsenen aus den USA (https://www.icpsr.umich.edu/icpsrweb/DSDR/studies/21600).
Im Rahmen der National Longitudinal Study of Adolescent to Adult Health wurden 20000 Teilnehmer zu verschiedensten Themen rund um die Gesundheit befragt. Der Datensatz health.csv enthält einen Auszug der Fragen und Antworten von ca. 5000 Teilnehmern.
Der Datensatz enthält folgende Werte:
1# Führen Sie diese Zelle aus, um die vorgegebenen Daten in zwei Arrays zu laden
2import numpy as np
3import pandas as pd
4
5health = None
6df = pd.read_csv('WuS_Hausaufgabe_2_files/data/health.csv')
7
8health = df.rename(columns={
9 'H4WGT': 'Gewicht',
10 'H4HGT': 'Groesse',
11 'BIO_SEX4': 'Geschlecht',
12 'H4OD1Y': 'Geburtsjahr'
13})
14
15health_cleaned = health.loc[health.Gewicht <= 250].loc[health.Groesse <= 300]
16
17gewicht = np.array(health_cleaned.Gewicht)
18groesse = np.array(health_cleaned.Groesse)
19
20gewicht, groesse
Wir möchten versuchen das Gewicht einer Person in Abhängigkeit seiner Größe vorherzusagen. Dazu können wir eine Ausgleichsgerade durch die Punkte legen.
Eine Ausgleichsgerade ist eine Gerade, die den mittleren quadratischen Abstand (das Quadrat der Residuen) zwischen der Gerade und den realen Datenpunkten minimiert.

Implementieren Sie die Funktion fitLine(x_observed, y_observed) die für beobachtete X und Y Werte eine Ausgleichsgerade berechnet. Die Rückgabe der Funktion ist die Steigung und der Y-Achsenabschnitt der Geraden als Tupel.
Hinweis: Benutzen Sie keine bereits vollständig implementierten Funktionen für die Bestimmung der Ausgleichsgeraden. Sie dürfen hier zwar np.mean, np.cov und np.var benutzen, es wird aber mit Blick auf die Klausur angeraten, es auch mal komplett ohne zu probieren.
1def fitLine(x_observed: [float], y_observed: [float]) -> (float, float):
2 '''
3 Fits a line f(x) = m * x + b to the observations
4
5 Arguments:
6 x_observed -- x values of the data
7 y_observed -- y values of the data
8 Returns:
9 m -- slope
10 b -- intersect
11 '''
12 m = np.cov(x_observed, y_observed, ddof=0)[0][1] / np.var(x_observed)
13 b = np.mean(y_observed) - m * np.mean(x_observed)
14 return (m, b)
15
16fitLine([0, 1, 2, 3], [2, 3, 4, 5])
test_02_Deskriptive_Stat_Lineare_Regression_ausgleichsgerade_vorhersagen_A0
Score: 15.0 / 15.0 (Top)
1# Führen Sie diesen Test aus, um sich selbst zu testen:
2assert fitLine([0, 1, 2, 3], [2, 3, 4, 5]) == (1.0, 2.0)
3
4### BEGIN HIDDEN TESTS
5from assignmenttest import VariableTest, FunctionTest, grade_report
6from numbers import Number
7
8def fitLine_Referenz(x_observed, y_observed):
9 '''
10 Fits a line f(x) = m * x + b to the observations
11
12 Arguments:
13 x_observed -- x values of the data
14 y_observed -- y values of the data
15 Returns:
16 m -- slope
17 b -- intersect
18 '''
19 eX = np.mean(x_observed)
20 eY = np.mean(y_observed)
21 m = sum((x_observed - eX) * (y_observed - eY)) / sum((x_observed - eX)**2)
22 b = eY - m * eX
23 return m, b
24
25
26
27
28def expected(xy):
29 return fitLine_Referenz(xy[0],xy[1])
30
31test_data = np.random.random((5,2,20))
32expected_data = [expected(xy) for xy in test_data]
33target = [fitLine(xy[0],xy[1]) for xy in test_data]
34
35def grade():
36 percentage = 1
37
38 try:
39 if np.shape(expected_data) != np.shape(target):
40 print("Dimensionen ihrer Werte falsch, kann leider nicht verglichen werden")
41 return 0
42 except Exception:
43 print("Dimensionen nicht verfügbar")
44 return 0
45
46 _target = target
47
48 if (type(expected_data[0][0]) != type(target[0][0])) and (float != type(target[0][0])):
49 print("Typ der Tupelelemente falsch, keine floats")
50 percentage -= .2
51 print("Versuche welche draus zu machen...")
52 try:
53 _target = np.array(target).astype(float)
54 except Exception:
55 print("hat leider nicht geklappt.")
56 return 0
57 print("hat geklappt, kann weitergehen.")
58
59 if np.allclose(_target, expected_data):
60 return percentage
61
62 print("Ich weiß nicht, was Sie berechnet haben, aber es hat immerhin die richtige Länge.")
63 percentage -= .6
64 return percentage
65
66grade_report(grade(), points=15)
67
68### END HIDDEN TESTS
[5 Point(s)]
Berechnen Sie folgende Ausgleichsgeraden:
Speichern Sie Ihre Lösung in den Variablen steigung1, achsenabschnitt1 sowie steigung2, achsenabschnitt2.
1steigung1, achsenabschnitt1 = fitLine(groesse, gewicht)
2steigung2, achsenabschnitt2 = fitLine(gewicht, groesse)
3steigung1, achsenabschnitt1, steigung2, achsenabschnitt2
test_02_Deskriptive_Stat_Lineare_Regression_ausgleichsgerade_vorhersagen_B0
Score: 5.0 / 5.0 (Top)
1### BEGIN HIDDEN TESTS
2import numpy.testing as test
3
4test.assert_equal(0.8822, float('%.4f'%(steigung1)), "Steigung 1 falsch: " + str(steigung1))
5test.assert_equal(-65.5768, float('%.4f'%(achsenabschnitt1)), "Achsenabschnitt 1 falsch: " + str(achsenabschnitt1))
6
7test.assert_equal(0.1634, float('%.4f'%(steigung2)), "Steigung 2 falsch: " + str(steigung2))
8test.assert_equal(156.3886, float('%.4f'%(achsenabschnitt2)), "Achsenabschnitt 2 falsch: " + str(achsenabschnitt2))
9
10
11### END HIDDEN TESTS
[5 Point(s)]
Berechnen Sie nun mit Ihren beiden Geraden zu den gegebenen Beispiel-Eingabe-Werten (X) die zugehörigen Funktionswerte und speichern Sie diese in den Variablen y_1 (für steigung1 und achsenabschnitt1) und y_2 (für steigung2 und achsenabschnitt2).
1X = np.array([130.985888 , 161.8515448, 80.6575286, 200.5113242, 196.1429888])
2y_1 = [steigung1 * x + achsenabschnitt1 for x in X]
3y_2 = [steigung2 * x + achsenabschnitt2 for x in X]
4y_1, y_2
test_02_Deskriptive_Stat_Lineare_Regression_ausgleichsgerade_vorhersagen_C0
Score: 5.0 / 5.0 (Top)
1### BEGIN HIDDEN TESTS
2from assignmenttest import VariableTest, FunctionTest, grade_report
3from numbers import Number
4
5data = np.array([130.985888 , 161.8515448, 80.6575286, 200.5113242, 196.1429888])
6
7def expected(m,b,x):
8 return m*x+b
9
10# using steigung and achsenabschnitt for expected to give partial points for wrong slope and intersect
11expected_1 = [expected(steigung1,achsenabschnitt1,x) for x in data]
12target_1 = y_1
13expected_2 = [expected(steigung2,achsenabschnitt2,x) for x in data]
14target_2 = y_2
15expected = expected_1+expected_2
16target = np.append(y_1,y_2)
17
18def grade():
19 percentage = 1
20
21 try:
22 if np.shape(expected) != np.shape(target):
23 print("Dimensionen ihrer Werte falsch, kann leider nicht verglichen werden")
24 return 0
25 except Exception:
26 print("Dimensionen nicht verfügbar")
27 return 0
28
29 _target = target
30
31 if (type(expected[0]) != type(target[0])) and (float != type(target[0])):
32 print("Typ der Tupelelemente falsch, keine floats")
33 percentage -= .2
34 print("Versuche welche draus zu machen...")
35 try:
36 _target = np.array(target).astype(float)
37 except Exception:
38 print("hat leider nicht geklappt.")
39 return 0
40 print("hat geklappt, kann weitergehen.")
41
42 if np.allclose(_target, expected):
43 return percentage
44
45 print("Ich weiß nicht, was Sie berechnet haben, aber es hat immerhin die richtige Länge.")
46 percentage -= .8
47 return percentage
48
49grade_report(grade(), points=5)
50
51### END HIDDEN TESTS
[4 Point(s)]
Um die Ausgleichsgerade im relevanten Bereich der Daten zu plotten, sollten Sie diesen zunächst bestimmen.
Speichern Sie dafür
gerade_groesse_x1x2 den kleinsten und größten Größenwert,gerade_groesse_y1y2 die Vorhersage für die beiden Größenwerte undgerade_gewicht_y1y2 den kleinsten und größten Gewichtswert,gerade_gewicht_x1x2 die Vorhersage für die beiden Gewichtswerte.1gerade_groesse_x1x2 = [min(groesse), max(groesse)]
2gerade_groesse_y1y2 = [min(steigung1*groesse+achsenabschnitt1), max(steigung1*groesse+achsenabschnitt1)]
3
4gerade_gewicht_x1x2 = [min(steigung2*gewicht+achsenabschnitt2), max(steigung2*gewicht+achsenabschnitt2)]
5gerade_gewicht_y1y2 = [min(gewicht), max(gewicht)]
6
7gerade_groesse_x1x2, gerade_groesse_y1y2, gerade_gewicht_x1x2, gerade_gewicht_y1y2
test_02_Deskriptive_Stat_Lineare_Regression_ausgleichsgerade_vorhersagen_D0
Score: 4.0 / 4.0 (Top)
1### BEGIN HIDDEN TESTS
2from assignmenttest import VariableTest, grade_report
3import numpy as np
4
5
6def grade():
7 points = 0
8
9 if 0 in gerade_groesse_x1x2 or 0 in gerade_gewicht_x1x2:
10 return 0
11
12 x_gr = np.array([np.min(groesse), np.max(groesse)])
13 y_gr = steigung1 * x_gr + achsenabschnitt1
14
15 y_ge = np.array([np.min(gewicht), np.max(gewicht)])
16 x_ge = steigung2 * y_ge + achsenabschnitt2
17
18 if np.allclose(x_gr, gerade_groesse_x1x2, atol=1e-6):
19 points += 1
20 else:
21 print("Extremwerte der Größen falsch.")
22
23 if np.allclose(y_gr, gerade_groesse_y1y2, atol=1e-6):
24 points += 1
25 else:
26 print("Y-Werte der Größen falsch.")
27
28 if np.allclose(x_ge, gerade_gewicht_x1x2, atol=1e-6):
29 points += 1
30 else:
31 print("Extremwerte der Gewichte falsch.")
32
33 if np.allclose(y_ge, gerade_gewicht_y1y2, atol=1e-6):
34 points += 1
35 else:
36 print("Y-Werte der Gewichte falsch.")
37
38
39 return points / 4
40
41
42grade_report(grade(), 4)
43### END HIDDEN TESTS
[6 Point(s)]
Plotten Sie die Verteilung der Datenpunkt (Scatter-Plot) und die beiden Ausgleichsgeraden in einem einzigen Plot: Größe (x-Achse) vs. Gewicht (y-Achse).
Hinweise:
1import matplotlib.pyplot as plt
2
3
4fig, ax = plt.subplots()
5
6ax.scatter(groesse, gewicht, label='Datenpunkte', s=5, color='lightgreen', alpha=0.8)
7ax.plot(gerade_groesse_x1x2, gerade_groesse_y1y2, linestyle='-', label='Größe(Gewicht)')
8ax.plot(gerade_gewicht_x1x2, gerade_gewicht_y1y2, linestyle='-', label='Gewicht(Größe)')
9
10plt.xlabel('Größe in cm') # Achsenbeschriftung
11plt.ylabel('Gewicht in kg') # Achsenbeschriftung
12plt.title('Lineare Regression Größe/Gewicht') # Titel
13
14ax.legend() # Legende
15plt.grid() # Gitterlinien
16plt.show()
[20 Point(s)]
In der Vorlesung haben wir den Begriff der Ereignisalgebra über einer Ergebnismenge als Mengensystem mit bestimmten Eigenschaften definiert.
[5 Point(s)]
Geben Sie zur Ergebnismenge die kleinste Ereignisalgebra an, in der und als Elemente enthalten sind. Speichern Sie die zugehörigen Teilmengen in den Variablen a bis p wie für a und b beispielhaft angegeben. Sollten weniger als 16 Teilmengen zur Lösung gehören, lassen Sie die übrigen Variablen unberührt.
1a=frozenset({1})
2b=frozenset({1,3})
3c=frozenset({2,3,4})
4d=frozenset({2,4})
5
6e=frozenset({1,2,3,4})
7f=frozenset({1,2,4})
8g=frozenset({3})
9h=frozenset({})
10
11i=frozenset({})
12j=frozenset({})
13k=frozenset({})
14l=frozenset({})
15
16m=frozenset({})
17n=frozenset({})
18o=frozenset({})
19p=frozenset({})
test_03_Grundlagen_Wkeit_Ereignisalgebra_A0
Score: 5.0 / 5.0 (Top)
1### BEGIN HIDDEN TESTS
2
3## aus der Vorlesung
4
5def kompl(A, Omega):
6 return Omega - A
7
8from itertools import chain, combinations
9
10def powerset(iterable):
11 "powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)"
12 s = list(iterable)
13 return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))
14
15def check_sigma_alg(Omega, Sigma):
16 if Omega not in Sigma:
17 print('Omega not in Sigma')
18 return False
19
20 for A in Sigma:
21 if kompl(A, Omega) not in Sigma:
22 print(f'Complement of {A} = {kompl(A, Omega)} not in Sigma')
23 return False
24
25 for sets in powerset(Sigma):
26 union = frozenset(x for A in sets for x in A)
27 if union not in Sigma:
28 print(f'Union of {sets}={union} not in Sigma')
29 return False
30
31 return True
32
33
34
35from assignmenttest import VariableTest, FunctionTest, grade_report
36sol = {frozenset(s) for s in [{}, {1}, {1, 3}, {2, 3, 4}, {2, 4}, {1, 2, 3, 4}, {1, 2, 4}, {3}]}
37# assert check_sigma_alg({1,2,3,4}, sol), "Aufgabenstellung falsch"
38
39target = [globals().get(x, frozenset()) for x in 'abcdefghijklmnop']
40for t in target:
41 assert isinstance(t, frozenset), f"{t} ist leider kein frozenset, leider keine Punkte"
42def grade():
43 percentage = 1
44 error = ""
45 for t in target:
46 if not (t in sol):
47 percentage -= 0.2
48 error += str(t) + " gehört nicht in die Lösung, \n"
49 for s in sol:
50 if not(s in target):
51 percentage -= 0.2
52 error += str(s) + " fehlt in Ihrer Lösung, \n"
53 if error:
54 print("Fehler:")
55 print(error)
56 else:
57 print('Super, Alles richtig ;)\n')
58 return max(0, percentage)
59grade_report(grade(), points=5)
60### END HIDDEN TESTS
[10 Point(s)]
Geben Sie zur Ergebnismenge die kleinste Ereignisalgebra an, in der und als Elemente enthalten sind. Speichern Sie die zugehörigen Teilmengen in den Variablen a bis p wie für a bis c beispielhaft angegeben. Sollten weniger als 16 Teilmengen zur Lösung gehören, lassen Sie die übrigen Variablen unberührt.
1a=frozenset({1})
2b=frozenset({1,2})
3c=frozenset({1,3})
4d=frozenset({2,3,5,7})
5
6e=frozenset({3,5,7})
7f=frozenset({2,5,7})
8g=frozenset({1,2,3,5,7})
9h=frozenset({1,3,5,7})
10
11i=frozenset({1,2,5,7})
12j=frozenset({2})
13k=frozenset({3})
14l=frozenset({2,3})
15
16m=frozenset({1,5,7})
17n=frozenset({1,2,3})
18o=frozenset({5,7})
19p=frozenset({})
test_03_Grundlagen_Wkeit_Ereignisalgebra_B0
Score: 10.0 / 10.0 (Top)
1### BEGIN HIDDEN TESTS
2from assignmenttest import VariableTest, FunctionTest, grade_report
3sol = {frozenset(s) for s in [
4 {1}, {1, 2}, {1, 3},
5 {}, {1, 2, 3, 5, 7},
6 {2, 3, 5, 7}, {3, 5, 7}, {2, 5, 7},
7 {1, 2, 3}, {1, 2, 5, 7}, {1, 3, 5, 7},
8 {5, 7},
9 {2}, {3}, {2, 3},
10 {1, 5, 7},
11]}
12# assert check_sigma_alg({1,2,3,5,7}, sol), "Aufgabenstellung falsch"
13
14target = [globals().get(x, frozenset()) for x in 'abcdefghijklmnop']
15for t in target:
16 assert isinstance(t, frozenset), f"{t} ist leider kein frozenset, leider keine Punkte"
17def grade():
18 percentage = 1
19 error = ""
20 for t in target:
21 if not (t in sol):
22 percentage -= 0.2
23 error += str(t) + " gehört nicht in die Lösung, \n"
24 for s in sol:
25 if not(s in target):
26 percentage -= 0.2
27 error += str(s) + " fehlt in Ihrer Lösung, \n"
28 if error:
29 print("Fehler:")
30 print(error)
31 else:
32 print('Super, Alles richtig ;)\n')
33 return max(0, percentage)
34grade_report(grade(), points=10)
35### END HIDDEN TESTS
[5 Point(s)]
Geben Sie zur Ergebnismenge die kleinste Ereignisalgebra an, in der und als Elemente enthalten sind. Speichern Sie die zugehörigen Teilmengen in den Variablen a bis p wie für a und b beispielhaft angegeben. Sollten weniger als 16 Teilmengen zur Lösung gehören, lassen Sie die übrigen Variablen unberührt.
1a=frozenset({1})
2b=frozenset({2,3})
3c=frozenset({1,2,3,4,5})
4d=frozenset({2,3,4,5})
5
6e=frozenset({1,4,5})
7f=frozenset({1,2,3})
8g=frozenset({4,5})
9h=frozenset({})
10
11i=frozenset({})
12j=frozenset({})
13k=frozenset({})
14l=frozenset({})
15
16m=frozenset({})
17n=frozenset({})
18o=frozenset({})
19p=frozenset({})
test_03_Grundlagen_Wkeit_Ereignisalgebra_C0
Score: 5.0 / 5.0 (Top)
1### BEGIN HIDDEN TESTS
2from assignmenttest import VariableTest, FunctionTest, grade_report
3sol = {frozenset(s) for s in [
4 {1}, {2,3},
5 {1,2,3,4,5}, {},
6 {2,3,4,5},
7 {1,4,5},
8 {4,5},
9 {1,2,3},
10]}
11#assert check_sigma_alg({1,2,3,4,5}, sol), "Aufgabenstellung falsch"
12
13
14target = [globals().get(x, frozenset()) for x in 'abcdefghijklmnop']
15for t in target:
16 assert isinstance(t, frozenset), f"{t} ist leider kein frozenset, leider keine Punkte"
17def grade():
18 percentage = 1
19 error = ""
20 for t in target:
21 if not (t in sol):
22 percentage -= 0.2
23 error += str(t) + " gehört nicht in die Lösung, \n"
24 for s in sol:
25 if not(s in target):
26 percentage -= 0.2
27 error += str(s) + " fehlt in Ihrer Lösung, \n"
28 if error:
29 print("Fehler:")
30 print(error)
31 else:
32 print('Super, Alles richtig ;)\n')
33 return max(0, percentage)
34grade_report(grade(), points=5)
35### END HIDDEN TESTS