Download Probability Density Functions

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Latin Hypercube Sampling
Example
Jake Blanchard
Spring 2010
Uncertainty Analysis for Engineers
1
Example
Z=XY
 X and Y follow exponential distributions
 x=1
 x
 y=1/2
pdf f   e

cdf
F  1 e
mean  
 x
1

Uncertainty Analysis for Engineers
2
Step 1
Divide cdfs into even intervals (vertical
axis)
1
0.9
0.8
CDF -  =1

0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0
1
2
3
4
5
6
7
8
9
10
x
Uncertainty Analysis for Engineers
3
Step 2
Now sample a number in each section
 For example, pick a random number
between 0.8 and 1.0 and use it to get a
random value for x
 xx=expinv(rx,mux);

Uncertainty Analysis for Engineers
4
Step 3
Sort the values (shuffle)
 nux=xx(randperm(n));

25
20
20
yy
15
15
nyy
10
5
0
0
1
2
3
4
5
xx
6
7
8
9
10
10
5
0
0
2
4
6
8
nux
Uncertainty Analysis for Engineers
10
5
An Alternative
Instead of using expinv, we can generate
the inverse ourselves
 Just take the CDF and solve for x
 xx=-mux*log(1-rx);

Uncertainty Analysis for Engineers
6
First Script
n=10000000; mux=1; muy=2;
x=exprnd(mux,n,1); y=exprnd(muy,n,1);
mz=mean(x.*y);
error=abs(mz-mux*muy)/mux/muy
d=linspace(0,1,n+1);
rx=unifrnd(d,d+1/n);
ry=unifrnd(d,d+1/n);
xx=expinv(rx,mux); yy=expinv(ry,muy);
nux=xx(randperm(n));
nuy=yy(randperm(n));
mz=mean(nux.*nuy);
error=abs(mz-mux*muy)/mux/muy
Uncertainty Analysis for Engineers
7
Alternative
n=10000000; mux=1; muy=2;
x=exprnd(mux,n,1); y=exprnd(muy,n,1);
mz=mean(x.*y);
error=abs(mz-mux*muy)/mux/muy
d=linspace(0,1,n+1);
rx=unifrnd(d,d+1/n);
ry=unifrnd(d,d+1/n);
xx=-mux*log(1-rx); yy=-muy*log(1-ry);
nux=xx(randperm(n));
nuy=yy(randperm(n));
mz=mean(nux.*nuy);
error=abs(mz-mux*muy)/mux/muy
Uncertainty Analysis for Engineers
8
Test
Z=XY
 X and Y are beta with mean of 1 and 2,
respectively
 Use simple Monte Carlo
 Then use LHS without sorting
 Then use LHS with sorting
 N=100,000
 For each case, find mean 100 times and
then take standard deviation of results

Uncertainty Analysis for Engineers
9
Case 1
n=100000;
ntrials=100;
mz=zeros(ntrials,1);
for i=1:ntrials
x=exprnd(mux,n,1);
y=exprnd(muy,n,1);
mz(i)=mean(x.*y);
end
std(mz)
Uncertainty Analysis for Engineers
10
Case 2
d=linspace(0,1,n+1);
for i=1:ntrials
rx=unifrnd(d,d+1/n);
rx=rx(1:end-1);
ry=unifrnd(d,d+1/n);
ry=ry(1:end-1);
x=expinv(rx,mux);
y=expinv(ry,muy);
mz(i)=mean(x.*y);
end
std(mz)
Uncertainty Analysis for Engineers
11
Case 3
d=linspace(0,1,n+1);
for i=1:ntrials
rx=unifrnd(d,d+1/n);
rx=rx(1:end-1);
ry=unifrnd(d,d+1/n);
ry=ry(1:end-1);
x=expinv(rx,mux);
y=expinv(ry,muy);
nux=x(randperm(n));
nuy=y(randperm(n));
mz(i)=mean(nux.*nuy);
end
std(mz)
Uncertainty Analysis for Engineers
12
Results
Mean(mz)
Std(mz)
Case 1
1.9999
0.0098
Case 2
4.0000
0.00029
Case 3
1.9998
0.0064
Uncertainty Analysis for Engineers
13
Related documents