WuS_Hausaufgabe_4 (Score: 86.0 / 100.0)

  1. Test cell (Score: 5.0 / 5.0)
  2. Test cell (Score: 5.0 / 5.0)
  3. Test cell (Score: 6.0 / 6.0)
  4. Test cell (Score: 6.0 / 6.0)
  5. Test cell (Score: 3.0 / 3.0)
  6. Test cell (Score: 5.0 / 5.0)
  7. Test cell (Score: 5.0 / 5.0)
  8. Test cell (Score: 3.0 / 3.0)
  9. Test cell (Score: 0.0 / 4.0)
  10. Test cell (Score: 3.0 / 3.0)
  11. Test cell (Score: 0.0 / 5.0)
  12. Test cell (Score: 5.0 / 5.0)
  13. Test cell (Score: 5.0 / 5.0)
  14. Test cell (Score: 5.0 / 5.0)
  15. Test cell (Score: 3.0 / 3.0)
  16. Test cell (Score: 4.0 / 4.0)
  17. Written response (Score: 2.0 / 2.0)
  18. Comment
  19. Written response (Score: 2.0 / 2.0)
  20. Comment
  21. Written response (Score: 2.0 / 2.0)
  22. Comment
  23. Written response (Score: 2.0 / 2.0)
  24. Comment
  25. Test cell (Score: 5.0 / 5.0)
  26. Test cell (Score: 5.0 / 5.0)
  27. Test cell (Score: 5.0 / 5.0)
  28. Test cell (Score: 0.0 / 5.0)

Wahrscheinlichkeitstheorie und Statistik

WS 2023 / 2024

WuS Hausaufgabe 4

Abgabetermin

Die Abgabefrist dieser Hausaufgabe ist 2023-12-04 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.

Viel Erfolg!

Hinweise zur Bearbeitung der Übung

Allgemeine Informationen:

  • Schreiben Sie Ihre Antwort an die Stelle YOUR CODE HERE.
  • Fügen Sie keine neuen Zellen hinzu oder löschen Zellen.
  • Benennen Sie keine der Dateien / Notebooks um.

Angabe von Ergebnissen

  • Runden Sie Ihre Ergebnisse nicht. Bei den Tests werden bis zu 6 Nachkommastellen geprüft.
  • Prozentzahlen werden immer als Zahl zwischen 0 und 1 angegeben. 30% wird somit als 0.3 angegeben.
  • Fließkommazahlen werden mit einem Dezimalpunkt angegeben, nicht mit einem Komma. 140.25.

Programmcode

  • Das Ergebnis einer Funktion muss mittels return zurückgegeben werden. Ein print Statement ist keine gültige Rückgabe.
  • Stellen Sie sicher, dass sich Ihr Code ausführen lässt. Code der nicht läuft kann nicht automatisch bewertet werden.
  • Bevor Sie abgeben: Klicken Sie im Menü auf Kernel > Restart & Run All (oder den Button in der Toolbar). Damit führen Sie das Notebook linear von oben nach unten aus. Alle Fehler die dann auftreten, treten auch beim Bewerten auf.
  • Entfernen Sie die raise NotImplementedError(), wenn Sie eine Aufgabe bearbeiten. Ansonsten wird beim Bewerten eine Exception ausgelöst, die uns sagt, dass Sie die Aufgabe nicht bearbeitet haben!
In [1]:
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

Task 1

[10 Point(s)]

Impfungen

50 Säuglinge erhalten eine bestimmte Impfung. Die Wahrscheinlichkeit, dass ein Säugling die Impfung nicht verträgt, ist p=0.05. Die Reaktionen der einzelnen Säuglinge auf die Impfung sind unabhängig voneinander. Sei X = Anzahl der Säuglinge, die die Impfung nicht vertragen.

Berechnen Sie P(X=0),P(X=1),P(X=2) und P(X3).

Task 1.1

[5 Point(s)]

Impfungen a)

Berechnen Sie die Wahrscheinlichkeiten approximativ.

Speichern Sie Ihre Lösung in den Variablen P0, P1, P2, Pg3.

In [2]:
Student's answer(Top)
1P0 = stats.poisson.pmf(0, 50*0.05)
2P1 = stats.poisson.pmf(1, 50*0.05)
3P2 = stats.poisson.pmf(2, 50*0.05)
4Pg3 = 1 - stats.poisson.cdf(2, 50*0.05)
5
6P0, P1, P2, Pg3
Out[2]:
(0.0820849986238988,
 0.205212496559747,
 0.25651562069968376,
 0.4561868841166703)
In [3]:
Grade cell: test_06_Verteilungen_Poisson_Binom_Impfungen_A0 Score: 5.0 / 5.0 (Top)
 1### BEGIN HIDDEN TESTS
 2from scipy.stats import poisson
 3from assignmenttest.decorators import test_asserts
 4
 5expected0 = poisson.pmf(0, 2.5)
 6expected1 = poisson.pmf(1, 2.5)
 7expected2 = poisson.pmf(2, 2.5)
 8expected3 = 1 - poisson.cdf(2, 2.5)
 9
10points = 5
11@test_asserts(points)
12def check():
13    # comment for P3 --> altes Blatt
14    assert np.isclose(P0, expected0, rtol=0, atol=1E-6)
15    assert np.isclose(P1, expected1, rtol=0, atol=1E-6)
16    assert np.isclose(P2, expected2, rtol=0, atol=1E-6)
17    if 'Pg3' not in globals() and 'P3' in globals():
18        print('Die Variable heißt (dieses Jahr nicht mehr) P3 sondern Pg3...')
19    assert np.isclose(Pg3, expected3, rtol=0, atol=1E-6)
20check() 
21### END HIDDEN TESTS
4 / 4 tests passed

