Bilden ovan visar fem seriekopplade lampor. Kopplingen från A till B bryts om någon av lamporna slutar att fungera och vi antar dessutom att det finns ett krav på livslängden. Sannolikheten (felkvoten) att en enskild lampa går sönder före livlängdsgränsen är 1%.
Vad är sannolikheten att en seriekoppling med n enskilda lampor går sönder före gränsvärdet?



Beräkning - två enkla sätt

1. I princip är beräkningen enkel: först beräknas sannolikheten att alla lampor överlever förbi lovad livslängdsgräns. 1 minus detta resultat ger då den sökta sannolikheten dvs att kopplingen från A till B bryts, dvs någon lampa har fallerat.
Vi gör detta med kunskap om sannolikhetsberäkningar från högstadiet. Sannolikheten att en lampa överlever är 0.99. Sannolikheten att alla lampor överlever är då 0.99 * 0.99 * 0.99… = 0.9510. Då blir 1 - 0.9510 = 0.0490. Sannolikheten att en koppling inte överlever livslängdgränsen är alltså 4.9 %.

2. Vi kan också se det som ett stickprov om 5 enheter och där felkvoten är 0.01 och fråga ‘vad är sannolikheten att ett stickprovet innehåller 0 felaktiga?’.
Detta är en typisk fråga för den s.k. binomialfördelningen ((Se https://ovn.ing-stat.se [7]) och Bin(X=0, n=5, p=0.01) ger svaret 0.9510 att alla överlever. Alltså är risken 4.9% att någon lampa inte fungerar förbi gränsvärdet och detta är ju detsamma som att kopplingen inte överlever.


Bakgrund

Order statistics är då man studerar t.ex. minsta eller högsta värdet eller medianen i processer, datamängden är alltså sorterad. Naturligtvis beror min- och max-värdena på datamängdens storlek, ju större datamängd (stickprov) desto lägre respektive högre blir min- och max-värdena. (Formler för min och max finns på https://ovn.ing-stat.se [OE5].)
Min- och max-värden studeras i många sammanhang, t.ex. vid studier av väderfenomen såsom extrema vågor, stormar, nederbördsmängder, styrkan hos en kätting, etc.
I många planerade flöden är det viktigt att beställningar, leveranser m.m. kommer i tid speciellt om fortsatt arbete — t.ex. montering — kräver alla komponenter.
Men även i studier av tillförlitlighet är min-värdena viktiga då man har produkter eller installationer med många enskilda enheter.



En simulering

Nedan simuleras visar tre figurer som beskriver min-värdet hos produkter.


Figur 1. Här visas 50 livslängder hos enskilda lampor och gränsvärdet är 3.0 tidsenheter. Detta anges med en blå vertikal linje. De 50 värdena är ett stickprov från en sannolikhetsfördelning enligt figur 2.

Figur 2. En Weibullfördelning samt ett histogram som visar simulerade tidsdata. Gränsvärdet (kravet) är att en enskild lampa lyser länge är 3 tidsenheter. Sannolikheten att en lampa inte klarar gränsvardet är 0.0087. (Kan beräknas med R-kommandot pweibull(3, 2.5, 20))

Figur 3. Här visas en fördelning av minvärden av 40 lampor i seriekoppling. Fördelningens matematiska uttryck anges i https://ovn.ing-stat.se [OE5]. Teoretiskt mdelvärde och standardavvikelse beräknas då enklast med R-kommandot ‘integrate’. Sannolikheten att en koppling fallerar är 0.2943. (Kan beräknas med R-kommandot integrate(miniWeib, 0, 3) där ‘miniWeib’ är den i programmet härledda fördelningen, fmin).

library(patchwork)                     # Bibliotek för att placwera tre grafer.
library(ggplot2)                       # Bibliotek för grafisk presentation.

n1    <- 40                            # Antal seriekopplande produkter.
shape <- 2.5                           # Två Webullparametrar som anger livslängd
scale <- 20                            # hos enskilda produkter.
grans <- 3.0                           # Gränsvärde för 'garanti'.

n2 <- 50                               # Antal linjer i 'Figur 1' ('diagram1').
tid  <- rweibull(n2, shape, scale)
yaxel <- c(1:n2)
  
df <- data.frame(tid, yaxel) 
rubrik <- paste("Livslängd hos \n50 produkter,\ngränsvärde = 3.0")

Figur1 <- ggplot(df, aes(x=tid, y=yaxel)) + geom_point() + 
                   geom_segment(x=0, y=yaxel, xend=tid, yend=yaxel) + xlim(0, 45) + ylim(0, 52) +
                   geom_vline(xintercept = grans, color ='blue') + 
                   xlab("Fig 1: Livslängd hos 50 slumpmässigt valda produkter") + ylab("") +
  annotate("text", x = 35, y = Inf, label=rubrik, hjust=0, vjust = 1.5, size = 4.5, colour = "blue")
  
 
# --------------------------------------- Figur 1: ovan, Figur 2: nedan

n <- 500
tid <- rweibull(n, shape, scale)

ytatv <- round(pweibull(grans, shape, scale), 4)

data   <- data.frame(tid)

rubrik <- paste("Weibullfördelning, \nform = 2.5, skala = 20,\ngränsvärde = 3.0,\nyta t.v. = ", ytatv)
  
Wfunktion <- function(x){dweibull(x, shape, scale)}
  
Figur2 <- ggplot(data, aes(tid)) + geom_histogram(binwidth=1.5, color='black', alpha = 0.5, boundary = 0,
                                   fill = "yellow", aes(y = after_stat(density)), position = 'identity') +
         stat_function(fun=Wfunktion, geom="line", color='red', linewidth=1.0) +
         theme(legend.position = "none") + xlim(0, 45) +
         theme(axis.text.x  = element_text(size = 12), axis.text.y = element_blank(),  
                                                       axis.title.y = element_blank()) +
         annotate("text", x = 33, y = Inf, label=rubrik, hjust=0, vjust = 1.2, size = 4.5, colour = "blue" ) +
                xlab("Fig 2: Enskilda livslängder") + geom_vline(xintercept = grans, color ='blue')

  
# --------------------------------------- Figur 2: ovan, Figur 3: nedan
  
  library(ggplot2) 
  
  n <- 40
  
  minRes <- c()
  for (i in c(1:1000)) {minRes <- append(minRes, min(rweibull(n, shape, scale)))}
 
  k <- shape
  lam <- scale
  
  fx <- function(x) {k/lam * (x/lam)^(k-1) * exp(-(x/lam)^k)}
  Fx <- function(x) {(1 - exp(-(x/lam)^k))}
  
  miniWeib <- function(x) {n * fx(x) * (1-Fx(x))^(n-1)}

  my     <- function(x) {x * miniWeib(x)}              # Uttryck för väntevärde. 
  myMini <- integrate(my, 0, Inf)$value                # Beräkning av väntevärde.
  
  ytaMin <- round(integrate(miniWeib, 0, grans)$value, 4)
  
  ovregrans <- 10
  rubrik <- paste("Varje värde är\nmin av 40 värden,\ngränsvärde = 3.0,\nyta t.v. = ", ytaMin)
  
  data <- data.frame(minRes)
  
  Figur3 <- ggplot(data, aes(minRes)) + geom_histogram(binwidth=0.4, color='black', alpha = 0.5,
                 boundary = 0, fill = "yellow", aes(y = after_stat(density)), position = 'identity') +
                 xlim(0, ovregrans) + geom_function(fun = miniWeib, colour='red', linewidth=1.0) +
    theme(axis.text.x  = element_text(size = 12), axis.text.y = element_blank(),  
                                                  axis.title.y = element_blank()) +
  annotate("text", x = 7.5, y = Inf, label=rubrik, hjust=0, vjust = 1.3, size = 4.5, colour = "blue" ) +
             xlab("Fig 3: Minimum livslängd per 40 produkter") + geom_vline(xintercept = grans, color ='blue')

 Figur1

 Figur2

 Figur3



Avslutningsvis. Att studera min- eller max-värden kan göras på flera sätt. Det finns i allmänhet en livslängdsfördelning (f(x)) för produkten ifråga och tillsammans med motsvarande F(x) kan den önskade fördelningen (fmin) beräknas:
(Obs: om n = 1 blir fmin = f(x))


\[ \begin{align*} \Large f{min}=n\cdot f(x) \cdot(1-F(x))^{n-1} & \phantom{invisible} \end{align*} \]

(Se https://ovn.ing-stat.se [7] där f(x) är den vänstra figuren och F(x) den högra.)


För de vanligaste tidsmätningarna finns både f(x) och F(x) som enskilda uttryck så att fmin kan hanteras matematiskt.
En annan helt tillfredsställande metod är att simulera en stor mängd produkter (här lampkopplingen ovan) och från denna datamängd finna andelen som inte klarar gränsvärdet.
Simuleringar kan användas för att lättare visa för andra vad olika produktkvaliteter och olika krav kommer att ge. Detta är bra indata då man skall bedöma t.ex. kostnader för garantiärenden.

(Se https://ovn.ing-stat.se för många andra simuleringsövningar.)