Verständnis T-Test

Verständnis T-Test

Beitragvon Buecherwurm90 » Fr 12. Feb 2021, 16:46

Hallo zusammen,

ich arbeite mich gerade etwas in T-Tests ein. Und habe ein kleines Problem:

Ich habe mir einen Code geschrieben, der mir zwei normalverteilte, gleich große Datensätze mit derselben Streuung erzeugt. Diese beiden Datensätze verwende ich um den T-Test zu speisen. Der T-Test soll zweiseitig durchgeführt werden.

Im Folgenden findest Du meinen geschriebenen Code. Diesen habe ich öfters durchlaufen lassen und bekomme für jeden Durchlauf einen komplett anderen P-Wert (schwankt zwischen fast 0 und 1).

Ich hätte erwartet, dass der P-Wert mit einer geringen Schwankung auf einem sehr hohen Niveau (nahe 1) liegt, da beide Datensätze um den gleichen Mittelwert gebildet wurden und gleiche Streuung haben.
Ich habe ebenfalls die Größe der Datensätze um einige Potenzen nach oben korrigiert. Die Ergebnisse bleiben ähnlich.

Wo liegt mein Denkfehler?

Code: Alles auswählen
from scipy import stats

list_drift = []

dataset_size = 1000

#Generierung eines Datensatzes mit 1000 Werten; normalverteilt um 5 mit Standardabweichung 0.5
dataset_1 = stats.norm.rvs(loc=5,scale=0.5,size=dataset_size)

#Generierung eines Datensatzes mit 1000 Werten; normalverteilt um 5 mit Standardabweichung 0.5
dataset_2 = stats.norm.rvs(loc=5,scale=0.5,size=dataset_size)
   
result_t_test = stats.ttest_ind(dataset_1,dataset_2)

print(result_t_test[1])



Vielen Dank!
Buecherwurm90
Beobachter
Beobachter
 
Beiträge: 10
Registriert: Fr 12. Feb 2021, 16:24
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Verständnis T-Test

Beitragvon bele » Fr 12. Feb 2021, 17:22

Das ist ein häufiges Missverständnis über den p-Wert. Wenn die Nullhypothese gilt (wie bei Dir) ist der p-Wert eine gleichverteilte Zufallszahl. Da bist Du wirklich nicht allein mit dieser Falschannahme!
Such mal auf Youtube den Dance of the p values.

LG,
Bernhard
----
`Oh, you can't help that,' said the Cat: `we're all mad here. I'm mad. You're mad.'
`How do you know I'm mad?' said Alice.
`You must be,' said the Cat, `or you wouldn't have come here.'
(Lewis Carol, Alice in Wonderland)
bele
Schlaflos in Seattle
Schlaflos in Seattle
 
Beiträge: 5748
Registriert: Do 2. Jun 2011, 23:16
Danke gegeben: 15
Danke bekommen: 1343 mal in 1330 Posts

Re: Verständnis T-Test

Beitragvon Buecherwurm90 » Fr 12. Feb 2021, 18:04

ok super! Vielen lieben Dank schon einmal, hätte ich da nur schon vor vorgestern gefunden - ich habe die letzten zwei Tage schon an mir selbst gezweifelt.

Hast Du einen Tipp für mich welches statistische Mittel ich anwenden kann um meine Messdaten zu analysieren? Ich muss erkennen wenn sich die Messdaten statistisch signifikant verändert haben.
Hier dann mit Konfidenzintervallen arbeiten?

Vielen Dank!
Buecherwurm90
Beobachter
Beobachter
 
Beiträge: 10
Registriert: Fr 12. Feb 2021, 16:24
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Verständnis T-Test

Beitragvon Buecherwurm90 » Fr 12. Feb 2021, 20:48

Jetzt habe ich doch nochmal eine Frage. Aktuell bin ich verwirrter als vorher..
Folgendes Zitat habe ich einer Webseite entnommen, die den T-Test erklärt:

Zweistichproben-t-Test
Wenn du testen möchtest, ob sich die Mittelwerte zweier Stichproben voneinander unterscheiden, verwendest du den Zweistichproben-t-Test.