### BEGIN GRADE
5.0
### END GRADE

Task 1.2

[5 Point(s)]

Impfungen b)

Berechnen Sie die Wahrscheinlichkeiten genau.

Speichern Sie Ihre Lösung in den Variablen P0genau, P1genau, P2genau, Pg3genau.

In [4]:
Student's answer(Top)
1P0genau = stats.binom.pmf(0, 50, 0.05)
2P1genau = stats.binom.pmf(1, 50, 0.05)
3P2genau = stats.binom.pmf(2, 50, 0.05)
4Pg3genau = 1 - stats.binom.cdf(2, 50, 0.05)
5
6
7P0genau, P1genau, P2genau, Pg3genau
Out[4]:
(0.07694497527671336,
 0.2024867770439825,
 0.2611013703988195,
 0.45946687728048485)
In [5]:
Grade cell: test_06_Verteilungen_Poisson_Binom_Impfungen_B0 Score: 5.0 / 5.0 (Top)
 1### BEGIN HIDDEN TESTS
 2from assignmenttest.decorators import test_asserts
 3from scipy.stats import binom
 4
 5expected0 = binom.pmf(k=0, p=0.05, n=50)
 6expected1 = binom.pmf(k=1, p=0.05, n=50)
 7expected2 = binom.pmf(k=2, p=0.05, n=50)
 8expected3 = 1 - binom.cdf(k=2, p=0.05, n=50)
 9
10points = 5
11@test_asserts(points)
12def check():
13    assert np.isclose(P0genau, expected0, rtol=0, atol=1E-6)
14    assert np.isclose(P1genau, expected1, rtol=0, atol=1E-6)
15    assert np.isclose(P2genau, expected2, rtol=0, atol=1E-6)
16    if 'Pg3genau' not in globals() and 'P3genau' in globals():
17        print('Die Variable heißt (dieses Jahr nicht mehr) P3genau sondern Pg3genau...')
18    assert np.isclose(Pg3genau, expected3, rtol=0, atol=1E-6)
19check() 
20### END HIDDEN TESTS
4 / 4 tests passed

### BEGIN GRADE
5.0
### END GRADE

Task 2

[15 Point(s)]

Werkstücke

Um zu entscheiden, ob eine Lieferung von 100 Werkstücken angenommen werden soll, wird folgender Stichprobenplan durchgeführt:

5 Werkstücke werden zufällig entnommen. Falls sich darunter kein Ausschussstück befindet, wird die Lieferung angenommen.

Ist mehr als ein Ausschussstück darunter, wird die Lieferung abgelehnt.

Ist genau ein Ausschussstück darunter, dann wird eine zweite Stichprobe im Umfang von 10 entnommen. Falls sich kein Ausschussstück in dieser Stichprobe befindet, wird die Lieferung angenommen, andernfalls endgültig abgelehnt.

Task 2.1

[6 Point(s)]

Werkstücke a)

Das Ziel ist es nun die Wahrscheinlichkeit für die Annahme der Lieferung zu berechnen, wenn die gesamte Lieferung 4 defekte Werkstücke enthält und die entnommenen Werkstücke nach der Überprüfung nicht zurückgelegt werden. Berechnen Sie dazu zunächst die Wahrscheinlichkeit für 0 defekte Teile in der 1. Stichprobe.

Speichern Sie Ihre Lösung in der Variablen p0InEinsDefekt.

In [6]:
Student's answer(Top)
1p0InEinsDefekt = math.comb(96,5)/math.comb(100,5)
2
3
4p0InEinsDefekt 
Out[6]:
0.8118751155570006
In [7]:
Grade cell: test_06_Verteilungen_Hypergeom_Werkstuecke_A0 Score: 6.0 / 6.0 (Top)
 1### BEGIN HIDDEN TESTS
 2from assignmenttest import VariableTest, grade_report
 3from numbers import Number
 4from scipy import stats
 5
 6expected = stats.hypergeom.pmf(k=0,M=100,n=4,N=5)
 7points = 6
 8
 9test_cases = [
10    {
11        'name': 'p0InEinsDefekt',
12        'expected_type': Number,
13        'expected': expected,
14    }
15]
16
17passed = VariableTest(globals(), a_tol=1E-6).test(test_cases)
18grade_report(passed, points)
19assert passed == 1
20
21### END HIDDEN TESTS
============================================================
Variable Test

============================================================
1 / 1 tests passed!
============================================================
### BEGIN GRADE
6.0
### END GRADE

Task 2.2

[6 Point(s)]

Werkstücke b)

Berechnen Sie nun die Wahrscheinlichkeit für genau 1 defektes Teil in der ersten Stichprobe und 0 defekte Teile in der zweiten Stichprobe.

Speichern Sie Ihre Lösung in der Variablen p1InEinsUnd0InZweiDefekt.

In [8]:
Student's answer(Top)
1einsImErsten = ((math.comb(4,1)*math.comb(96,4))/math.comb(100,5))
2keinsImZweiten = ((math.comb(3,0)*math.comb(92,10))/math.comb(95,10))
3p1InEinsUnd0InZweiDefekt =  einsImErsten * keinsImZweiten
4p1InEinsUnd0InZweiDefekt, stats.hypergeom.pmf(k=1,M=100,n=4,N=5) * stats.hypergeom.pmf(k=0,M=95,n=3,N=10)
Out[8]:
(0.12594278573660017, 0.12594278573660017)
In [9]:
Grade cell: test_06_Verteilungen_Hypergeom_Werkstuecke_B0 Score: 6.0 / 6.0 (Top)
 1### BEGIN HIDDEN TESTS
 2from assignmenttest import VariableTest, grade_report
 3from numbers import Number
 4from scipy import stats
 5
 6expected = stats.hypergeom.pmf(k=1,M=100,n=4,N=5) * stats.hypergeom.pmf(k=0,M=95,n=3,N=10)
 7points = 6
 8
 9test_cases = [
10    {
11        'name': 'p1InEinsUnd0InZweiDefekt',
12        'expected_type': Number,
13        'expected': expected,
14    }
15]
16
17passed = VariableTest(globals(), r_tol=0.01).test(test_cases)
18grade_report(passed, points)
19assert passed == 1
20
21### END HIDDEN TESTS
============================================================
Variable Test

