Sie sind auf Seite 1von 4

---

title: "DRE - 1. Übung"


subtitle: "Probability Plotting und Parameterschätzung"
output: html_document
---

## Einleitung
Ein geeignetes Verfahren zur Identifizierung von potentiellen Modellkandidaten
und zur ersten Abschätzung von Modellparametern ist die Methode des
_Probability Plotting_, die zu den grafischen Anpassungstechniken _(GOF - Goodness
of Fit)_
zählt.

Hierbei werden Stichprobendaten in ein speziell konstruiertes


Wahrscheinlichkeitsnetz
eingetragen, sodass die dargestellten Punktepaare, bei guter Beschreibung
durch das angenommene Verteilungsmodell, annähernd auf eine Gerade fallen. Größere
Abweichungen in Streuung und Gestalt sprechen wiederum gegen das unterstellte
Modell.

Die Achsen sind in Anbetracht des theoretischen Verteilungsmodells so modifiziert,


dass die transformierte kumulative Wahrscheinlichkeit als lineare Funktion
_(Linearized CDF)_ des (transformierten) Merkmals angesehen werden kann.

Die Weibullverteilung lässt sich in ihrer zweiparametrigen Form durch die folgende
Verteilungsfunktion charakterisieren:
$$F(t)=1-exp\left[ -\left(\frac{t}{T}\right)^b\right]$$
Damit die Verteilungsfunktion im Wahrscheinlichkeitsnetz eine lineare Gestalt
annimmt,
müssen die nachstehenden Transformationen bzgl. der Achsen vorgenommen werden:

* Abszisse: $x = ln(t)$
* Ordinate: $y = ln\lbrack -ln(1-F(t))\rbrack$

Die Ordinate entspricht dabei genau den Quantilen der Kleinsten


