# esempi di propagazione di incertezze
# mediante metodi di Montecarlo
#
# G. D'Agostini   PED, 30/11/09
#----------------------------------------------

# variabili gaussiane
x1 <- rnorm(100000, 10, 3)
x2 <- rnorm(100000, 20, 4)

hist(x1, nc=100)
hist(x2, nc=100)

# somma e differenza
s = x1+x2
hist(s, nc=100)
mean(s)
sd(s)

d = x1-x2
hist(d, nc=100)
mean(d)
sd(d)

# prodotto e rapporto
p = x1*x2
hist(p, nc=100)
mean(p)
sd(p)

r = x1/x2
hist(r, nc=100)
length(r[r>5])
length(r[r>2])

mean(r)
sd(r)

# rifacciamo i rapporto partendo da variabili
# di input piu' 'strette':
x1 <- rnorm(100000, 10, 0.03)
x2 <- rnorm(100000, 20, 0.04)
r = x1/x2
hist(r, nc=100)
mean(r)
sd(r)

# ovviamente il fatto che pdf(r) sia simmetrica
# non dipende solo dalle sigma iniziali 'piccole',
# ma anche dal tipo di funzione Y=Y(X1,X2),
# ad esempio:
z <- (x1-9)^3/(19.4-x2)^4
hist(z, nc=100)

# inoltre, con questi metodi e' facile stimare
# pdf e quindi E() e var() a partire da funzioni qualsiasi
# senza ipotesi di gaussianita', ad es
xu <- runif(100000)
xg <- rnorm(100000,0,0.1)
s1 <- xu + xg
hist(s1, nc=100)