============================================================
1 / 1 tests passed!
============================================================
### BEGIN GRADE
6.0
### END GRADE

Task 2.3

[3 Point(s)]

Werkstücke c)

Berechnen Sie die Wahrscheinlichkeit für die Annahme der Lieferung.

Speichern Sie Ihre Lösung in der Variablen pAnnahmeA.

In [10]:
Student's answer(Top)
1pAnnahmeA = p0InEinsDefekt + p1InEinsUnd0InZweiDefekt
2
3pAnnahmeA 
Out[10]:
0.9378179012936008
In [11]:
Grade cell: test_06_Verteilungen_Hypergeom_Werkstuecke_C0 Score: 3.0 / 3.0 (Top)
 1### BEGIN HIDDEN TESTS
 2from assignmenttest import VariableTest, grade_report
 3from numbers import Number
 4from scipy import stats
 5import sys
 6
 7points = 3
 8can_pass = True
 9
10try:
11
12    expected = p0InEinsDefekt+p1InEinsUnd0InZweiDefekt
13except Exception as e:
14    print("{}: {}".format("Error", "Variable not set or set to None"))
15    points = 0
16    can_pass = False
17
18if can_pass: 
19    test_cases = [
20        {
21            'name': 'pAnnahmeA',
22            'expected_type': Number,
23            'expected': expected,
24        }
25    ]
26
27    passed = VariableTest(globals(), a_tol=1E-6).test(test_cases)
28    grade_report(passed, points)
29    assert passed == 1
30else:
31    assert False
32### END HIDDEN TESTS
============================================================
Variable Test

============================================================
1 / 1 tests passed!
============================================================
### BEGIN GRADE
3.0
### END GRADE

Task 3

[35 Point(s)]

Rechenaufgaben

Sei X normalverteilt mit Mittelwert 5 und Standardabweichung 7.

Task 3.1

[5 Point(s)]

Rechenaufgaben a)

Wie wahrscheinlich ist es, dass X kleiner als 5 ist?

Speichern Sie ihre Lösung in der Variable p_k_5.

In [12]:
Student's answer(Top)
1p_k_5 = stats.norm.cdf(5, loc=5, scale=7)
2
3p_k_5
Out[12]:
0.5
In [13]:
Grade cell: test_06_Verteilungen_Norm_T_Rechenaufgaben_A0 Score: 5.0 / 5.0 (Top)
 1### BEGIN HIDDEN TESTS
 2import numpy as np
 3from assignmenttest.decorators import test_asserts
 4
 5expected_p = 0.5
 6
 7points = 5
 8@test_asserts(points)
 9def check():
10    if expected_p == 0:
11        print("Gängiger Fehler A: Es ist nach kleiner, nicht gleich gefragt.\n")
12    assert np.isclose(expected_p, p_k_5, rtol=0, atol=1E-6), f"Die Wahrscheinlichkeit sollte = {expected_p} sein, ist aber {p_k_5}"
13check() 
14### END HIDDEN TESTS
1 / 1 tests passed

### BEGIN GRADE
5.0
### END GRADE

Task 3.2

[5 Point(s)]

Rechenaufgaben b)

Wie wahrscheinlich ist es, dass X größer als 4 und kleiner als 6 ist?

Speichern Sie ihre Lösung in der Variable p_4_6.

In [14]:
Student's answer(Top)
1p_4_6 = stats.norm.cdf(6, loc=5, scale=7) - stats.norm.cdf(4, loc=5, scale=7)
2
3p_4_6
Out[14]:
0.1135969936329364
In [15]:
Grade cell: test_06_Verteilungen_Norm_T_Rechenaufgaben_B0 Score: 5.0 / 5.0 (Top)
 1### BEGIN HIDDEN TESTS
 2import numpy as np
 3from assignmenttest.decorators import test_asserts
 4from scipy.stats import norm
 5
 6x = norm(loc=5,scale=7)
 7expected_p = x.cdf(6)-x.cdf(4)
 8
 9points = 5
10@test_asserts(points)
11def check():
12    if expected_p < 0:
13        print("Gängiger Fehler A: Wahrscheinlichkeiten können nicht negativ sein.\n")
14    assert np.isclose(expected_p, p_4_6, rtol=0, atol=1E-6), f"Die Wahrscheinlichkeit sollte = {expected_p} sein, ist aber {p_4_6}"
15check() 
16### END HIDDEN TESTS
1 / 1 tests passed

### BEGIN GRADE
5.0
### END GRADE

Task 3.3

[3 Point(s)]

Rechenaufgaben c)

Wie wahrscheinlich ist es, dass X größer als 12 ist?

Speichern Sie ihre Lösung in der Variable p_g_12.

