WuS_Hausaufgabe_6 (Score: 17.0 / 100.0)

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

Wahrscheinlichkeitstheorie und Statistik

WS 2023 / 2024

WuS Hausaufgabe 6

Abgabetermin

Die Abgabefrist dieser Hausaufgabe ist 2024-01-15 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

[30 Point(s)]

X2-Test auf Unabhängigkeit

Jemand behauptet, der Glühwein auf dem Bonner Weihnachtsmarkt sei bei gleichem Preis viel stärker als auf dem Siegburger Markt, mache also viel günstiger betrunken. Um diese Vermutung zu überprüfen, besuchen 45 Studierende den Bonner Weihnachtsmarkt und 66 Studierende den Siegburger Markt. Alle trinken genau 7 Tassen Glühwein. Um den Grad der Betrunkenheit zu überprüfen, müssen alle Studierende unabhängig voneinander anschließend eine Stammfunktion zu einer vorher nicht bekannten Funktion bilden. Wer dies nicht hin bekommt, gilt als betrunken. Die Auswertung der Stammfunktionen ergibt folgendes:

Stammfunktion korrektStammfunktion nicht korrektBonn738Siegburg1947

Auf Basis dieser Daten soll nun ein X2-Unabhängigkeitstest zum Testniveau α=0.1 durchgeführt werden.

Task 1.1

[15 Point(s)]

X2-Test auf Unabhängigkeit a)

Implementieren Sie die Funktion teststatistikGluehwein, die zur Eingabe der Messdaten des Bonner Marktes und des Siegburger Marktes den Wert der Teststatistik für den oben angegeben Test berechnet.

In [2]:
Student's answer(Top)
 1from scipy import stats
 2import numpy as np
 3
 4def teststatistikGluehwein(bonn: np.array, siegburg:np.array) -> float:
 5    data = [bonn,
 6            siegburg]
 7    n = sum(data)
 8    zs = np.sum(data, axis=1, keepdims=True)  # Zeilensummen
 9    ss = np.sum(data, axis=0, keepdims=True)  # Spaltensummen
10    e = np.dot(zs, ss) / n
11    return np.sum( (data - e)**2 / e )
12    
13teststatistikGluehwein(np.array([7,38]), np.array([19,47]))
Out[2]:
72.11717171717171
In [3]:
Grade cell: test_07_Testen_Chi2_Unabhaengigkeit_Gluehwein_A0 Score: 5.0 / 15.0 (Top)
1# This test case is hidden #
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
Cell In[3], line 21
     17 summandenzeile2 = (nexpected2 - siegburg)**2 / nexpected2
     19 xemp = summandenzeile1.sum() + summandenzeile2.sum()
---> 21 test.assert_almost_equal(xemp, teststatistikGluehwein(np.array([7,38]), np.array([19,47])), decimal=5)
     22 ### END HIDDEN TESTS

File /opt/conda/lib/python3.10/site-packages/numpy/testing/_private/utils.py:599, in assert_almost_equal(actual, desired, decimal, err_msg, verbose)
    597     pass
    598 if abs(desired - actual) >= 1.5 * 10.0**(-decimal):
--> 599     raise AssertionError(_build_err_msg())

AssertionError: 
Arrays are not almost equal to 5 decimals
 ACTUAL: 2.6119169066227887
 DESIRED: 72.11717171717171

Task 1.2

[10 Point(s)]

X2-Test auf Unabhängigkeit b)

Implementieren Sie die die Funktion chi2Grenze, die zu einem Testniveau die Grenze des Annahmebereichs für den oben angegebenen Test ausgibt. Sie können hierfür von einer 4-Felder-Tafel ausgehen.

In [4]:
Student's answer(Top)
 1from scipy import stats
 2import numpy as np
 3
 4def chi2Grenze(niveau: float) -> float:
 5    return stats.chi2.ppf(q=niveau, df=1)
 6    
 7chi2Grenze(0.1)
 8
 9#if teststatistikGluehwein(np.array([7,38]), np.array([19,47])) >= chi2Grenze(0.1):