Genau dies möchte ich ja tun. Weshalb funktioniert es denn nicht mit dem P-Wert? Liegt es an der Interpretation oder muss ich anders vorgehen?

Vielen Dank!!
Buecherwurm90
Beobachter
Beobachter
 
Beiträge: 10
Registriert: Fr 12. Feb 2021, 16:24
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Verständnis T-Test

Beitragvon bele » Fr 12. Feb 2021, 23:02

Hallo Buecherwurm,

es geht in der Statistik um Wahrscheinlichkeiten. Wenn beide Stichproben aus Grundgesamtheiten mit gleichem Mittelwert gezogen werden, dann ist der p-Wert gleichverteilt, d. h. alle Werte zwischen 0 und 1 haben die gleiche Wahrscheinlichkeit/Wahrscheinlichkeitsdichte.
Deshalb hast Du in Deinem Versuch beobachtet, dass der p-Wert bei tatsächlich gleichen Mittelwerten alle nur denkbaren Werte annehmen kann. Mach auch mal den Gegenversuch: Setze mal den wahren Mittelwert von dataset_2 auf 4,5, während der von dataset_1 auf 5 bleibt:
Code: Alles auswählen
dataset_2 = stats.norm.rvs(loc=4.5, scale=0.5, size=dataset_size)


Wenn Du jetzt ganz viele p-Werte berechnest wirst Du feststellen, dass die alle sehr klein sind. Richtig?

Sind die Mittelwerte unterschiedlich, dann verschiebt sich die Wahrscheinlichkeit(sdichte) der p-Werte zu niedrigen Werten. Insofern sind niedrige p-Werte ein Hinweis darauf, dass die Nullhypothese (beide Mittelwerte gleich) weniger glaubhaft erscheint als die Ungleichheitshypothese. Wenn man nun die Regel aufstellt: "Bei p-Werten von 0,05 und weniger halte ich die Nullhypothese für falsch", dann wird man sich mit einer (ungewissen) Restwahrscheinlichkeit irren, aber das muss man in gewissen Situationen inkauf nehmen.

Wenn jetzt 38 Universitäten die Medizin anbieten im Durchschnitt 2 Doktoranden auf die Frage ansetzen, ob Homöopathie wirksam ist, dann führen die 76 Doktorarbeiten zur Frage der Wirksamkeit von Homöopathie aus. Wenn die Homöopathie so unwirksam ist, wie die bisherigen Daten das nahelegen, dann werden 76/20 = 3,8 von diesen Arbeiten dennoch eine statistische Signifikanz (auf 5%-Niveau) als Wirksamkeitsbeweis ins Feld führen! (Natürlich sind es mehr als 5% weil es dann noch Methodenmängel, fehlerhafte Verblindung, Wissenschaftsbetrug und kreative Statistik gibt, aber das ist nicht das Thema in diesem Thread.)

Denk in Ruhe drüber nach, und wenn Du Fragen dazu hast, kannst Du die gerne hier posten.

Vorschläge für Deine konkrete Arbeit kann man erst geben, wenn Du genauer beschrieben hast, worum es da geht. Aber wenn Du wirklich n = 1000 Beobachtungen hast, könntest Du mindestens beim t-Test die Grenze für den p-Wert niedriger ansetzen als die klassischen 0,05.

LG,
Bernhard
----
`Oh, you can't help that,' said the Cat: `we're all mad here. I'm mad. You're mad.'
`How do you know I'm mad?' said Alice.
`You must be,' said the Cat, `or you wouldn't have come here.'
(Lewis Carol, Alice in Wonderland)
bele
Schlaflos in Seattle
Schlaflos in Seattle
 
Beiträge: 5748
Registriert: Do 2. Jun 2011, 23:16
Danke gegeben: 15
Danke bekommen: 1343 mal in 1330 Posts

Re: Verständnis T-Test

Beitragvon Buecherwurm90 » Sa 13. Feb 2021, 14:15

Hallo Bele,

zunächst vielen lieben Dank für Deinen letzten Beitrag! Ich werde mir später gleich nochmal mehrere Datensätze generieren und die p-Werte analysieren.

Folgend findest Du eine Beschreibung meines Sachverhalts sowie meiner aktuellen Vorgehensweise:

Zunächst möchte ich den Aufbau der Daten schildern:

Referenzdatensatz :

________ Spalte1: ____ Spalte2: ____ Spalte3: ___ ... _____ Spalte j :
Zeile 1: ____ 5 __________ 10 _______ 40 _______ ... _______ 20

Der Referenz-Datensatz besteht aus einer einzigen Zeile mit j Spalten; jeder Zellenwert ist der gebildete Mittelwert (über jede Spalte) aus einer großen Anzahl an durchgeführten i.O. Messungen.

Vergleichsmessungen:

________ Spalte1: ____ Spalte2: ___ Spalte3: ___ ... _____ Spalte j:
Zeile 1:____ 5,4_______ 10,3 _______ 43 _______ ... _______ 26
Zeile 2: ____ 4,7 _______10,7 ______ 38 _______ ... _______ 22
Zeile 3: ____ 5,7 _______ 13 _______ 45 _______ ... _______ 23
Zeile 4: ____ 4,5 _______ 12 _______ 41 _______ ... ______ 21,5
Zeile 30 ____4,6 _______11,7_______ 44_______ ... _______ 22,3
...
Zeile n-70: __10 _______ 20 _______ 55 _______ ... _______ 35
Zeile n-69: __12 _______ 22 _______ 60 _______ ... _______ 40
...
Zeile n: ____ 13 _______ 23 _______ 62 _______ ... _______ 44

Ich möchte die Vergleichsmessungen hinsichtlich statistisch signifikanten Veränderungen untersuchen und diese - falls gegeben - erkennen.
Der Vergleichsdatensatz ist so aufgebaut, dass jede Zeile einer Messung entspricht. Die Messwerte einer Vergleichsmessung streuen je Spalte im i.O. Zustand um den Mittelwert der entsprechenden Spalte aus dem Referenzdatensatz. Bei idealen Messungen sollten die Werte im i.O. Zustand immer gleich sein und den Mittelwerten der Referenzdaten entsprechen.
Ab Zeile n-5 wurden durch veränderte äußere Einflüsse Messergebnisse mit einer größeren Abweichung zum Mittelwert der Referenzdaten aufgenommen. Die Höhe der Änderung ist in Abhängigkeit der veränderten Einflüsse (z.B. Umgebungstemperatur).
*Alle hier genannten Werte sind beispielhaft genannt, stellen aber den zugrundeliegenden Zusammenhang dar.

Zur Auswertung bin ich wie folgt vorgegangen:
Mittels Referenzzeile und der ersten Vergleichsmessung führe ich eine lineare Regression durch. Dies mache ich mit allen Vergleichsmessungen und der Referenzzeile.
Sollte die Referenzmessung == Vergleichsmessung sein, ergibt der Koeffizient der linearen Regression 1, da die Vergleichsdaten == der Referenzdaten sind (somit eine Winkelhalbierende). Der Koeffizient der linearen Regression entspricht der Steigung und gibt mir einen Anhaltspunkt bezüglich der Korrelation der Daten. Nachdem die Koeffizienten der linearen Regression berechnet wurden, werden diese in einer Liste abgespeichert.

Um nun statistisch relevante Veränderungen zu erkennen (Ziel ist es die Veränderung der Messwerte ab Zeile n-5 zu detektieren), dachte ich hier an einen zweiseitigen T-Test den ich mit der Liste der berechneten Steigungen aus der lin. Regression füttere. Die Liste der Steigungen teile ich so auf, dass z.B. die ersten 30 Werte, ohne Veränderungen im Vergleichsdatensatz, meine Referenz im T-Test bilden. Die Zweite Datenhälfte muss ja gleich groß sein, daher nehme ich ebenfalls 30 an, jedoch entspricht 60 nicht dem kompletten Messumfang - welcher wie oben dargestellt 100 beträgt. Um alle Messungen untersuchen zu können, bilde ich daher die Vergleichshälfte im T-Test fließend:

Code: Alles auswählen
gradient_list = ["Werte mit den berechneten Werten der Steigung"]
testumfang = 100

for i in range(1, testumfang - 30):
      driftcheck = scipy.stats.ttest_ind(gradient_list[:29], [i:30+i])