In [16]:
Student's answer(Top)
1p_g_12 = 1 - stats.norm.cdf(12, loc=5, scale=7)
2
3p_g_12
Out[16]:
0.15865525393145707
In [17]:
Grade cell: test_06_Verteilungen_Norm_T_Rechenaufgaben_C0 Score: 3.0 / 3.0 (Top)
 1### BEGIN HIDDEN TESTS
 2import numpy as np
 3from assignmenttest.decorators import test_asserts
 4from scipy.stats import norm
 5
 6x = norm(loc=5,scale=7)
 7expected_p = 1-x.cdf(12)
 8
 9points = 3
10@test_asserts(points)
11def check():
12    if expected_p < 0:
13        print("Gängiger Fehler A: Wahrscheinlichkeiten können nicht negativ sein.\n")
14    if np.isclose(expected_p, 1-p_g_12, rtol=0, atol=1E-6):
15        print("Gängiger Fehler B: Es war nach größer nicht nach kleiner gefragt.\n")
16    assert np.isclose(expected_p, p_g_12, rtol=0, atol=1E-6), f"Die Wahrscheinlichkeit sollte = {expected_p} sein, ist aber {p_g_12}"
17check() 
18### END HIDDEN TESTS
1 / 1 tests passed

### BEGIN GRADE
3.0
### END GRADE

Task 3.4

[4 Point(s)]

Rechenaufgaben d)

Wie wahrscheinlich ist es, dass X kleiner als 4 oder größer als 6 ist?

Speichern Sie ihre Lösung in der Variable p_6_4.

In [18]:
Student's answer(Top)
1x_kleiner_4 = stats.norm.cdf(4, loc=5, scale=7)
2x_größer_6 = 1 - stats.norm.cdf(6, loc=5, scale=7)
3x_zwischen_4_und_6 = stats.norm.cdf(6, loc=5, scale=7) - stats.norm.cdf(4, loc=5, scale=7)
4
5p_6_4 = x_kleiner_4 + x_größer_6 - x_zwischen_4_und_6
6
7p_6_4
Out[18]:
0.7728060127341272
In [19]:
Grade cell: test_06_Verteilungen_Norm_T_Rechenaufgaben_D0 Score: 0.0 / 4.0 (Top)
 1### BEGIN HIDDEN TESTS
 2import numpy as np
 3from assignmenttest.decorators import test_asserts
 4from scipy.stats import norm
 5
 6x = norm(loc=5,scale=7)
 7expected_p = x.cdf(4)+(1-x.cdf(6))
 8
 9points = 4
10@test_asserts(points)
11def check():
12    if expected_p < 0:
13        print("Gängiger Fehler A: Wahrscheinlichkeiten können nicht negativ sein.\n")
14    if np.isclose(expected_p, 1-p_6_4, rtol=0, atol=1E-6):
15        print("Gängiger Fehler B: Es war nach kleiner 4 oder größer 6 nicht nach größer 4 und kleiner 6 gefragt.\n")
16    assert np.isclose(expected_p, p_6_4, rtol=0, atol=1E-6), f"Die Wahrscheinlichkeit sollte = {expected_p} sein, ist aber {p_6_4}"
17check() 
18### END HIDDEN TESTS
!--> AssertionError: Die Wahrscheinlichkeit sollte = 0.8864030063670636 sein, ist aber 0.7728060127341272
     Line 6: assert np.isclose(expected_p, p_6_4, rtol=0, atol=1E-6), f"Die Wahrscheinlichkeit sollte = {expected_p} sein, ist aber {p_6_4}"

0 / 1 tests passed

### BEGIN GRADE
0.0
### END GRADE

Task 3.5

[3 Point(s)]

Rechenaufgaben e)

Wie wahrscheinlich ist es, dass X = 5 ist?

Speichern Sie ihre Lösung in der Variable p_5.

In [20]:
Student's answer(Top)
1p_5 = 0
2
3p_5
Out[20]:
0
In [21]:
Grade cell: test_06_Verteilungen_Norm_T_Rechenaufgaben_E0 Score: 3.0 / 3.0 (Top)
 1### BEGIN HIDDEN TESTS
 2import numpy as np
 3from assignmenttest.decorators import test_asserts
 4from scipy.stats import norm
 5
 6expected_p = 0
 7
 8points = 3
 9@test_asserts(points)
10def check():
11    if expected_p < 0:
12        print("Gängiger Fehler A: Wahrscheinlichkeiten können nicht negativ sein.\n")
13    if expected_p > 0:
14        print("Gängiger Fehler B: Einzelne Werte haben keine Masse.\n")
15    assert np.isclose(expected_p, p_5, rtol=0, atol=1E-6), f"Die Wahrscheinlichkeit sollte = {expected_p} sein, ist aber {p_5}"
16check() 
17### END HIDDEN TESTS
1 / 1 tests passed

### BEGIN GRADE
3.0
### END GRADE

Task 3.6

[5 Point(s)]

Sei nun für die folgenden Teilaufgaben Xχ32=X12+X22+X32 und X1,X2,X3 unabhängige standardnormalverteilte Zufallsvariablen.

Rechenaufgabe f)

Berechnen Sie FX(5).

Speichern Sie ihre Lösung in p_chi_5.

In [22]:
Student's answer(Top)
1p_chi_5 = stats.chi2(df=3).pdf(5)
2
3p_chi_5
Out[22]:
0.07322491280963243
In [23]:
Grade cell: test_06_Verteilungen_Norm_T_Rechenaufgaben_F0 Score: 0.0 / 5.0 (Top)
 1### BEGIN HIDDEN TESTS
 2import numpy as np
 3from assignmenttest.decorators import test_asserts
 4from scipy.stats import chi2
 5from scipy.stats import norm
 6
 7
 8x = chi2(df=3)
 9expected_p = x.cdf(5)