10#    print("Nullhypothese beibehalten")
11#else:
12#    print("Nullhypothese verwerfen")
Out[4]:
0.01579077409343122
In [5]:
Grade cell: test_07_Testen_Chi2_Unabhaengigkeit_Gluehwein_B0 Score: 5.0 / 10.0 (Top)
1# This test case is hidden #
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
Cell In[5], line 7
      3 import numpy as np
      5 ref = stats.chi2.ppf(df=1, q=0.99)
----> 7 test.assert_almost_equal(ref, chi2Grenze(0.01), decimal=5)
      8 ### END HIDDEN TESTS

File /opt/conda/lib/python3.10/site-packages/numpy/testing/_private/utils.py:599, in assert_almost_equal(actual, desired, decimal, err_msg, verbose)
    597     pass
    598 if abs(desired - actual) >= 1.5 * 10.0**(-decimal):
--> 599     raise AssertionError(_build_err_msg())

AssertionError: 
Arrays are not almost equal to 5 decimals
 ACTUAL: 6.6348966010212145
 DESIRED: 0.00015708785790970184

Task 1.3

[5 Point(s)]

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

X2-Test auf Unabhängigkeit c)

Wird die Nullhypothese nach dem oben ausgeführten Test verworfen?

Ja false
Nein correct

Task 2

[15 Point(s)]

M&Ms

Gegeben sei eine Packung M&Ms. In dieser gibt es die sechs Farben: rot, orange, gelb, grün, blau und braun.

Wir interessieren uns für die Verteilung der Farben (bspw. ob eine Farbe öfter vorkommt) und wollen diese mit einem χ2-Test überprüfen.

Angenommen wir haben 600 M&Ms mit folgender Häufigkeitsverteilung:

Farbe rot blau grün gelb orange braun
Anzahl 80 95 120 102 117 86

Die H0-Hypothese sei: Die M&Ms sind Gleichverteilt.

Task 2.1

[2 Point(s)]

M&Ms a)

Erstellen Sie zuerst einen pandas DataFrame mit den Spalten Farbe, Beobachtet, Erwartet.

  • Die Spalte 'Farbe' enthalte den Namen der Farbe (achten Sie auf die gleiche Schreibweise wie oben)
  • Die Spalte 'Beobachtet' enthalte die beobachtete Häufigkeit (s. Tabelle oben)
  • Die Spalte 'Erwartet' enthalte die erwartete Häufigkeit laut H0-Hypothese
In [6]:
Student's answer(Top)
1import pandas as pd
2
3mm = pd.DataFrame({"Farbe":["rot","blau","grün","gelb","orange","braun"], 
4                   "Beobachtet":[80,95,120,102,117,86],
5                   "Erwartet":[100]*6})
6mm
Out[6]:
Farbe Beobachtet Erwartet
0 rot 80 100
1 blau 95 100
2 grün 120 100
3 gelb 102 100
4 orange 117 100
5 braun 86 100
In [7]:
Grade cell: test_07_Testen_Chi2_Hypotesentest_MundMs_klein_A0 Score: 2.0 / 2.0 (Top)
1# This test case is hidden #
2 / 2 tests passed

### BEGIN GRADE
2.0
### END GRADE

Task 2.2

[5 Point(s)]

M&Ms b)

Rechnen Sie die Prüfgröße χ2 für den Test aus. Speichern Sie Ihre Lösung in der Variablen chiq.

In [8]:
Student's answer(Top)
1e = np.sum(mm.Beobachtet) * 1/4
2chiq = np.sum((mm.Beobachtet - e)**2 / e)
3
4chiq
Out[8]:
108.76
In [9]:
Grade cell: test_07_Testen_Chi2_Hypotesentest_MundMs_klein_B0 Score: 0.0 / 5.0 (Top)
1# This test case is hidden #
!--> AssertionError: 
     Line 2: assert np.isclose(sum((mm_ref.Beobachtet - mm_ref.Erwartet)**2 / mm_ref.Erwartet), chiq)
<--!

0 / 1 tests passed

### BEGIN GRADE
0.0
### END GRADE

Task 2.3

[5 Point(s)]

M&Ms c)

Benutzen Sie den χ2 Test mit einem Signifikanzniveau von α=1%. Führen Sie einen beidseitigen Test durch, um Manipulationen auszuschließen.

