Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Betinget sviktsannsynlighet

Authors
Affiliations
SINTEF Energi
SINTEF Energi
SINTEF Energi

Dersom man har en opprinnelig sannsynlighetsfordeling for en komponent fra idriftsettelsesåret og det har gått x år uten at svikt har inntruffet, vil sviktsannsynligheten nå se annerledes ut. I dette kapittelet ser vi nærmere på dette. MERK! : Betinget sannsynlighet som demonstrert her antar at ingen kunnskap om tilstand eksisterer. Den eneste informasjonen man har er at komponenten ikke har sviktet etter x år. Dette kan være relevant for komponenter hvor degradering ikke viser symptomer eller for komponenter hvor det ikke er lett å komme til for inspeksjon.

Formelen for betinget sannsynlighet er gitt av den aktuelle fordelinger ved (t + x) delt på den korresponderende overlevelsesfunksjonen ved x:

fbetinget(t)=f(t+x)R(x)f_{\rm{betinget}}(t)=\frac{f(t+x)}{R(x)}

Sviktintensitet er gitt av :

z(t)=f(t)R(t)z(t) = \frac{f(t)}{R(t)}
Source
# importer nødvendige python-moduler
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import weibull_min
from scipy.stats import gamma
import matplotlib as mpl
mpl.rcParams.update({
    "figure.facecolor": "none",
    "axes.facecolor": "none",
    "savefig.facecolor": "none",})

Betinget sviktsannsynlighet - weibullfordeling

Betinget sannsynlighet for en weibullfordeling er vist under. Her er komponenten 20 år og lever enda. Den oppdaterte/betingede sviktsannsynligheten har nødvendigvis høyere sannsynlighet for svikt i resten av levetiden.

Source
# Definer weibullfordeling
k = 4.5321
lam = 32.8605

# Regn ut betinget sannsynlighet ved år x og plot

t = np.arange(0,51,1)                 # vektor med år fra idriftsettelse
f = weibull_min.pdf(t,k, scale = lam) # sannsynlighetsfordeling
R = weibull_min.sf(t,k, scale = lam)  # overlevelsesfunksjon, R

t0 = 20                                          # antall år etter idriftsettelse 
f_betinget = np.zeros(len(t))
R_0 = weibull_min.sf(t0,k, scale = lam)          # overlevelsesfunksjon

for i in range(0,len(t)-t0):
    f_tx = weibull_min.pdf(i+t0,k, scale = lam)  # sannsynlighetsfordleling
    f_betinget[t0 + i] = f_tx/R_0   

# plot resultat 

f_b = np.zeros_like(t, dtype=float)
R0 = weibull_min.sf(t0, k, scale=lam)

for i in range(len(t) - t0):
    f_tx  = weibull_min.pdf(i + t0, k, scale=lam)
    f_b[t0 + i] = f_tx / R0

plt.figure(figsize=(5,4))
plt.plot(t,f/R,'r.-', label = 'z(t)')
plt.plot(t, f,  label='f(t) (opprinnelig)')
plt.plot(t, f_b, '--',label=f'f(t | x > {t0}) (betinget)')
plt.xlabel("Tid (år)",fontsize = 12)
plt.ylabel("f(t)",fontsize = 12)
plt.ylim([0,0.15])
plt.legend(fontsize = 12)
plt.show()
<Figure size 500x400 with 1 Axes>

Betinget sviktsannsynlighet - gammafordeling

Betinget sannsynlighet for en gammafordeling er vist under. Her er komponenten 30 år og lever enda.

Source
# Definer gammafordeling 
alpha = 13.11
beta = 2.29

tg = np.arange(0,51,1)                    # vektor med år fra idriftsettelse
fg = gamma.pdf(tg,a = alpha, scale = beta) # sannsynlighetsfordeling
Rg = gamma.sf(tg,a = alpha, scale = beta)  # overlevelsesfunksjon, R

# Regn ut betinget sannsynlighet ved år x og plot
t0g = 30                                               # antall år etter idriftsettelse 
f_betingetg = np.zeros(len(tg))
R_0g = gamma.sf(t0g,a = alpha, scale = beta)            # overlevelsesfunksjon

for i in range(0,len(tg)-t0g):
    f_txg =  gamma.pdf(i + t0g,a = alpha, scale = beta)  # sannsynlighetsfordleling
    f_betingetg[t0g + i] = f_txg/R_0g

# plot resultat
f_bg = np.zeros_like(tg, dtype=float)
R0g = gamma.sf(t0g, a = alpha, scale=beta)

for i in range(len(tg) - t0g):
    f_txg  = gamma.pdf(i + t0g, alpha, scale=beta)
    f_bg[t0g + i] = f_txg / R0g

plt.figure(figsize=(5,4))
plt.plot(tg,fg/Rg,'r.-', label = 'z(t)')
plt.plot(tg, fg,  label='f(t) (opprinnelig)')
plt.plot(tg, f_bg, '--',label=f'f(t | x > {t0g}) (betinget)')
plt.xlabel("Tid (år)",fontsize = 12)
plt.ylabel("f(t)",fontsize = 12)
plt.ylim([0,0.15])
plt.legend(fontsize = 12)
plt.show()
<Figure size 500x400 with 1 Axes>