10
11points = 5
12@test_asserts(points)
13def check():
14    if expected_p < 0:
15        print("Gängiger Fehler A: Wahrscheinlichkeiten können nicht negativ sein.\n")
16    if np.isclose(expected_p, norm(loc=5,scale=7).cdf(5), rtol=0, atol=1E-6):
17        print("Gängiger Fehler B: Die Zufallsvariable ist nicht mehr normalverteilt.\n")
18    assert np.isclose(expected_p, p_chi_5, rtol=0, atol=1E-6), f"Die Wahrscheinlichkeit sollte = {expected_p} sein, ist aber {p_chi_5}"
19check() 
20### END HIDDEN TESTS
!--> AssertionError: Die Wahrscheinlichkeit sollte = 0.8282028557032665 sein, ist aber 0.07322491280963243
     Line 6: assert np.isclose(expected_p, p_chi_5, rtol=0, atol=1E-6), f"Die Wahrscheinlichkeit sollte = {expected_p} sein, ist aber {p_chi_5}"

0 / 1 tests passed

### BEGIN GRADE
0.0
### END GRADE

Task 3.7

[5 Point(s)]

Rechenaufgabe g)

Berechnen Sie P(2X<4).

Speichern Sie ihre Lösung in p_chi_2_4.

In [24]:
Student's answer(Top)
1p_chi_2_4 = stats.chi2(df=3).cdf(4) - stats.chi2(df=3).cdf(2)
2p_chi_2_4
Out[24]:
0.3109425745217686
In [25]:
Grade cell: test_06_Verteilungen_Norm_T_Rechenaufgaben_G0 Score: 5.0 / 5.0 (Top)
 1### BEGIN HIDDEN TESTS
 2import numpy as np
 3from assignmenttest.decorators import test_asserts
 4from scipy.stats import chi2
 5from scipy.stats import norm
 6
 7
 8x = chi2(df=3)
 9expected_p = x.cdf(4)-x.cdf(2)
10
11points = 5
12@test_asserts(points)
13def check():
14    if expected_p < 0:
15        print("Gängiger Fehler A: Wahrscheinlichkeiten können nicht negativ sein.\n")
16    if np.isclose(expected_p, norm(loc=5,scale=7).cdf(4)-norm(loc=5,scale=7).cdf(2), rtol=0, atol=1E-6):
17        print("Gängiger Fehler B: Die Zufallsvariable ist nicht mehr normalverteilt.\n")
18    assert np.isclose(expected_p, p_chi_2_4, rtol=0, atol=1E-6), f"Die Wahrscheinlichkeit sollte = {expected_p} sein, ist aber {p_chi_2_4}"
19check() 
20### END HIDDEN TESTS
1 / 1 tests passed

### BEGIN GRADE
5.0
### END GRADE

Task 3.8

[5 Point(s)]

Rechenaufgabe h)

Berechnen Sie 25fX(u)du.

Speichern Sie ihre Lösung in p_chi_2_5.

In [26]:
Student's answer(Top)
1p_chi_2_5 = stats.chi2(df=3).cdf(5) - stats.chi2(df=3).cdf(2)
2
3p_chi_2_5
Out[26]:
0.40060956017414623
In [27]:
Grade cell: test_06_Verteilungen_Norm_T_Rechenaufgaben_H0 Score: 5.0 / 5.0 (Top)
 1### BEGIN HIDDEN TESTS
 2import numpy as np
 3from assignmenttest.decorators import test_asserts
 4from scipy.stats import chi2
 5from scipy.stats import norm
 6
 7
 8x = chi2(df=3)
 9expected_p = x.cdf(5)-x.cdf(2)
10
11points = 5
12@test_asserts(points)
13def check():
14    if expected_p < 0:
15        print("Gängiger Fehler A: Wahrscheinlichkeiten können nicht negativ sein.\n")
16    if np.isclose(expected_p, norm(loc=5,scale=7).cdf(5)-norm(loc=5,scale=7).cdf(2), rtol=0, atol=1E-6):
17        print("Gängiger Fehler B: Die Zufallsvariable ist nicht mehr normalverteilt.\n")
18    assert np.isclose(expected_p, p_chi_2_5, rtol=0, atol=1E-6), f"Die Wahrscheinlichkeit sollte = {expected_p} sein, ist aber {p_chi_2_5}"
19check() 
20### END HIDDEN TESTS
1 / 1 tests passed

### BEGIN GRADE
5.0
### END GRADE

Task 4

[20 Point(s)]

Transformationen

Task 4.1

[5 Point(s)]

Transformationen a)

Unter data/data.csv finden Sie einen Datensatz. Dieser enthält Messungen der Mengen in g an Müsli, die beim Einschütten aus der Packung in eine Schüssel auftraten.

Laden Sie den Datensatz aus der Datei und speichern sie ihn in der Variable data. Sie können diese danach Plotten, um sich einen Überblick über die Daten zu verschaffen.

In [28]:
Student's answer(Top)
1data = pd.read_csv("WuS_Hausaufgabe_4_files/data/data.csv", header=None)
2data = np.array((data[0]))
3plt.hist(data, bins=range(150,247,4), rwidth=0.8, align='left')
4plt.grid()  # Gitterlinien
5plt.xlabel('Gramm')  # Achsenbeschriftung
6plt.ylabel('Müslischüsseln mit Gramm')  # Achsenbeschriftung
7plt.title('Müslipackungen mit 10 Würfeln mit 4 Augen und 10000 Würfen')  # Titel
8plt.show()  # Plot Anzeigen
In [29]:
Grade cell: test_06_Verteilungen_Norm_Transformationen_A0 Score: 5.0 / 5.0 (Top)
 1### BEGIN HIDDEN TESTS
 2import collections
 3import numpy as np
 4import pandas as pd
 5from assignmenttest import grade_report
 6
 7# quick tests:
 8# data = pd.read_csv('WuS_Hausaufgabe_5_files/WuS_Hausaufgabe_4_files/data/data.csv').to_numpy()
 9# data = pd.read_csv('WuS_Hausaufgabe_5_files/WuS_Hausaufgabe_4_files/data/data.csv')#, header=None)