Berechnen Sie dazu zunächst die kritischen Grenzen (q-Wert der ppf) und den Freiheitsgrad und speichern diese in den Variablen q_untere_Grenze, q_obere_Grenze und df.

Berechnen Sie anschließend die untere und obere Grenze für den Annahmebereich der H0-Hypothese.

Speichern Sie Ihre Lösung in den Variablen untereGrenze und obereGrenze.

In [10]:
Student's answer(Top)
 1alpha = 0.01
 2q_untere_Grenze = 0
 3q_obere_Grenze = 0
 4df = 0
 5untereGrenze = 0
 6obereGrenze = 0
 7
 8# YOUR CODE HERE
 9raise NotImplementedError()
10untereGrenze, obereGrenze
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
Cell In[10], line 9
      6 obereGrenze = 0
      8 # YOUR CODE HERE
----> 9 raise NotImplementedError()
     10 untereGrenze, obereGrenze

NotImplementedError: 
In [11]:
Grade cell: test_07_Testen_Chi2_Hypotesentest_MundMs_klein_C0 Score: 0.0 / 5.0 (Top)
1# This test case is hidden #
!--> AssertionError: 
     Line 2: assert np.isclose(q_untere_Grenze, q_untere_Grenze_ref)
<--!

!--> AssertionError: 
     Line 3: assert np.isclose(q_obere_Grenze, q_obere_Grenze_ref)
<--!

!--> AssertionError: 
     Line 4: assert np.isclose(df, df_ref)
<--!

!--> AssertionError: 
     Line 5: assert np.isclose(chi2.ppf(q=alpha/2, df=5), untereGrenze)
<--!

!--> AssertionError: 
     Line 6: assert np.isclose(chi2.ppf(q=1 - alpha/2, df=5), obereGrenze)
<--!

0 / 5 tests passed

### BEGIN GRADE
0.0
### END GRADE

Task 2.4

[3 Point(s)]

Student's answer Score: 0.0 / 3.0 (Top)

Sollte die H0-Hypothese verworfen werden?

Ja false
Nein correct

Task 3

[15 Point(s)]

Hypothesentest: Placebo

Ein Arzt in einer Klinik meint, bezüglich einer bestimmten Art von Schmerzen folgendes herausgefunden zu haben: Die mittlere Zeit, die sich ein Patient nach Einnahme eines bestimmten Medikamentes schmerzfrei fühlt, hängt nicht vom Wirkstoff ab, sondern nur von der Tatsache, dass er eine Tablette genommen hat. Um seine Behauptung zu prüfen, verabreicht er 5 Patienten ein Placebo (Tablette ohne Wirkstoff) und 4 Patienten das schmerzstillende Medikament. Er notiert dann, für wie viel Stunden sich die Patienten schmerzfrei fühlen. Es ergeben sich folgende Werte:

Placebo2.20.31.12.03.4Medikament2.81.41.74.3

Nun soll ein zweiseitiger Parametertest zum Niveau α=0.01 durchgeführt werden. Die Nullhypothese lautet H0:μ1=μ2.

Die Zufallsvariablen seien dabei unabhängig und normalverteilt und die Standardabweichung sei identisch und mit σ=1 gegeben.

Task 3.1

[10 Point(s)]

Hypothesentest: Placebo a)

Implementieren Sie die Funktion teststatistikPlacebo, die zur Eingabe zweier Stichproben beliebiger Länge den Wert der Teststatistik für den oben angegeben Test berechnet.

In [12]:
Student's answer(Top)
 1import numpy as np
 2
 3def teststatistikPlacebo(stichprobe1: [float], stichprobe2: [float]) -> float:
 4    
 5    # YOUR CODE HERE
 6    raise NotImplementedError()
 7
 8placebo = np.array([2.2, 0.3, 1.1, 2.0, 3.4])
 9medikament = np.array([2.8, 1.4, 1.7, 4.3])
10teststatistikPlacebo(placebo, medikament)
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
Cell In[12], line 10
      8 placebo = np.array([2.2, 0.3, 1.1, 2.0, 3.4])
      9 medikament = np.array([2.8, 1.4, 1.7, 4.3])
---> 10 teststatistikPlacebo(placebo, medikament)

Cell In[12], line 6, in teststatistikPlacebo(stichprobe1, stichprobe2)
      3 def teststatistikPlacebo(stichprobe1: [float], stichprobe2: [float]) -> float:
      4     
      5     # YOUR CODE HERE
