Pearson Korrelation in if-Abfrage

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Knecht_Ruprecht
User
Beiträge: 6
Registriert: Dienstag 9. März 2021, 17:40

Guten Abend,

ich möchte gerne bei einer if-Abfrage prüfen, ob der Pearson Korrelationskoeffizient <= 0.5 ist.
Ich bekomme allerdings die folgende Fehlermeldung angezeigt: '<=' not supported between instances of 'CorrelationPearson' and 'float'

Wenn ich versuche den 'CorrelationPearson' zum 'float' zu casten wird folgendes angezeigt: float() argument must be a string or a number, not 'CorrelationPearson'

Kennt jemand eine Möglichkeit den 'CorrelationPearson' zu casten?

Herzlichen Dank!
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich kenne noch nicht mal ein CorrelationPearson. Du gehst davon aus, das jeder dieses spezielle Ding kennt. Dem ist so nicht. Damit man dir helfen kann, musst du ein bisschen weiter ausholen.
Knecht_Ruprecht
User
Beiträge: 6
Registriert: Dienstag 9. März 2021, 17:40

Der Pearson Krelationskoeffizient wird benutzt, um die Korrelation zweier Datensätze zu berechnen, wenn diese ein metrisches Skalenniveau haben, normalverteilt sind und ein linearer Zusammenhang besteht.

Dazu mal ein kleines Beispiel, bei dem die Korrelation der Stunden an Schlaf pro Nacht mit der subjektiv empfundenen Energie am Tag berechnet werden soll:

Code: Alles auswählen

from correlation_pearson.code import CorrelationPearson

sleep = [3, 4, 4, 7, 8, 8]
stress = [2, 3, 5, 6, 7, 8]

correlation = CorrelationPearson()
print(correlation.result(sleep, stress))
Das Ergebnis lautet in diesem Fall -0.8049163562408292. Diese Zahl ist als Datentyp 'CorrelationPearson' gespeichert.
Nun soll mein Programm im Rahmen einer if-Abfrage automatisch prüfen, ob die Korrelation <= 0.5 ist. Dabei ist das oben geschilderte Problem aufgetreten.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Woher kommt denn diese Bibliothek? Das ist die entscheidende Frage. Wenn man nicht nachlesen kann, wie dieses Objekt bzw. seine Klasse definiert ist, dann kann man auch nicht wissen, wie es sich verarbeiten lässt. Und dieses spezielle Modul finde ich nicht. Ich finde Dinge in scipy. Also woher kommt dieser Code? Und wenn das nicht öffentlich (Firma, Uni), dann musst du da nachfragen.
Benutzeravatar
kbr
User
Beiträge: 1508
Registriert: Mittwoch 15. Oktober 2008, 09:27

Wenn

Code: Alles auswählen

print(correlation.result(sleep, stress))
einen „numerischen“ String ausgibt, dann stehen die Chancen gut, dass Du mit

Code: Alles auswählen

float(str(correlation.result(sleep, stress)))
eine Konvertierung erreichen kannst.

Das ist natürlich durch die Brust ins Auge und ich kann mir vorstellen, dass in der zugehörigen Dokumentation ein besserer Weg gezeigt wird.
Knecht_Ruprecht
User
Beiträge: 6
Registriert: Dienstag 9. März 2021, 17:40

Vielen Dank für die Antworten. Der Trick von @kbr hat funktioniert! Ich werde trotzdem mal schauen, ob sich das eleganter lösen lässt!

LG
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

@kbr: wahrscheinlich reicht correlation.result(sleep, stress).
Benutzeravatar
kbr
User
Beiträge: 1508
Registriert: Mittwoch 15. Oktober 2008, 09:27

@Sirius3: wenn ich mir den Thread noch einmal durchlese: gut möglich.
Antworten