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))
(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.)