Extremwertverteilung
_(SEV - Smallest Extreme Value)_ `?SPREDA::qsev`.
Die Linearisierung anderer Verteilungsmodelle können Sie in der Vorlesung 5
von [DQE](https://isis.tu-berlin.de/course/view.php?id=18733) nachvollziehen.

Um die Methode des _Probability Plotting_ anwenden zu können, benötigt man eine
Schätzung für die kumulative Verteilungsfunktion. In der Praxis hat sich der
nicht-parametrische Medianrang-Schätzer nach *Benard und Bos-Levenbach* etabliert:
$$\hat{F}(t_i)\approx \frac{i - 0,3}{n + 0,4} ,\\ i \in \lbrace 1, 2, ..., n\
rbrace.$$

## Einbinden/Installieren der benötigten R Packages


```{r, Packages laden, message = FALSE, warning = FALSE}
if (!require(weibulltools)) {
install.packages("weibulltools") # Installationsroutine
require(weibulltools) # Einbinden des Packages
}

if (!require(tidyverse)) {
install.packages("tidyverse") # Installationsroutine
require(tidyverse) # Einbinden des Packages
}
```
## Aufgabe 1 - Weibull-Wahrscheinlichkeitsnetz und Parameterschätzung
Gegeben sind 10 Ausfälle und die dazugehörende Laufleistung `t` (in km). Bestimmen
Sie die Ausfallwahrscheinlichkeiten mit dem nicht-parametrischen Medianrang-
Schätzverfahren.
Visualisieren Sie anschließend Ihr Ergebnis im Weibull-Wahrscheinlichkeitsnetz und
bestimmen Sie die Weibullparameter b und T.

Laufleistung: $\left\{28.000, 12.000, 67.000, 91.000, 54.000, 40.000, 110.000,


74.000, 88.000, 37.000\right\}$

### Probability Plot


```{r, Aufgabe 1 - Probability Plot, warning = FALSE}
# Erzeugen der Daten als Vektor t:
t <- c(28000, 12000, 67000, 91000, 54000, 40000, 110000, 74000, 88000, 37000)

# Anwenden des Medianrang-Schätzers, Approximationsformal nach "Benard":


mr_df <- mr_method(x = t, method = "benard")
mr_df

# Probability Plotting:
plot_points <- plot_prob(x = mr_df$characteristic, y = mr_df$prob, event =
mr_df$status,
distribution = "weibull", title_main = "Weibull - Wahrscheinlichkeitsnetz",
title_x = "Laufleistung in km", title_y = "Ausfallwahrscheinlichkeit in %",
title_trace = "Ausfälle")
plot_points

```

### Parameterschätzung - subjektive Bestimmung der Ausgleichsgeraden


```{r, Aufgabe 1 - subjektive Parameterschätzung, warning = FALSE}
# Subjektive Einzeichnung einer Weibullgeraden (per Hinsehen):
plot_cdf <- plot_pop(p_obj = plot_points, x = c(10000, 200000),
params = c(70000, 1.616862), distribution = "weibull", title_trace =
"Weibullgerade")
plot_cdf

# Zur Bestimmung der Parameter sucht man sich nun relevante Punkte auf der
Weibullgeraden:

# Abschätzung von T: Das 63,21% Quantil liegt bei ca. 70000, was T entspricht.
# Abschätzung von b: Steigungsbestimmung, bei p2 = 0,6321 ist t2 = T = 70000
# und bei p1 = 0,30 ist t1 = 37000.
T_1 <- 70000
b_1 <- (SPREDA::qsev(0.6321) - SPREDA::qsev(0.3)) / (log(T_1) - log(37000))

# Weibullparameter
c(T_1, b_1)
```

### Parameterschätzung - Medianrang-Regression


```{r, Aufgabe 1 - MRR, warning = FALSE}
# Anwendung der Medianrang-Regression, bei der log(t) durch die transformierten
# Ausfallwahrscheinlichkeiten geschätzt wird:
mr_reg <- rank_regression(x = mr_df$characteristic, y = mr_df$prob,
event = mr_df$status, distribution = "weibull")
mr_reg
mr_reg$coefficients
# Visualisierung der Ausgleichsgeraden mit geschätzten Parametern nach Medianrang-
Regression:
plot_mr_reg <- plot_mod(plot_points, x = mr_df$characteristic,
loc_sc_params = mr_reg$loc_sc_coefficients, distribution = "weibull",
title_trace = "MRR - Ausgleichsgerade")
plot_mr_reg
```

### Parameterschätzung - Maximum-Likelihood Methode


```{r, Aufgabe 1 - MLE, warning = FALSE}
# Anwendung der ML-Methode:
mle <- ml_estimation(x = mr_df$characteristic, event = mr_df$status,
distribution = "weibull")
mle
mle$coefficients

# Visualisierung der Ausgleichsgeraden mit geschätzten Parametern nach MLE:


plot_mle_reg <- plot_mod(plot_points, x = mr_df$characteristic,
loc_sc_params = mle$loc_sc_coefficients, distribution = "weibull",
title_trace = "MLE - Ausgleichsgerade")
plot_mle_reg
```

### Parameterschätzung - Vergleich der Geraden


```{r, Aufgabe 1 - Geradenvergleich, warning = FALSE}
# Visualisierung aller Geraden in einem Plot:
plot_all <- plot_cdf %>%
plot_pop(., x = c(10000, 200000), params = mr_reg$coefficients,
distribution = "weibull", title_trace = "MRR - Ausgleichsgerade",
color = I("blue")) %>%
plot_pop(., x = c(10000, 200000), params = mle$coefficients,
distribution = "weibull", title_trace = "MLE - Ausgleichsgerade",
color = I("green"))
plot_all
```

## Aufgabe 2 - Vergleich der Weibull- und Lognormalverteilung


Gegeben sind folgende Ausfälle aus einem Versuch mit zyklischer Belastung.
Bestimmen
Sie zuerst die _Plotting Positions_, tragen diese mit dem Lebensdauermerkmal ins
Weibull-Wahrscheinlichkeitsnetz ein und schätzen im Anschluss die Parameter.

Wiederholen Sie das Vorgehen für die Lognormalverteilung. Durch welches Modell
lassen
sich die Daten besser erklären?

Belastungszyklen: $\left\{130.000, 10.000, 280.000, 70.000, 40.000, 210.000,


160.000, 100.000, 30.000, 240.000, 180.000, 300.000\right\}$

### Probability Plot und Parameterschätzung - Weibullverteilung


```{r, Aufgabe 2 - Probability Plot Weibull, warning = FALSE}
# Erzeugen der Daten als Vektor cycle:
cycle <- c(130000, 10000, 280000, 70000, 40000, 210000, 160000, 100000, 30000,
240000,
180000, 300000)

# Wahrscheinlichkeitsschätzung:
mr_cycle <- mr_method(x = cycle, method = "benard")
mr_cycle

# Probability Plotting:
plot_points_weib <- plot_prob(x = mr_cycle$characteristic, y = mr_cycle$prob,
event = mr_cycle$status, distribution = "weibull",
title_main = "Weibull - Wahrscheinlichkeitsnetz",
title_x = "Lastzyklenanzahl", title_y = "Ausfallwahrscheinlichkeit in %",
title_trace = "Ausfälle")
plot_points_weib

# Parameterschätzung mit Medianrang-Regression:


mrr_weib <- rank_regression(x = mr_cycle$characteristic, y = mr_cycle$prob,
event = mr_cycle$status, distribution = "weibull")
mrr_weib

# Ausgleichsgerade zum Plot hinzufügen


plot_reg_weib <- plot_mod(plot_points_weib, x = mr_cycle$characteristic,
loc_sc_params = mrr_weib$loc_sc_coefficients, distribution = "weibull",
title_trace = "MRR - Ausgleichsgerade")
plot_reg_weib
```

### Probability Plot und Parameterschätzung - Lognormalverteilung


```{r, Aufgabe 2 - Probability Plot Lognormal, warning = FALSE}
# Probability Plotting:
plot_points_lognorm <- plot_prob(x = mr_cycle$characteristic, y = mr_cycle$prob,
event = mr_cycle$status, distribution = "lognormal",
title_main = "Lognormal - Wahrscheinlichkeitsnetz",
title_x = "Lastzyklenanzahl", title_y = "Ausfallwahrscheinlichkeit in %",
title_trace = "Ausfälle")
plot_points_lognorm

# Parameterschätzung mit Medianrang-Regression:


mrr_lognorm <- rank_regression(x = mr_cycle$characteristic, y = mr_cycle$prob,
event = mr_cycle$status, distribution = "lognormal")
mrr_lognorm

# Ausgleichsgerade zum Plot hinzufügen


plot_reg_lognorm <- plot_mod(plot_points_lognorm, x = mr_cycle$characteristic,
loc_sc_params = mrr_lognorm$loc_sc_coefficients, distribution = "lognormal",
title_trace = "MRR - Ausgleichsgerade")
plot_reg_lognorm
```

Das könnte Ihnen auch gefallen