----> 6     raise NotImplementedError()

NotImplementedError: 
In [13]:
Grade cell: test_07_Testen_Hypothesentest_Zweistichproben_Gauss_Placebo_A0 Score: 0.0 / 10.0 (Top)
1# This test case is hidden #
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
Cell In[13], line 11
      8 mb = b.mean()
      9 t = (ma-mb) / np.sqrt(1/len(a) + 1/len(b))
---> 11 test.assert_almost_equal(t, teststatistikPlacebo(a,b), decimal=5)
     12 ### END HIDDEN TESTS

Cell In[12], line 6, in teststatistikPlacebo(stichprobe1, stichprobe2)
      3 def teststatistikPlacebo(stichprobe1: [float], stichprobe2: [float]) -> float:
      4     
      5     # YOUR CODE HERE
----> 6     raise NotImplementedError()

NotImplementedError: 

Task 3.2

[4 Point(s)]

Hypothesentest: Placebo b)

Implementieren Sie die Funktion annahmebereichPlacebo, die bei Eingabe eines Testniveaus α die Grenzen des Annahmebereichs für den oben angegeben Test berechnet.

In [14]:
Student's answer(Top)
1import numpy as np
2from scipy import stats
3
4def annahmebereichPlacebo(alpha: float)-> (float,float):
5
6    # YOUR CODE HERE
7    raise NotImplementedError()
8    
9annahmebereichPlacebo(0.01)
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
Cell In[14], line 9
      4 def annahmebereichPlacebo(alpha: float)-> (float,float):
      5 
      6     # YOUR CODE HERE
      7     raise NotImplementedError()
----> 9 annahmebereichPlacebo(0.01)

Cell In[14], line 7, in annahmebereichPlacebo(alpha)
      4 def annahmebereichPlacebo(alpha: float)-> (float,float):
      5 
      6     # YOUR CODE HERE
----> 7     raise NotImplementedError()

NotImplementedError: 
In [15]:
Grade cell: test_07_Testen_Hypothesentest_Zweistichproben_Gauss_Placebo_B0 Score: 0.0 / 4.0 (Top)
1# This test case is hidden #
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
Cell In[15], line 8
      6 uGRef = -stats.norm.ppf(1-0.05/2)
      7 oGRef = stats.norm.ppf(1-0.05/2)
----> 8 uG,oG = annahmebereichPlacebo(0.05)
     11 points = 4
     13 @test_asserts(points)
     14 def check():

Cell In[14], line 7, in annahmebereichPlacebo(alpha)
      4 def annahmebereichPlacebo(alpha: float)-> (float,float):
      5 
      6     # YOUR CODE HERE
----> 7     raise NotImplementedError()

NotImplementedError: 

Task 3.3

[1 Point(s)]

Student's answer Score: 0.0 / 1.0 (Top)

Hypothesentest: Placebo c)

Wird die Nullhypothese nach dem oben ausgeführten Test beibehalten?

Ja correct
Nein false

Task 4

[40 Point(s)]

Logistische Regression - CHD

Gegeben ist ein Datensatz CHD.csv von 100 Probanden mit den Informationen:

  • ID: Pseudonym
  • AGE: Alter
  • AGRP: Altersgruppe (1-8)
  • CHD: hat CHD (1 für ja, 0 für nein)

Wir wollen nun mit Hilfe der logistischen Regression vorhersagen, mit welcher Wahrscheinlichkeit ein Proband eines bestimmten Alters CHD (Coronary Heart Disease, Koronare Herzkrankheit) hat.

Task 4.1

[2 Point(s)]

Logistische Regression - CHD a)

Die Datei wird zunächst in den DataFrame chdgeladen. Erzeugen Sie einen Scatterplot für die folgenden Daten.

  • x-Achse: Alter
  • y-Achse: hat CHD oder nicht
In [16]:
Student's answer Score: 0.0 / 2.0 (Top)
1import pandas as pd
2import matplotlib.pyplot as plt
3
4chd = pd.read_csv('WuS_Hausaufgabe_6_files/data/CHD.csv')
5
6# YOUR CODE HERE
7raise NotImplementedError()
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
Cell In[16], line 7
      4 chd = pd.read_csv('WuS_Hausaufgabe_6_files/data/CHD.csv')
      6 # YOUR CODE HERE
----> 7 raise NotImplementedError()

NotImplementedError: 

Task 4.2

[10 Point(s)]

Logistische Regression - CHD b)

Um die Parameter der logistischen Kurve zu bestimmen, müssen wir die Daten zuerst gruppieren und die Wahrscheinlichkeiten für eine Herzerkrankung als relative Häufigkeiten für jede Altersgruppe schätzen.

Verwenden Sie für die Gruppierung die Spalte AGRP.

Implementieren Sie die Funktion mittelwerteUndHaeufigkeiten. Diese soll bei Eingabe des DataFrames chd eine Liste mit den Altersmittelwerten je Gruppe und eine Liste mit den relativen Häufigkeiten für einen Erkrankung je Altersgruppe zurückgeben.

Hinweis: pandas groupby

In [17]:
Student's answer(Top)
1import pandas as pd
2import numpy as np
3
4def mittelwerteUndHaeufigkeiten(chd: pd.DataFrame) -> (np.array,np.array):
5    # YOUR CODE HERE
6    raise NotImplementedError()
7    
8mittelwerteUndHaeufigkeiten(chd)
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
Cell In[17], line 8
      4 def mittelwerteUndHaeufigkeiten(chd: pd.DataFrame) -> (np.array,np.array):
      5     # YOUR CODE HERE
      6     raise NotImplementedError()
----> 8 mittelwerteUndHaeufigkeiten(chd)

Cell In[17], line 6, in mittelwerteUndHaeufigkeiten(chd)
      4 def mittelwerteUndHaeufigkeiten(chd: pd.DataFrame) -> (np.array,np.array):
      5     # YOUR CODE HERE
----> 6     raise NotImplementedError()

NotImplementedError: 
In [18]:
Grade cell: test_08_Regressionsana_LogReg_Herzkrankheit_B0 Score: 0.0 / 10.0 (Top)
1# This test case is hidden #
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
Cell In[18], line 14
     11 hsetRef = set(haeufigkeitenRef)
     12 set1 = msetRef.union(hsetRef)
---> 14 studm,studh = mittelwerteUndHaeufigkeiten(chdRef)
     15 msetStud = set(studm)
     16 hsetStud = set(studh)

Cell In[17], line 6, in mittelwerteUndHaeufigkeiten(chd)
      4 def mittelwerteUndHaeufigkeiten(chd: pd.DataFrame) -> (np.array,np.array):
      5     # YOUR CODE HERE
----> 6     raise NotImplementedError()

NotImplementedError: 

Task 4.3

[10 Point(s)]

Logistische Regression - CHD c)

Implementieren Sie die Funktion logitReg. Diese soll bei Eingabe der Altersmittelwerte und relativen Häufigkeiten für CHD je Gruppe die Regressionsparameter Steigung und Achsenabschnitt für die L2-Regressionsgerade zurückgeben. Beachten Sie, dass die Häufigkeiten zuerst in Logits transformiert werden müssen, bevor Sie die Regressionsparameter berechnen können.

In [19]:
Student's answer(Top)
1import numpy as np
2
3def logitReg(mittelwerte: np.array,haeufigkeiten: np.array) -> (float, float):
4    # YOUR CODE HERE
5    raise NotImplementedError()
6    
7mw,ha=mittelwerteUndHaeufigkeiten(chd)
8logitReg(mw,ha)
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
Cell In[19], line 7
      3 def logitReg(mittelwerte: np.array,haeufigkeiten: np.array) -> (float, float):
      4     # YOUR CODE HERE
      5     raise NotImplementedError()
----> 7 mw,ha=mittelwerteUndHaeufigkeiten(chd)
      8 logitReg(mw,ha)

Cell In[17], line 6, in mittelwerteUndHaeufigkeiten(chd)
      4 def mittelwerteUndHaeufigkeiten(chd: pd.DataFrame) -> (np.array,np.array):
      5     # YOUR CODE HERE
----> 6     raise NotImplementedError()

