Hallo Bernhard,
ich habe jetzt ein bisschen für die Antwort gebraucht, weil ich erstmal über deine Erklärungen nachdenken musste und auch über's Bootstrapping noch ein paar Sachen angeschaut habe. Das ist wirklich eine interessante Methode, mit der man offensichtig so einiges machen kann.
Wenn man eine passende Verteilung annehmen kann, dann ist das eine wertvolle Information. Wenn man die falsche Verteilung annimmt, kann die falsche Information zu falschen Ergebnissen führen. "Verteilungsfrei" heißt, dass wir für die Berechnung keine der mit Eigennamen benannten Verteilungen annehmen. Damit können wir nicht von deren Vorteilen profitieren.
Okay, verstehe. Da war ich wohl gedanklich drüber gestolpert, weil in den Kursen die Beispiele immer so konstruiert waren, dass eine bestimmte Verteilung gepasst hat oder sie wurde halt vorgegeben. (Z. B. hieß es dann für eine Poisson-Verteilung: "Am Tag rufen im Durchschnitt 12 Personen bei der Hotline an." und dann konnte man losrechnen.)
Dann müssen wir jetzt klären, ob das eine Hausaufgabe für einen dieser Kurse ist oder eine Aufgabe im wirklichen Leben. Je nachdem, gehören dann Verteilungsannahme zur Aufgabenstellung, oder nicht.
Nein, mit den Kursen bin ich durch. Jetzt versuche ich, das Gelernte auf reale Beispiele aus meiner Praxis anzuwenden. Und natürlich auch noch Neues dazuzulernen
Wie lange darf denn so eine Maschine falsch laufen? Vielleicht bist Du bereit, das bis zu drei Tage lang zu akzeptieren und willst Deine Abbruchregel vom Durchschnittswert der letzten drei Tage abhängig machen? Das musst Du mit Deinem Wissen über die Anlage und die Bedeutung von Problemen mit der Taktung entscheiden. Der Bootstrapping-Ansatz bietet dazu irrsinnig viel Flexibilität.
Darüber habe ich mir jetzt einige Gedanken gemacht und bin im Kopf auch nochmal einen Schritt zurückgegangen zur Poisson-Verteilung. Ich hab mir überlegt, wie eine sinnvolle Abbruchregel aussehen könnte (bzw. in meinem Fall wäre es eine Warnregel) und wie ich das im Falle einer Poisson-Verteilung rechnen würde.
Dann hab ich versucht, das Ganze auf den verteilungsfreien Ansatz zu übertragen, bin aber noch nicht wirklich sicher, ob meine Ideen in die richtige Richtung gehen.
Hier mal mein Gedankengang:
----------------------------------------------------------------------------------
TEIL 1: Poisson-VerteilungNehmen wir an, ich wäre recht sicher, dass die Taktungen meiner Anlage einer Poisson-Verteilung folgen. Der Mittelwert der Taktungen pro Tag liegt bei 8. Das weiß ich, weil es in der Betriebsanleitung steht (hab ich mir jetzt ausgedacht...).
Meine Verteilung würde dann so aussehen:
- Code: Alles auswählen
x <- 0:20
barplot(dpois(x, lambda = 8), names.arg = x)
Das 90%-Quantil wäre hier z. B. 12, das 99%-Quantil wäre 15:
- Code: Alles auswählen
qpois(0.9, lambda = 8)
qpois(0.99, lambda = 8)
Damit könnte ich mir eine Regel erstellen für einen Grenzwert, ab dem ich gewarnt werden will.
Allerdings überlege ich mir jetzt, dass ich die Überprüfung eines einzelnen Tageswertes nicht so sinnvoll finde. Denn ein Fehler im Bauteil wäre für die Anlage jetzt erstmal nicht so kritisch, sie würde dadurch nur ineffizienter laufen. Ich würde nicht sofort bei einem einzelnen hohen Wert losspringen wollen, um das Bauteil auszutauschen, denn da könnte auch mal irgendwas anderes dahinterstecken.
Es wäre nur gut mitzubekommen, wenn sich allgemein der Trend der Taktzahlen pro Tag nach oben entwickeln würde, denn das würde für einen langsamen Verschleiß des Bauteils sprechen.
Ich überlege mir also eine andere Regel, z. B. erst eine Warnung zu erhalten, wenn mehrere aufeinanderfolgende Werte über einem bestimmten Grenzwert liegen.
Oder ich könnte die Mittelwerte über mehrere Betriebstage anschauen (rollierend) und überprüfen, ob der "wahre" Mittelwert wahrscheinlich noch bei 8 liegt.
Dabei hilft mir der zentrale Grenzwertsatz, weil die Mittelwerte aus mehreren Stichproben einer Normalverteilung folgen. Um eine robuste Schätzung mit ausreichend Stichproben zu ermöglichen, schaue ich mir jeweils die letzten 30 Betriebstage an.
Meine Normalverteilung der Stichprobenmittelwerte hätte also
und
.
- Code: Alles auswählen
y <- seq(3,13, by = 0.1)
plot(y, dnorm(y, mean = 8, sd = 1.46), type = "l")
Das 90%- bzw. 99%-Quantil für die Mittelwerte aus 30 Betriebstagen liegen dann bei 9,9 bzw. 11,4:
- Code: Alles auswählen
qnorm(0.95, mean = 8, sd = 1.46)
qnorm(0.99, mean = 8, sd = 1.46)
Ich könnte mir also entsprechend eine Warnung ausgeben lassen, wenn der rollierende Mittelwert den Grenzwert zum gewählten Konfidenzniveau übersteigt.
----------------------------------------------------------------------------------
TEIL 2: Verteilungsfreier AnsatzWenn ich davon ausgehe, dass die Poission-Verteilung
nicht auf mein Szenario passt, wie oben diskutiert, hilft mir die Bootstrapping-Methode, um trotzdem aus einer Stichprobe aus der fehlerfreien Betriebszeit Annahmen über die wahre Verteilung zu treffen.
Ich simuliere aus meiner Stichprobe 10.000 weitere mögliche Stichproben, wie oben von dir gezeigt:
- Code: Alles auswählen
beob <- c(rep(7,6), rep(8,43), rep(9, 12), 10, 11)
bs <- replicate(10000, sample(beob, replace = TRUE))
Daraus kann ich jeweils den Mittelwert berechnen und bekomme so einen guten Eindruck über die mögliche Verteilung der Stichprobenmittelwerte:
- Code: Alles auswählen
mittel <- apply(bs, 2, mean)
Hier bin ich jetzt darüber gestolpert, dass diese Mittelwerte nicht sehr normalverteilt aussehen, obwohl n mit 63 doch recht groß ist:
- Code: Alles auswählen
hist(mittel, breaks = 30)
Ich vermute, dass liegt daran, dass wir hier nicht wie beim zentralen Grenzwertsatz vorgegangen sind (viele Stichproben ohne Zurücklegen aus einer bekannten Grundgesamtheit ziehen), sondern unsere Stichproben ja mit Zurücklegen aus der Ausgangsstichprobe gezogen wurden. Ist also was anderes.
Jetzt bin ich allerdings unsicher, wie ich in diesem Fall meine Hypothesen
"Aktueller Mittelwert der Taktzahlen hat sich nicht verändert" vs.
"Aktueller Mittelwert der Taktzahlen ist inzwischen höher geworden" überprüfen kann.
Muss ich meinen aktuell gemessenen Mittelwert (z. B. wieder über die letzten 30 Tage) zu gewünschtem Konfidenzniveau nun einfach mit dem Grenzwert aus der oben berechneten Verteilung der Mittelwerte vergleichen? Bei α = 0,01 müsste der Grenzwert dann ja 8,29 sein bzw. bei α = 0,001 wäre er 8,38.
- Code: Alles auswählen
quantile(mittel, probs = 0.9)
quantile(mittel, probs = 0.99)
Oder muss ich über den zentralen Grenzwertsatz versuchen, wieder zu einer Normalverteilung zu kommen? Dazu bräuchte ich dann wieder μ und σ.
μ = 8,175 und σ = 0,685?
- Code: Alles auswählen
mean(beob)
sd(beob)
Oder μ = 8,174 und σ = 0,671?
- Code: Alles auswählen
mean(mittel)
stabweichung <- apply(bs, 2, sd)
mean(stabweichung)
Oder bin ich da ganz auf dem Holzweg?
Hier fehlt mir doch noch etwas das Verständnis, wie ich mit meinen "gebootstrappten" Daten weiterarbeiten kann, ohne totalen Unsinn zu rechnen.
Vom konkreten Fall her fände ich die Überprüfung des Mittelwerts über einen bestimmten Zeitraum auf jeden Fall am sinnvollsten, sinnvoller als einen Grenzwert für einen einzelnen Messwert.
Vielleicht kannst du mir noch einen Tipp geben, in welche Richtung ich da weitergehen sollte?
Vielen Dank im Voraus, allein schon für's Lesen,
Suti