10# data = pd.read_csv('WuS_Hausaufgabe_5_files/WuS_Hausaufgabe_4_files/data/data.csv').values.tolist()
11# data[17] = 3
12# data = []
13expected_data = np.genfromtxt('WuS_Hausaufgabe_4_files/data/data.csv', delimiter=',')
14
15
16def grade():
17    global data_as_array
18    if 'data' not in globals():
19        print("data not defined.")
20        return 0
21    if not isinstance(data, collections.abc.Sized) or not len(data):
22        print("data has no length, that's bad for a dataset")
23        return 0
24    points = 1
25    data_as_array = data
26    if isinstance(data_as_array, pd.DataFrame):
27        data_as_array = data_as_array.to_numpy()
28    if isinstance(data_as_array, (list, tuple)):
29        data_as_array = np.array(data_as_array)
30    if isinstance(data_as_array, np.ndarray) and len(data_as_array.shape) > 1:
31        data_as_array = data_as_array.flatten()
32    if len(data_as_array) < len(expected_data):
33        print(f"data hat zu wenige Elemente. Erwartet: {len(expected_data)}, Ist: {len(data)}")
34        if len(data_as_array) == len(expected_data) - 1:
35            print("Sie haben vermutlich aber per default mit pandas.read_csv die erste Zeile als header verwendet.")
36            print("Die Datei enthält aber keine header.")
37            print("Nächstes Mal Docs lesen und pd.read_csv(..., header=None) setzen!")
38            points = .8
39        else:
40            print("Daten leider falsch eingelesen.")
41            return 0
42    
43    if (
44        (points == .8 and np.allclose(expected_data[1:], data_as_array))
45        or
46        (len(data_as_array) == len(expected_data) and np.allclose(expected_data, data_as_array))
47    ):
48            return points
49
50    print("Daten weichen leider zu stark vom erwarteten Datensatz ab.")
51    return 0
52    
53grade_report(grade(), points=5)
54### END HIDDEN TESTS
### BEGIN GRADE
5
### END GRADE

Task 4.2

[3 Point(s)]

Transformationen b)

Um diese Normalverteilung mit anderen vergleichbar zu machen und das Rechnen zu erleichtern, soll sie in eine Standardnormalverteilung transformiert werden.

Berechnen Sie dazu zunächst den Mittelwert und die Standardabweichung der Daten und speichern diese in mu und sigma.

Gehen Sie davon aus, dass der Datensatz keine Stichprobe, sondern die Grundgesamtheit repräsentiert.

In [30]:
Student's answer(Top)
1mu = np.mean(data)
2sigma = np.std(data)
3
4mu, sigma
Out[30]:
(199.93070630416864, 9.999170641123184)
In [31]:
Grade cell: test_06_Verteilungen_Norm_Transformationen_B0 Score: 3.0 / 3.0 (Top)
 1### BEGIN HIDDEN TESTS
 2import numpy as np
 3import math
 4from assignmenttest import grade_report
 5
 6expected_mu = 199.93070630416864
 7expected_sigma = 9.999170641123184
 8
 9def grade():
10    assert 'mu' in globals()
11    assert 'sigma' in globals()
12    correct_mu = True
13    correct_sigma = True
14    
15    if math.isclose(mu, 200):
16        print("Gängiger Fehler A: Der Mittelwert sollte berechnet, nicht geschätzt werden.\n")
17        correct_mu = False
18    if math.isclose(sigma, 10):
19        print("Gängiger Fehler B: Die Standardabweichung sollte berechnet, nicht geschätzt werden.\n")
20        correct_sigma = False
21    if not correct_mu and not correct_sigma:
22        return 0
23    if len(data) == 99999:
24        # Folgefehler header...
25        if math.isclose(mu, np.mean(expected_data[1:])):
26            print("Folgefehler (header): Mittelwert aber richtig über die restlichen Werte.")
27        else:
28            print(f"Mittelwert sollte = {expected_mu} sein, ist aber {mu}")
29            correct_mu = False
30        if math.isclose(sigma, np.std(expected_data[1:], ddof=1)):
31            print("Gängiger Fehler C: Sie scheinen die korrigierte Stichprobenstandardabweichung berechnet zu haben.\n"
32                  "Bei pandas Dataframes ist das auch der default, bitte in Zukunft Docs beachten.\n"
33                  "Wir suchten hier die normale Standardabweichung, also ddof=0, da wir direkt auf der Grundgesamtheit rechnen.\n")
34            correct_sigma = False
35        elif math.isclose(sigma, np.std(expected_data[1:])):
36            print("Folgefehler (header): Standardabweichung aber richtig über die restlichen Werte.")
37        else:
38            print(f"Die Standardabweichung sollte = {expected_sigma} sein, ist aber {sigma}")
39            correct_sigma = False
40    else:
41        if not math.isclose(mu, expected_mu):
42            print(f"Mittelwert sollte = {expected_mu} sein, ist aber {mu}")
43            correct_mu = False
44        if not math.isclose(sigma, expected_sigma):
45            if math.isclose(sigma, np.std(expected_data, ddof=1)):
46                print("Gängiger Fehler D: Sie scheinen die korrigierte Stichprobenstandardabweichung berechnet zu haben.\n"
47                      "Bei pandas Dataframes ist das auch der default, bitte in Zukunft Docs beachten.\n"
48                      "Wir suchten hier die normale Standardabweichung, also ddof=0, da wir direkt auf der Grundgesamtheit rechnen.\n")
49            print(f"Die Standardabweichung sollte = {expected_sigma} sein, ist aber {sigma}")
50            correct_sigma = False
51    return sum([correct_mu, correct_sigma]) / 2
52    
53grade_report(grade(), points=3) 
54### END HIDDEN TESTS
### BEGIN GRADE
3.0
### END GRADE

Task 4.3

[4 Point(s)]

Transformationen c)

Wenden Sie nun Transformationen auf die Daten an, damit diese standardnormalverteilt sind.

Speichern Sie die Transformierten Daten in data_std_norm.

In [32]:
Student's answer(Top)
1data_std_norm = (data-mu)/sigma
2data_std_norm
Out[32]:
array([-0.76280037,  0.52002761, -0.45794474, ..., -0.26404435,
       -0.00457255, -0.57315304])
In [33]:
Grade cell: test_06_Verteilungen_Norm_Transformationen_C0 Score: 4.0 / 4.0 (Top)
 1### BEGIN HIDDEN TESTS
 2import collections
 3import numpy as np
 4from assignmenttest import grade_report
 5
 6def grade():
 7    if 'data_std_norm' not in globals():
 8        print("data_std_norm not defined.")
 9        return 0
10    if not isinstance(data_std_norm, collections.abc.Sized) or not len(data_std_norm):
11        print("data_std_norm has no length, that's bad for a dataset")
12        return 0
13    
14    # Berechne expected_data auf data_as_array von oben, um mit Folgefehlern besser umzugehen
15    expected_data = (data_as_array - np.mean(data_as_array)) / np.std(data_as_array)
16    
17    # data_std_norm in nparray umwandeln...
18    data_std_norm_array = data_std_norm
19    if isinstance(data_std_norm_array, pd.DataFrame):
20        data_std_norm_array = data_std_norm_array.to_numpy()
21    if isinstance(data_std_norm_array, (list, tuple)):
22        data_std_norm_array = np.array(data_std_norm_array)
23    if isinstance(data_std_norm_array, np.ndarray) and len(data_std_norm_array.shape) > 1:
24        data_std_norm_array = data_std_norm_array.flatten()
25    if len(data_std_norm_array) == 99999:
26        print("Folgefehler (header): berechnen StdNorm ohne ersten Wert...")
27    if len(data_std_norm_array) != len(expected_data):
28        print(f"data_std_norm hat leider die falsche Anzahl an Elementen. Erwartet: {100000}, Ist: {len(data_std_norm)}")
29        return 0
30    
31    if np.allclose(expected_data, data_std_norm_array):
32        return 1
33    print("Daten weichen leider zu stark vom erwarteten standardnormierten Datensatz ab.")
34    return 0
35
36grade_report(grade(), points=4) 
37### END HIDDEN TESTS
### BEGIN GRADE
4
### END GRADE

Task 4.4

[2 Point(s)]

Transformationen d)

Student's answer Score: 2.0 / 2.0 (Top)

Gegeben sei eine Normalverteilung mit Mittelwert = 5 und Varianz = 7.Nun wird die Transformation f(x)=7x5 angewendet. Was ist der resultierende Mittelwert der Verteilung?

0 false
30 correct
35 false
44 false
keiner der Obigen false

Task 4.5

[2 Point(s)]

Student's answer Score: 2.0 / 2.0 (Top)

Was ist die resultierende Varianz?

1 false
14 false
44 false
49 false
343 correct
2401 false
keine der Obigen false

Task 4.6

[2 Point(s)]

Student's answer Score: 2.0 / 2.0 (Top)

Gegeben sei eine Normalverteilung mit Mittelwert = 1 und Varianz = 1.Nun wird die Transformation f(x)=3x2+1 angewendet. Was ist der resultierende Mittelwert der Verteilung?

1 false
3 false
4 false
10 false
keiner der Obigen correct

Task 4.7

[2 Point(s)]

Student's answer Score: 2.0 / 2.0 (Top)

Was ist die resultierende Varianz?

1 false
3 false
4 false
10 false
keiner der Obigen correct

Task 5

[20 Point(s)]

Füllmenge eines Kölschglases

Nehmen Sie an ein Wirt befüllt handelsübliche Kölschgläser mit durchschnittlich μ=200ml und einer Standardabweichung von σ=10ml. Gehen Sie davon aus, dass die Füllmenge normalverteilt ist.

Task 5.1

[5 Point(s)]

Füllmenge eines Kölschglases a)

Wie wahrscheinlich ist es, dass das Glas überläuft, wenn das Glas maximal 220ml fasst?

Speichern Sie Ihre Lösung in der Variablen pUeberlauf.

In [34]:
Student's answer(Top)
1pUeberlauf=1 - stats.norm.cdf(220, loc=200, scale=10)
2
3pUeberlauf
Out[34]:
0.02275013194817921
In [35]:
Grade cell: test_06_Verteilungen_Norm_Normal_Koelschglas_A0 Score: 5.0 / 5.0 (Top)
 1### BEGIN HIDDEN TESTS
 2import numpy.testing as test
 3from scipy import stats
 4from assignmenttest.decorators import test_asserts
 5
 6expected =  1-stats.norm.cdf(loc=200,scale=10,x=220)
 7
 8
 9points = 5
10@test_asserts(points)
11def check():
12    assert np.isclose(expected, pUeberlauf, rtol=0, atol=1E-6), f"Die Wahrscheinlichkeit sollte = {expected} sein, ist aber {pUeberlauf}"
13check() 
14### END HIDDEN TESTS
1 / 1 tests passed

### BEGIN GRADE
5.0
### END GRADE

Task 5.2

[5 Point(s)]

Füllmenge eines Kölschglases b)

Welche Füllmenge wird in 85% der Fälle nicht überschritten?

Speichern Sie Ihre Lösung in der Variablen q85Prozent.

In [36]:
Student's answer(Top)
1q85Prozent = stats.norm.ppf(0.85, loc=200, scale=10)
2
3q85Prozent
Out[36]:
210.3643338949379
In [37]:
Grade cell: test_06_Verteilungen_Norm_Normal_Koelschglas_B0 Score: 5.0 / 5.0 (Top)
 1### BEGIN HIDDEN TESTS
 2import numpy.testing as test
 3from scipy import stats
 4from assignmenttest.decorators import test_asserts
 5
 6expected =  stats.norm.ppf(loc=200,scale=10,q=0.85)
 7
 8
 9points = 5
10@test_asserts(points)
11def check():
12    assert np.isclose(expected, q85Prozent, rtol=0, atol=1E-6), f"Die Füllmenge sollte = {expected} sein, ist aber {q85Prozent}"
13check() 
14### END HIDDEN TESTS
1 / 1 tests passed

### BEGIN GRADE
5.0
### END GRADE

Task 5.3

[5 Point(s)]

Füllmenge eines Kölschglases c)

Wie wahrscheinlich ist es, dass ein Glas exakt 200ml enthält?

Speichern Sie Ihre Lösung in der Variablen pGenau200ml.

In [38]:
Student's answer(Top)
1pGenau200ml = 0 ## Noramlverteilungen haben für ein Elementarereignis immer die Wahrscheinlichkeit 0
2pGenau200ml
Out[38]:
0
In [39]:
Grade cell: test_06_Verteilungen_Norm_Normal_Koelschglas_C0 Score: 5.0 / 5.0 (Top)
 1### BEGIN HIDDEN TESTS
 2from scipy import stats
 3from assignmenttest.decorators import test_asserts
 4
 5expected =  0
 6
 7
 8points = 5
 9@test_asserts(points)
10def check():
11    assert np.isclose(expected, pGenau200ml, rtol=0, atol=1E-6), f"Die Wahrscheinlichkeit sollte = {expected} sein, ist aber {pGenau200ml}"
12check() 
13### END HIDDEN TESTS
1 / 1 tests passed

### BEGIN GRADE
5.0
### END GRADE

Task 5.4

[5 Point(s)]

Füllmenge eines Kölschglases d)

Wie müsste sich die mittlere Füllmenge verändern, damit es nur in einem Prozent der Fälle zum Überlaufen kommt?

Hier sind einige Hinweise, die Ihnen dabei helfen könnten:

  • Für welchen Parameter steht die mittlere Füllmenge?
  • Denken Sie darüber nach, ob sich die Standardabweichung ändert
  • Schauen Sie in der Vorlesung nach, wie sich eine Normalverteilung verändert, wenn der Erwartungswert sich ändert
  • Schreiben Sie die Wahrscheinlichkeit die Sie berechnen müssen auf: P(X...)=...

Speichern Sie Ihre Lösung in der Variablen myNeu.

In [40]:
Student's answer(Top)
1#for i in np.linspace(196.0, 198.0, 201):
2#    print(i, 1 - stats.norm.cdf(220, loc=i, scale=10))
3
4
5myNeu= 220 + (sigma * stats.norm.ppf(.01))
6myNeu
Out[40]:
196.7384506368515
In [41]:
Grade cell: test_06_Verteilungen_Norm_Normal_Koelschglas_D0 Score: 0.0 / 5.0 (Top)
 1### BEGIN HIDDEN TESTS
 2from scipy import stats
 3from assignmenttest.decorators import test_asserts
 4
 5expected =  stats.norm.ppf(loc=220,scale=10,q=0.01)
 6
 7
 8points = 5
 9@test_asserts(points)
10def check():
11    assert np.isclose(expected, myNeu, rtol=0, atol=1E-6), f"Die Füllmenge sollte = {expected} sein, ist aber {myNeu}"
12check() 
13### END HIDDEN TESTS
!--> AssertionError: Die Füllmenge sollte = 196.7365212595916 sein, ist aber 196.7384506368515
     Line 2: assert np.isclose(expected, myNeu, rtol=0, atol=1E-6), f"Die Füllmenge sollte = {expected} sein, ist aber {myNeu}"

0 / 1 tests passed

### BEGIN GRADE
0.0
### END GRADE

Viel Erfolg

Erinnerungen: Ausführbar? Errors Raised? Abgegeben?

  • Stellen Sie sicher, dass sich Ihr Code ausführen lässt. Code der nicht läuft kann nicht automatisch bewertet werden.
  • Bevor Sie abgeben: Klicken Sie im Menü auf Kernel > Restart & Run All (oder den Button in der Toolbar). Damit führen Sie das Notebook linear von oben nach unten aus. Alle Fehler die dann auftreten, treten auch beim Bewerten auf.
  • Entfernen Sie die raise NotImplementedError(), wenn Sie eine Aufgabe bearbeiten. Ansonsten wird beim Bewerten eine Exception ausgelöst, die uns sagt, dass Sie die Aufgabe nicht bearbeitet haben!
  • Vergessen Sie nicht Ihr bearbeitetes Notebook zu abzugeben (Assignment Tab / Submit Button)! Einfaches Speichern reicht nicht und wird nicht bewertet.
Timestamp:

2023-12-03 23:31:19.112834 CET