Introduction a l’ evaluation des incertitudes : Travaux...

45
Introduction ` a l’´ evaluation des incertitudes : Travaux pratiques P. Pernot Laboratoire de Chimie Physique, Groupe Th´ eoSim UMR8000 CNRS - Universit´ e Paris-Sud at. 349, 3` eme ´ etage, Bureau 06 [email protected] March 29, 2013 P. Pernot () Evaluation des Incertitudes March 29, 2013 1 / 45

Transcript of Introduction a l’ evaluation des incertitudes : Travaux...

Introduction a l’evaluation des incertitudes :Travaux pratiques

P. PernotLaboratoire de Chimie Physique, Groupe TheoSim

UMR8000 CNRS - Universite Paris-SudBat. 349, 3eme etage, Bureau [email protected]

March 29, 2013

P. Pernot () Evaluation des Incertitudes March 29, 2013 1 / 45

Les logiciels

Logiciel Dedie ? Systeme requis Prix (¿)

R Non - 0

Matlab Non - $$$

NPLUnc Oui Windows, Matlab-MCR 0

QMSys Uncertainty Workshop Oui Windows 890

GUM Workbench 2.4 Oui Windows 2700

Crystal Ball Oui Windows + Excel 700/300

MUSE Oui Windows, Linux / Java 0

P. Pernot () Evaluation des Incertitudes March 29, 2013 2 / 45

Quelques references sur les logiciels

J.M. Jurado, A. Alcazar (2005). A software package comparison foruncertainty measurement estimation according to GUM. Accredit. Qual.Assur. 10:373–381.doi:10.1007/s00769-005-0005-8

A.G. Gonzalez, M.A. Herrador and A.G. Asuero (2005). Uncertaintyevaluation from Monte-Carlo simulations by using Crystal-Ball softwareAccredit. Qual. Assur. 10:149-154.doi:10.1007/s00769-004-0896-9

M. Solaguren-Beascoa Fernandez, J.M. Alegre Calderon and P.M. Bravo Dıez(2009). Implementation in MATLAB of the adaptive Monte Carlo method forthe evaluation of measurement uncertainties. Accredit. Qual. Assur.14:95-106.doi:10.1007/s00769-008-0475-6

P. Pernot () Evaluation des Incertitudes March 29, 2013 3 / 45

Quelques references sur les logiciels

M.G. Almiron, B. Lopes, A.L.C. Oliveira, A.C. Medeiros, A.C. Frery (2010).On the Numerical Accuracy of Spreadsheets. Journal of Statistical Software34(4).http://www.jstatsoft.org/v34/i04

M.G. Cox, P.M. Harris (2006) Software specifications for uncertaintyevaluation. NPL Reports DEM-ES-010http://resource.npl.co.uk/docs/science_technology/scientific_computing/ssfm/documents/dem-es_010.pdf

M.G. Cox, P.M. Harris, I.M. Smith (2008). Software for GUM supplement 1:user manual. NPL Reports, MS 1, January.http://www.eurometros.org/file_download.php?file_key=257

M. Muller, M. Wolf, M. Rosslein (2008). MUSE: computational aspects of aGUM supplement 1 implementation. Metrologia 45:586-594.http://dx.doi.org/10.1088/0026-1394/45/5/013

P. Pernot () Evaluation des Incertitudes March 29, 2013 4 / 45

Prise en main de R

# On genere un vecteur de donnees par la fonction de

# concatenation

Y <- c(1.82, 0.501, 0.04, -0.204, 0.056, -0.809, 0.946, 1.336, -0.055,

-0.639)

plot(Y) # visualiser les valeurs

mean(Y) # moyenne

## [1] 0.2992

hist(Y) # tracer un histogramme

plot(ecdf(Y))

2 4 6 8 10

-0.5

0.0

0.5

1.0

1.5

Index

Y

Histogram of Y

Y

Fre

quen

cy

-1.0 -0.5 0.0 0.5 1.0 1.5 2.0

0.0

0.5

1.0

1.5

2.0

-1.0 -0.5 0.0 0.5 1.0 1.5 2.0

0.0

0.2

0.4

0.6

0.8

1.0

ecdf(Y)

x

Fn(x

)

P. Pernot () Evaluation des Incertitudes March 29, 2013 5 / 45

Application: un peu de balistique

La portee sur terrain plat d’un projectile lance a une vitesse v selon un angle ϑ parrapport a l’horizontale est donnee par la formule d = v2 sin(2ϑ)/g , ou g estl’acceleration de la pesanteur.

On veut predire la portee d’un projectile et l’incertitude associee a l’aide dediverses informations sur les parametres du tir:

1 la vitesse du projectile est de 100 km/h, avec une incertitude relative de 1 %,supposee liee a la variabilite de la masse du projectile et de la charge depropulsant ;

2 on vise selon un angle de 45 degres a l’aide d’un clinometre gradue, quipermet la lecture au degre pres ;

3 on estime g = 9.81 m/s2, avec une incertitude relative de 1 %, liee a notremeconnaissance de sa valeur locale sur la zone de tir.

P. Pernot () Evaluation des Incertitudes March 29, 2013 6 / 45

Un peu de balistique...

Etape 1: definition des valeurs moyennes et des incertitudes type

# vecteur de noms de variables pour le calcul symbolique et

# l'affichage

par.names <- c("v", "t", "g")

# Valeurs moyennes + conversions d'unites

v <- 100 * 1000/3600 # m/s

t <- 45 * (pi/180) # radian

g <- 9.81 # m/s^2

par.mu <- c(v, t, g)

# Incertitudes type

v.u <- 0.01 * v

t.de <- 0.5 * (pi/180) # demie-etendue en radian

t.u <- t.de/3^0.5 # distribution rectangulaire

g.u <- 0.01 * g

par.u <- c(v.u, t.u, g.u)

P. Pernot () Evaluation des Incertitudes March 29, 2013 7 / 45

Un peu de balistique...

Etape 2: option 1: calcul symbolique des coefficients de sensibilite

# Expression analytique du modele

fExpr <- expression(v^2 * sin(2 * t)/g)

# Derivation symbolique

df <- eval(deriv(fExpr, par.names))

d <- df[[1]] # ou bien: d <- eval(fExpr)

(j <- attr(df, "gradient"))

## v t g

## [1,] 5.663 9.632e-15 -8.018

# Combinaison des variances

(j2u2 <- j^2 * par.u^2) # Multiplication terme a terme

## v t g

## [1,] 2.475 2.355e-33 0.6187

P. Pernot () Evaluation des Incertitudes March 29, 2013 8 / 45

Un peu de balistique...

Etape 2: option 2: calcul numerique des coefficients de sensibilite

# Derivation numerique

suppressPackageStartupMessages(require("numDeriv"))

# On utilise maintenant une fonction

fFunc <- function(x) x[1]^2 * sin(2 * x[2])/x[3]

y <- fFunc(par.mu)

(j <- grad(fFunc, par.mu))

## [1] 5.663 0.000 -8.018

# Combinaison des variances

(j2u2 <- j^2 * par.u^2)

## [1] 2.4746 0.0000 0.6187

P. Pernot () Evaluation des Incertitudes March 29, 2013 9 / 45

Un peu de balistique...

Etape 3: budget des incertitudes

# Budget des incertitudes - on fait un joli tableau a l'aide d'un

# data.frame

(budget <- data.frame(Params = c(par.names, "d"), X.mu = sprintf("%.3e",

c(par.mu, d)), X.u = sprintf("%.2e", c(par.u, sqrt(sum(j2u2)))),

J = c(sprintf("%.2e", j), ""), J2.U2 = sprintf("%.2e", c(j2u2,

sum(j2u2))), Anova = c(sprintf("%.2f", j2u2/sum(j2u2)), "")))

## Params X.mu X.u J J2.U2 Anova

## 1 v 2.778e+01 2.78e-01 5.66e+00 2.47e+00 0.80

## 2 t 7.854e-01 5.04e-03 0.00e+00 0.00e+00 0.00

## 3 g 9.810e+00 9.81e-02 -8.02e+00 6.19e-01 0.20

## 4 d 7.865e+01 1.76e+00 3.09e+00

P. Pernot () Evaluation des Incertitudes March 29, 2013 10 / 45

Un peu de balistique...

On peut aussi sortir des tableaux pour TEX...

print(xtable(budget), include.rownames = FALSE, hline.after = c(-1,0, 3, 4))

Params X.mu X.u J J2.U2 Anovav 2.778e+01 2.78e-01 5.66e+00 2.47e+00 0.80t 7.854e-01 5.04e-03 0.00e+00 0.00e+00 0.00g 9.810e+00 9.81e-02 -8.02e+00 6.19e-01 0.20d 7.865e+01 1.76e+00 3.09e+00

P. Pernot () Evaluation des Incertitudes March 29, 2013 11 / 45

Un peu de balistique...

Fonction generique: Gummer

gummer <- function(f, x.mu, x.u, r = diag(length(x.u))) {

require("numDeriv")

j <- grad(f, x.mu) # Numerical gradient

y.mu <- f(x.mu) # Function value

V <- outer(x.u, x.u, "*") * r # Variance/covariance matrix

y.u <- (t(j) %*% V %*% j)^0.5

# Anova

anova <- c()

ind <- 1:length(x.u)

for (i in ind) {

nuls <- expand.grid(ind[-i], ind[-i])

Vt <- V

for (k in 1:nrow(nuls)) Vt[nuls[k, 1], nuls[k, 2]] <- 0

anova[i] <- (t(j) %*% Vt %*% j)/y.u^2

}

return(list(y.mu = y.mu, y.u = y.u, anova = anova))

}

P. Pernot () Evaluation des Incertitudes March 29, 2013 12 / 45

Un peu de balistique...

Execution !

(gummer(f = fFunc, x.mu = par.mu, x.u = par.u))

## $y.mu

## [1] 78.65

##

## $y.u

## [,1]

## [1,] 1.759

##

## $anova

## [1] 0.8 0.0 0.2

P. Pernot () Evaluation des Incertitudes March 29, 2013 13 / 45

Un peu de balistique...

Voyons comment l’analyse des variances varie avec t

# Influence de l'angle

tab <- matrix(ncol = 4)

colnames(tab) <- c("t", "l.V", "t.V", "g.V")

for (t1 in seq(5, 85, by = 5)) {

par.mu[2] <- t1 * pi/180

tab <- rbind(tab, c(t1, gummer(f = fFunc, x.mu = par.mu, x.u = par.u)$anova))

}

print(tab[1:5, ])

## t l.V t.V g.V

## [1,] NA NA NA NA

## [2,] 5 0.1062 0.8672 0.02655

## [3,] 10 0.3158 0.6052 0.07896

## [4,] 15 0.4971 0.3786 0.12428

## [5,] 20 0.6209 0.2239 0.15523

P. Pernot () Evaluation des Incertitudes March 29, 2013 14 / 45

Un peu de balistique...

Le graphique

matplot(tab[, 1], tab[, 2:4], type = "l", xlab = "t", ylab = "ANOVA",

lwd = 2)

legend("topleft", colnames(tab)[2:4], lty = 1:3, col = 1:3, lwd = 2)

20 40 60 80

0.0

0.2

0.4

0.6

0.8

t

AN

OVA

l.V

t.V

g.V

P. Pernot () Evaluation des Incertitudes March 29, 2013 15 / 45

A vous de jouer

Choisissez un exemple du GUM-Supp1 (ou un exemple perso)et appliquez...

1 9.3 (p.39) : Mass calibration

2 9.4 (p.42) : Microwave Power Meter calibration

Rq. Vous comparerez ces resultats avec l’approche Monte Carlo

P. Pernot () Evaluation des Incertitudes March 29, 2013 16 / 45

Generer des series de nombres aleatoires de densiteprescrite

Le generateur de nombres aleatoires de distribution U(0, 1) par defaut de R estaffiche par la commande

RNGkind()

## [1] "Mersenne-Twister" "Inversion"

La graine est toujours la meme au lancement de R. Si vous voulez des resultatsindependants entre deux sessions, il faut penser a la changer... En tous cas, il estessentiel de la connaıtre pour assurer la reproductibilite des calculs.

set.seed(32345)

P. Pernot () Evaluation des Incertitudes March 29, 2013 17 / 45

Distribution uniforme

nX <- 1000

x1 <- runif(nX, min = 0, max = 1)

(x.mu <- mean(x1)) # (min+max)/2 =0.5

## [1] 0.4871

(x.u <- sd(x1)) # (max-min)/(2*3^0.5)=0.288675...

## [1] 0.2908

x.u/nX^0.5 # incertitude sur la valeur moyenne