NotImplementedError: 
In [20]:
Grade cell: test_08_Regressionsana_LogReg_Herzkrankheit_C0 Score: 0.0 / 10.0 (Top)
1# This test case is hidden #
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
Cell In[20], line 13
      9 b = ylogit.mean() - a*x.mean()
     11 set1={np.round(a,4),np.round(b,4)}
---> 13 studa,studb = logitReg(x,y)
     14 set2 = {np.round(studa,4), np.round(studb,4)}
     16 test.assert_equal(set1, set2)

Cell In[19], line 5, in logitReg(mittelwerte, haeufigkeiten)
      3 def logitReg(mittelwerte: np.array,haeufigkeiten: np.array) -> (float, float):
      4     # YOUR CODE HERE
----> 5     raise NotImplementedError()

NotImplementedError: 

Task 4.4

[5 Point(s)]

Logistische Regression - CHD d)

Implementieren Sie die Funktion sigmoid, die eine Liste von Logit-Werten wieder in Wahrscheinlichkeiten rücktransformiert.

In [21]:
Student's answer(Top)
1import numpy as np
2
3def sigmoid(logits: np.array) -> np.array:
4    # YOUR CODE HERE
5    raise NotImplementedError()
6    
7tmp = np.array([-2.19, -1.87, -1.09, -0.69, -0.15, 0.51, 1.17, 2.19])
8sigmoid(tmp)
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
Cell In[21], line 8
      5     raise NotImplementedError()
      7 tmp = np.array([-2.19, -1.87, -1.09, -0.69, -0.15, 0.51, 1.17, 2.19])
----> 8 sigmoid(tmp)

Cell In[21], line 5, in sigmoid(logits)
      3 def sigmoid(logits: np.array) -> np.array:
      4     # YOUR CODE HERE
----> 5     raise NotImplementedError()

NotImplementedError: 
In [22]:
Grade cell: test_08_Regressionsana_LogReg_Herzkrankheit_D0 Score: 0.0 / 5.0 (Top)
1# This test case is hidden #
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
Cell In[22], line 5
      2 y = np.array([0.1,0.4,0.5,0.6,0.7,0.9])
      3 ylogit = np.log(y/(1-y))
----> 5 sigStud = np.round(sigmoid(ylogit), 4)
      6 test.assert_equal(y, sigStud)
      7 ### END HIDDEN TESTS

Cell In[21], line 5, in sigmoid(logits)
      3 def sigmoid(logits: np.array) -> np.array:
      4     # YOUR CODE HERE
----> 5     raise NotImplementedError()

NotImplementedError: 

Task 4.5

[10 Point(s)]

Logistische Regression - CHD e)

Berechnen Sie zu den gegebenen Alters-Werten (xrange) die zugehörigen Wahrscheinlichkeitswerte mittels Ihrer logistischen Regression und speichern Sie diese in yvalues.

In [23]:
Student's answer(Top)
1xrange = np.linspace(chd.AGE.min()-5, chd.AGE.max()+5, 100)
2yvalues = None
3# YOUR CODE HERE
4raise NotImplementedError()
5yvalues
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
Cell In[23], line 4
      2 yvalues = None
      3 # YOUR CODE HERE
----> 4 raise NotImplementedError()
      5 yvalues

NotImplementedError: 
In [24]:
Grade cell: test_08_Regressionsana_LogReg_Herzkrankheit_E0 Score: 0.0 / 10.0 (Top)
1# This test case is hidden #
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
Cell In[24], line 2
      1 ### BEGIN HIDDEN TESTS
----> 2 a, b = logitReg(mw, ha)
      3 yvalues_ref = sigmoid(a*xrange + b)
      4 test.assert_equal(yvalues, yvalues_ref)

NameError: name 'mw' is not defined

Task 4.6

[3 Point(s)]

Logistische Regression - CHD f)

Erweitern Sie die Plot aus Teilaufgabe a) um die Sigmoid-Kurve.

In [25]:
Student's answer Score: 0.0 / 3.0 (Top)
1# YOUR CODE HERE
2raise NotImplementedError()
---------------------------------------------------------------------------
NotImplementedError                       Traceback (most recent call last)
Cell In[25], line 2
      1 # YOUR CODE HERE
----> 2 raise NotImplementedError()

NotImplementedError: 

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:

2024-01-15 00:45:34.484216 CET