Introduction a l’ evaluation des incertitudes : Travaux...
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
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
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
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
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