## [1] 0.009195

summary(x1)

## Min. 1st Qu. Median Mean 3rd Qu. Max.

## 0.0009 0.2250 0.4850 0.4870 0.7400 0.9980

P. Pernot () Evaluation des Incertitudes March 29, 2013 18 / 45

Distribution uniforme

# Calcul de la pdf sur une grille de points

x <- seq(from = x.mu - 3 * x.u, to = x.mu + 3 * x.u, by = x.u/500)

pdf <- dunif(x)

myPlot(x1, x, pdf)

0 200 400 600 800 1000

0.0

0.4

0.8

Sequence

indice

Var

iable

0.0 0.5 1.0

0.0

0.4

0.8

x

pdf

0 2 4 6 8 10

0.0

0.4

0.8

Lag

ACF

Autocorrelation

0.0 0.2 0.4 0.6 0.8 1.0

0.0

0.4

0.8

ecdf(x1)

x

Fn(x

)

P. Pernot () Evaluation des Incertitudes March 29, 2013 19 / 45

Code de “myPlot”

myPlot

## function (x1, x, pdf)

## {

## nX = length(x1)

## dummy = split.screen(c(2, 2))

## screen(1)

## plot(x1, type = "p", cex = 0.1, col = "blue", xlab = "indice",

## ylab = "Variable", main = "Sequence")

## screen(2)

## plot(x, pdf, type = "n", ylim = c(0, 1.1 * max(pdf)))

## hist(x1, main = "Histogramme", freq = F, add = TRUE, col = "cyan")

## lines(x, pdf, col = "red")

## screen(3)

## ac = acf(x1, plot = F)

## plot(ac[0:10], main = "Autocorrelation", col = "blue")

## screen(4)

## plot(ecdf(x1))

## dummy = close.screen(all = TRUE)

## }

P. Pernot () Evaluation des Incertitudes March 29, 2013 20 / 45

Distribution normale

nX <- 1000

x1 <- rnorm(nX, mean = 1, sd = 2)

(x.mu <- mean(x1))

## [1] 1.04

(x.u <- sd(x1))

## [1] 1.988

x.u/nX^0.5

## [1] 0.06288

P. Pernot () Evaluation des Incertitudes March 29, 2013 21 / 45

Distribution normale

# Calcul de la pdf sur une grille de points

x <- seq(from = x.mu - 4 * x.u, to = x.mu + 4 * x.u, by = x.u/500)

pdf <- dnorm(x, mean = 1, sd = 2)

myPlot(x1, x, pdf)

0 200 400 600 800 1000

-40

4

Sequence

indice

Var

iable

-5 0 5

0.00

0.10

0.20

x

pdf

0 2 4 6 8 10

0.0

0.4

0.8

Lag

ACF

Autocorrelation

-4 -2 0 2 4 6 8

0.0

0.4

0.8

ecdf(x1)

x

Fn(x

)

P. Pernot () Evaluation des Incertitudes March 29, 2013 22 / 45

Distribution triangulaire

nX <- 1000

x1 <- rtriangle(nX, xmin = 0, xmax = 1)

(x.mu <- mean(x1)) # Exact=0.5

## [1] 0.4919

(x.u <- sd(x1)) # Exact= 1/24^0.5=0.204124

## [1] 0.2066

x.u/nX^0.5

## [1] 0.006533

P. Pernot () Evaluation des Incertitudes March 29, 2013 23 / 45

Distribution triangulaire

# Calcul de la pdf sur une grille de points

x <- seq(from = x.mu - 3 * x.u, to = x.mu + 3 * x.u, by = x.u/500)

pdf <- dtriangle(x, xmin = 0, xmax = 1)

myPlot(x1, x, pdf)

0 200 400 600 800 1000

0.0

0.4

0.8

Sequence

indice

Var

iable

0.0 0.2 0.4 0.6 0.8 1.0

0.0

1.0

2.0

x

pdf

0 2 4 6 8 10

0.0

0.4

0.8

Lag

ACF

Autocorrelation

0.0 0.2 0.4 0.6 0.8 1.0

0.0

0.4

0.8

ecdf(x1)

x

Fn(x

)

P. Pernot () Evaluation des Incertitudes March 29, 2013 24 / 45

Code de “rtriangle”

On a ici un exemple d’utilisation du generateur uniforme pour creer une autredistrubution par transformation de variable.

rtriangle

## function (M, xmin, xmax)

## {

## xpeak = (xmin + xmax)/2

## pkp = (xpeak - xmin)/(xmax - xmin)

## px = runif(M)

## x = c()

## for (i in 1:M) {

## if (px[i] <= pkp)

## x[i] = xmin + sqrt((xmax - xmin) * (xpeak - xmin) *

## px[i])

## else x[i] = xmax - sqrt((px[i] - pkp) * (xmax - xmin) *

## (xmax - xpeak))

## }

## return(x)

## }

P. Pernot () Evaluation des Incertitudes March 29, 2013 25 / 45

Distribution normale multivariee

Lorsque les variables d’entree ne sont pas independantes, on a recours a desdistributions multivariees prenant en compte correlations et/ou contraintes.

Normale multivarieeIl s’agit de l’extension a plusieurs variables correlees X = (X1,X2, . . . ,XN) de ladistribution normale . Elle est definie par un vecteur de valeurs moyennes x et unematrice de variance-covariance (definie strictement positive)

Ux =

u2(x1) u(x1, x2) · · · u(x1, xN)

u(x2, x1) u2(x2) · · · u(x2, xN)...

.... . .

...u(xN , x1) u(xN , x2) · · · u2(xN)

P. Pernot () Evaluation des Incertitudes March 29, 2013 26 / 45

Distribution normale multivariee

void <- suppressPackageStartupMessages(require("MASS")) # Fournit mvrnorm

# Construction de VCov a partir des incertitudes type et une

# matrice de correlation

vCov <- function(u, r = diag(length(u))) outer(u, u, "*") * r

nX <- 2500

x.mu <- c(1, 0)

x.u <- c(0.1, 0.2)

corr <- 0

x1 <- mvrnorm(nX, mu = x.mu, Sigma = vCov(x.u, matrix(c(1, corr, corr,

1), 2, 2)))

corr <- 0.5

x2 <- mvrnorm(nX, mu = x.mu, Sigma = vCov(x.u, matrix(c(1, corr, corr,

1), 2, 2)))

corr <- -0.5

x3 <- mvrnorm(nX, mu = x.mu, Sigma = vCov(x.u, matrix(c(1, corr, corr,

1), 2, 2)))

P. Pernot () Evaluation des Incertitudes March 29, 2013 27 / 45

Distribution normale multivariee

corr <- 0.99

x4 <- mvrnorm(nX, mu = x.mu, Sigma = vCov(x.u, matrix(c(1, corr, corr,

1), 2, 2)))

# Check

colMeans(x4)

## [1] 1.001734 0.002708

cor(x4)

## [,1] [,2]

## [1,] 1.0000 0.9901

## [2,] 0.9901 1.0000

P. Pernot () Evaluation des Incertitudes March 29, 2013 28 / 45

Distribution normale multivariee

P. Pernot () Evaluation des Incertitudes March 29, 2013 29 / 45

Incertitude sur des proportions

Si on a des variables telles que∑N

i=1 Xi = 1 et {Xi ≥ 0; i = 1,N}, on peut utiliserla distribution de Dirichlet (MAXENT)

{X1, . . . ,XN} ∼ Diri (γ ∗ (µ1, . . . , µN))

ou γ > 0 est un facteur de precision (la precision augmente avec γ).

void = suppressPackageStartupMessages(

c(require(MCMCpack), # Dirichlet

require(StatDA) # Ternary plots

)

)

nX = 1000

X = rdirichlet(nX,3*c(1/3,1/3,1/3)) # Echantillon aleatoire de X

X1 = rdirichlet(nX,100*c(0.2,0.3,0.5))

X2 = rdirichlet(nX,0.1*c(0.2,0.3,0.5))

P. Pernot () Evaluation des Incertitudes March 29, 2013 30 / 45

Distribution de Dirichlet

ternary(X, nam = c("x1", "x2", "x3"), grid = TRUE, pch = 19, cex = 0.5,

col = "blue")

ternary(X1, nam = c("x1", "x2", "x3"), grid = TRUE, pch = 19, cex = 0.5,

col = "darkgreen")

ternary(X2, nam = c("x1", "x2", "x3"), grid = TRUE, pch = 19, cex = 0.5,

col = "orange")

NB - mots-cles pour la litterature: “Compositional Data Analysis”

P. Pernot () Evaluation des Incertitudes March 29, 2013 31 / 45

Un peu de balistique...

Monte Carlo

# Monte Carlo version

K <- 50000

# Genere les echantillons

v.s <- rnorm(K, mean = v, sd = v.u)

t.s <- runif(K, min = t - t.de, max = t + t.de) # On n'a pas a estimer t.u...

g.s <- rnorm(K, mean = g, sd = g.u)

par.s <- cbind(v.s, t.s, g.s) # Assemble dans un seul tableau

# Applique la fonction f

d.s <- apply(par.s, 1, fFunc) # Boucle sur les lignes de par.s

# Structure de l'objet

str(d.s)

## num [1:50000] 82.1 80.3 82.2 76.6 79 ...

P. Pernot () Evaluation des Incertitudes March 29, 2013 32 / 45

Un peu de balistique...

# Resumes statistiques et plot

c(d.mu = mean(d.s), d.u = sd(d.s), d.mu.u = sd(d.s)/K^0.5)

## d.mu d.u d.mu.u

## 78.671891 1.762699 0.007883

quantile(d.s, probs = c(0.025, 0.975))

## 2.5% 97.5%

## 75.27 82.16

P. Pernot () Evaluation des Incertitudes March 29, 2013 33 / 45

Un peu de balistique...

hist(d.s, col = "orange", freq = FALSE)

abline(v = quantile(d.s, probs = c(0.025, 0.5, 0.975)), col = "red",

lty = c(2, 1, 2))

Histogram of d.s

d.s

Den

sity

70 75 80 85

0.00

0.05

0.10

0.15

0.20

P. Pernot () Evaluation des Incertitudes March 29, 2013 34 / 45

Un peu de balistique...

Pour aller plus loin, il faut structurer notre probleme avec deux fonctions “Input”et “Output”

# Reformulation de l'exemple avec des fonctions

fSample <- function(M, params) {

# M: nombre de tirages a renvoyer params: liste contenant les

# donnees necessaires au modele

with(params, {

v.s <- rnorm(M, mean = v, sd = v.u)

t.s <- runif(M, min = t - t.de, max = t + t.de)

g.s <- rnorm(M, mean = g, sd = g.u)

return(cbind(v.s, t.s, g.s))

})

}

fModVec <- function(X) apply(X, 1, fFunc)

P. Pernot () Evaluation des Incertitudes March 29, 2013 35 / 45

Un peu de balistique...

Execution !

params <- list(v = v, t = t, g = g, v.u = v.u, t.u = t.u, g.u = g.u,

t.de = t.de)

X <- fSample(K, params)

Y <- fModVec(X)

# Resumes statistiques et plot

c(d.mu = mean(Y), d.u = sd(Y), d.mu.u = sd(Y)/K^0.5)

## d.mu d.u d.mu.u

## 78.663935 1.755656 0.007852

quantile(Y, probs = c(0.025, 0.975))

## 2.5% 97.5%

## 75.27 82.15

P. Pernot () Evaluation des Incertitudes March 29, 2013 36 / 45

MCUPAdapt

Monte Carlo

MCUPAdapt()

## [1] MCUPAdapt(fIn,fOut,ndig,interval,p,delFrac)

## [1] - fInput: (oblig) nom de la fonction fournissant M tirages de X

## [1] - fOutput: (oblig) nom de la fonction du modele Y=f(X)

## [1] - ndig: (entier, def=2) nombre de chiffres significatifs

## [1] - interval: (logique, def=TRUE) flag de calcul d'un intervallle de confiance

## [1] - p: (reel, def=0.95) probabilite pour l'intervalle de confiance

## [1] - delFrac: (reel, def=1) facteur multiplicatif pour le seuil de tolerance

## [1] - nrun0: (entier, def=10000) nombre de tirages dans chaque paquet

## NULL

P. Pernot () Evaluation des Incertitudes March 29, 2013 37 / 45

MCUPAdapt + Balistique

On lance le calcul...

S <- MCUPAdapt(fInput = fSample, fOutput = fModVec, ndig = 2, p = 0.95,

params = params)

## [1] "Taille echantillon final = 6.0e+04"

## [1] "y= (787 +/- 18)*10^-1"

## [1] "95 percent Interval=[752,822]*10^-1"

## [1] "Shortest 95 percent Interval=[752,822]*10^-1"

str(S)

## List of 2

## $ Y: num [1:60000] 77.2 80.1 75.8 74.6 78.4 ...

## $ X: num [1:60000, 1:3] 27.5 28 27.5 27.2 27.6 ...

## ..- attr(*, "dimnames")=List of 2

## .. ..$ : NULL

## .. ..$ : chr [1:3] "v.s" "t.s" "g.s"

P. Pernot () Evaluation des Incertitudes March 29, 2013 38 / 45

A vous de jouer

1 reprenez l’exemple utilise pour la propagation des variances et adaptez-le

1 testez plusieurs niveaux de precision dans MCUPAdapt

2 comparez avec les resultats de la propagation des variances

P. Pernot () Evaluation des Incertitudes March 29, 2013 39 / 45

Un peu de balistique...

Analyse de sensibilite par les correlations entrees/sortie

# Coefficient de correlation lineaire

cor(cbind(S$X, S$Y), method = "pearson")

## v.s t.s g.s

## v.s 1.0000000 0.0006015 -0.003683 0.895665

## t.s 0.0006015 1.0000000 -0.002730 0.001718

## g.s -0.0036835 -0.0027302 1.000000 -0.447840

## 0.8956651 0.0017178 -0.447840 1.000000

# Correlation des rangs

cor(cbind(S$X, S$Y), method = "spearman")

## v.s t.s g.s

## v.s 1.0000000 0.0008698 -0.002488 0.88593

## t.s 0.0008698 1.0000000 -0.002015 0.00151

## g.s -0.0024884 -0.0020145 1.000000 -0.43216

## 0.8859347 0.0015099 -0.432162 1.00000

P. Pernot () Evaluation des Incertitudes March 29, 2013 40 / 45

Un peu de balistique...

SAPlot

SAPlot(cbind(S$X, Y = S$Y)[1:500, ])

P. Pernot () Evaluation des Incertitudes March 29, 2013 41 / 45

Indices de Sobol

# Methode de Sobol

void <- suppressPackageStartupMessages(require("sensitivity"))

sobolSA <- function(M, fInput, fOutput, params) {

# Calcul des coefficients de sensibilite par la methode de Sobol

# Premier echantillon

X1 <- fInput(M, params)

# Deuxieme echantillon

X2 <- fInput(M, params)

# Run de la methode de Sobol

z <- soboljansen(model = fOutput, X1 = X1, X2 = X2, nboot = 100)

return(z)

}

P. Pernot () Evaluation des Incertitudes March 29, 2013 42 / 45

Indices de Sobol

Execution

z <- sobolSA(M = 10000, fInput = fSample, fOutput = fModVec, params = params)

print(z)

##

## Call:

## soboljansen(model = fOutput, X1 = X1, X2 = X2, nboot = 100)

##

## Model runs: 50000

##

## First order indices:

## original bias std. error min. c.i. max. c.i.

## v.s 0.80207 9.984e-05 0.003712 0.794693 0.80966

## t.s 0.01691 2.922e-04 0.013339 -0.008508 0.04341

## g.s 0.21096 1.906e-03 0.011975 0.182215 0.23256

##

## Total indices:

## original bias std. error min. c.i. max. c.i.

## v.s 7.891e-01 -1.871e-03 1.192e-02 7.673e-01 8.175e-01

## t.s 4.076e-06 -2.486e-09 8.297e-08 3.911e-06 4.241e-06

## g.s 1.978e-01 -5.171e-05 3.702e-03 1.902e-01 2.049e-01

P. Pernot () Evaluation des Incertitudes March 29, 2013 43 / 45

Un peu de balistique...

Sobol

plot(z)

v.s t.s g.s

0.0

0.2

0.4

0.6

0.8

1.0

0.0

0.2

0.4

0.6

0.8

1.0

main effect

total effect

P. Pernot () Evaluation des Incertitudes March 29, 2013 44 / 45

A vous de jouer

1 reprenez l’exemple utilise pour la propagation des variances et adaptez-le

1 testez la convergence des indicateurs avec la taille de l’echantillon

2 comparez avec les resultats de la propagation des variances (Anova)

P. Pernot () Evaluation des Incertitudes March 29, 2013 45 / 45