Mit dem T-Test stoße ich hier jedoch wieder auf dasselbe Problem wie in meinem Ursprungsbeitrag. Dadurch, dass der P-Wert so sehr schwankt, konnte ich ihn bisher nicht für eine verlässliche Auswertung verwenden.

Hast Du eine Idee für mich? Wie kann ich hier vorgehen, damit ich die relevanten Veränderungen im Datensatz zuverlässig erkennen kann?

Viele Grüße!

Der Bücherwurm

PS: Ich hoffe bei Dir ist heute auch so wunderschönes Wetter :)
Buecherwurm90
Beobachter
Beobachter
 
Beiträge: 10
Registriert: Fr 12. Feb 2021, 16:24
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Verständnis T-Test

Beitragvon Buecherwurm90 » Sa 13. Feb 2021, 18:51

Hallo Bele,

Nachtrag zu Deinem letzten Beitrag:

ich habe mir nun einen Versuch mit 1000 Wiederholungen durchgeführt.

1) Einmal habe ich 1000 Wiederholungen durchgeführt bei dem beide Stichproben aus Grundgesamtheiten mit gleichem Mittelwert gezogen wurden. Hier kann ich, wie von dir beschrieben erkennen, dass der p-Wert alle erdenklichen Werte von 0 und 1 annimmt.

2) Als Zweites habe ich 1000 Wiederholungen durchgeführt bei dem Stichprobe 1 den Mittelwert 5 hat und Stichprobe 2 (wie von Dir vorgeschlagen) den Mittelwert 4.5

Code: Alles auswählen
from scipy import stats

list_drift = []
dataset_size = 50

for i in range(0, 1000):
    dataset_1 = stats.norm.rvs(loc=5,scale=0.5,size=dataset_size)
    dataset_2 = stats.norm.rvs(loc=4.5,scale=0.5,size=dataset_size)
    result_t_test = stats.ttest_ind(dataset_1,dataset_2)
    list_drift.append(result_t_test[1])


Folgende Ergebnisse habe ich bei dem zweiten Durchlauf erhalten:
max. p-Wert: 0.18130534782314822
min. p-Wert: 7.37108220351386e-15
Mittelwert: 0.0006159480535803442
Standardabweichung: 0.006498920468713725

Mir ist es ein Rätsel wie ich signifikante Veränderungen in einem Datensatz mittels t-Test erkennen kann, wenn der p-Wert bei gleichen Mittelwerten die gleiche Wahrscheinlichkeit hat, Werte zwischen fast 0 und 1 anzunehmen.

Kann ich den t-Test nur anwenden, wenn ich vorher eine Untersuchung der Mittelwerte durchgeführt habe und hier eine Abweichung festgestellt habe? Ich stehe hier gerade wirklich auf dem Schlauch

Bin für jede Hilfe dankbar!

Wünsche Euch allen noch einen schönen Samstag Abend!

Viele Grüße
Bücherwurm
Buecherwurm90
Beobachter
Beobachter
 
Beiträge: 10
Registriert: Fr 12. Feb 2021, 16:24
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Verständnis T-Test

Beitragvon Buecherwurm90 » So 14. Feb 2021, 21:17

Vereinfachte Darstellung des Sachverhalts: Ich möchte den Zeitpunkt erkennen, wann sich ein Datensatz statistisch signifikant von einem bekannten Mittelwert entfernt.

Angenommen ich habe einen Array mit folgenden Werten:
Code: Alles auswählen

#____________ 1____ 2_______3_____4_____5____...___30___...___50_____51___52__ ..._100___________### Index Listeneinträge
data_list = [0.5, 0.501, 0.499, 0.51, 0.511, ... , 0.5, ...  0.7,  0.72, 0.8, ...  0.92]



Ich möchte erkennen, ab wann sich der Wert in der Datenliste statistisch signifikant vom Mittelwert 0.5 verändert hat. Kann mir hier jemand weiterhelfen welches statistische Verfahren hier am besten geeignet ist?

Vielen Dank =)

Grüße
Der Bücherwurm
Buecherwurm90
Beobachter
Beobachter
 
Beiträge: 10
Registriert: Fr 12. Feb 2021, 16:24
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post


Zurück zu t-Test

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste