Difference between revisions of "stat340s13"

From statwiki
Jump to: navigation, search
(Introduction)
m (Conversion script moved page Stat340s13 to stat340s13: Converting page titles to lowercase)
 
(568 intermediate revisions by more than 100 users not shown)
Line 42: Line 42:
  
 
=== Final ===
 
=== Final ===
Saturday August 10,2013 from7:30pm-10:00pm
+
Saturday August 10,2013 from 7:30pm-10:00pm
  
 
=== TA(s):  ===
 
=== TA(s):  ===
Line 87: Line 87:
 
(A simple practice might be investigating the hypothesis that higher levels of education cause higher levels of income.) <br />
 
(A simple practice might be investigating the hypothesis that higher levels of education cause higher levels of income.) <br />
 
3 Clustering: Use common features of objects in same class or group to form clusters.(in this case, x is given, y is unknown; For example, clustering by provinces to measure average height of Canadian men.) <br />
 
3 Clustering: Use common features of objects in same class or group to form clusters.(in this case, x is given, y is unknown; For example, clustering by provinces to measure average height of Canadian men.) <br />
4 Dimensionality Reduction (aka Feature extraction, Manifold learning): Used when we have a variable in high dimension space and we want to reduce the dimension <br />
+
4 Dimensionality Reduction (also known as Feature extraction, Manifold learning): Used when we have a variable in high dimension space and we want to reduce the dimension <br />
  
 
=== Applications ===
 
=== Applications ===
Line 119: Line 119:
 
*Email all questions and concerns to UWStat340@gmail.com. Do not use your personal email address! Do not email instructor or TAs about the class directly to their personal accounts!
 
*Email all questions and concerns to UWStat340@gmail.com. Do not use your personal email address! Do not email instructor or TAs about the class directly to their personal accounts!
  
'''Wikicourse note (10% of final mark):'''
+
'''Wikicourse note (complete at least 12 contributions to get 10% of final mark):'''
 
When applying for an account in the wikicourse note, please use the quest account as your login name while the uwaterloo email as the registered email. This is important as the quest id will be used to identify the students who make the contributions.
 
When applying for an account in the wikicourse note, please use the quest account as your login name while the uwaterloo email as the registered email. This is important as the quest id will be used to identify the students who make the contributions.
 
Example:<br/>
 
Example:<br/>
Line 182: Line 182:
 
Generally, mod means taking the reminder after division by m.
 
Generally, mod means taking the reminder after division by m.
 
<br />
 
<br />
We say that n is congruent to r mod m if n = mq + r, where m is an integer. <br />
+
We say that n is congruent to r mod m if n = mq + r, where m is an integer.  
 +
Values are between 0 and m-1 <br />
 
if y = ax + b, then <math>b:=y \mod a</math>. <br />
 
if y = ax + b, then <math>b:=y \mod a</math>. <br />
  
'''For example:'''<br />
+
'''Example 1:'''<br />
  
 
<math>30 = 4 \cdot  7 + 2</math><br />
 
<math>30 = 4 \cdot  7 + 2</math><br />
Line 200: Line 201:
  
 
<br />
 
<br />
'''Another example:'''<br />
+
'''Example 2:'''<br />
  
 
If <math>23 = 3 \cdot  6 + 5</math> <br />
 
If <math>23 = 3 \cdot  6 + 5</math> <br />
Line 213: Line 214:
  
 
Then equivalently, <math>3 := -37\mod 40</math><br />
 
Then equivalently, <math>3 := -37\mod 40</math><br />
 +
 +
'''Example 3:'''<br />
 +
<math>77 = 3 \cdot  25 + 2</math><br />
 +
 +
<math>2 := 77\mod 3</math><br />
 +
<br />
 +
<math>25 = 25 \cdot  1 + 0</math><br />
 +
 +
<math>0: = 25\mod 25</math><br />
 +
<br />
 +
 +
  
  
Line 220: Line 233:
  
 
==== Mixed Congruential Algorithm ====
 
==== Mixed Congruential Algorithm ====
We define the Linear Congruential Method to be <math>x_{k+1}=(ax_k + b) \mod m</math>, where <math>x_k, a, b, m \in \N, \;\text{with}\; a, m \neq 0</math>. Given a '''seed''' (i.e. an initial value <math>x_0 \in \N</math>), we can obtain values for <math>x_1, \, x_2, \, \cdots, x_n</math> inductively. The Multiplicative Congruential Method, invented by Berkeley professor D. H. Lehmer, may also refer to the special case where <math>b=0</math> and the Mixed Congruential Method is case where <math>b \neq 0</math> <br />
+
We define the Linear Congruential Method to be <math>x_{k+1}=(ax_k + b) \mod m</math>, where <math>x_k, a, b, m \in \N, \;\text{with}\; a, m \neq 0</math>. Given a '''seed''' (i.e. an initial value <math>x_0 \in \N</math>), we can obtain values for <math>x_1, \, x_2, \, \cdots, x_n</math> inductively. The Multiplicative Congruential Method, invented by Berkeley professor D. H. Lehmer, may also refer to the special case where <math>b=0</math> and the Mixed Congruential Method is case where <math>b \neq 0</math> <br />. Their title as "mixed" arises from the fact that it has both a multiplicative and additive term.
  
 
An interesting fact about '''Linear Congruential Method''' is that it is one of the oldest and best-known pseudo random number generator algorithms. It is very fast and requires minimal memory to retain state. However, this method should not be used for applications that require high randomness. They should not be used for Monte Carlo simulation and cryptographic applications. (Monte Carlo simulation will consider possibilities for every choice of consideration, and it shows the extreme possibilities. This method is not precise enough.)<br />
 
An interesting fact about '''Linear Congruential Method''' is that it is one of the oldest and best-known pseudo random number generator algorithms. It is very fast and requires minimal memory to retain state. However, this method should not be used for applications that require high randomness. They should not be used for Monte Carlo simulation and cryptographic applications. (Monte Carlo simulation will consider possibilities for every choice of consideration, and it shows the extreme possibilities. This method is not precise enough.)<br />
  
 +
[[File:Linear_Congruential_Statment.png‎|600px]] "Source: STAT 340 Spring 2010 Course Notes"
  
 +
'''First consider the following algorithm'''<br />
 +
<math>x_{k+1}=x_{k} \mod m</math> <br />
 +
 +
such that: if <math>x_{0}=5(mod 150)</math>, <math>x_{n}=3x_{n-1}</math>, find <math>x_{1},x_{8},x_{9}</math>. <br />
 +
<math>x_{n}=(3^n)*5(mod 150)</math> <br />
 +
<math>x_{1}=45,x_{8}=105,x_{9}=15</math> <br />
  
'''First consider the following algorithm'''<br />
 
<math>x_{k+1}=x_{k} \mod m</math>
 
  
  
Line 293: Line 311:
 
2. close all: closes all figures.<br />
 
2. close all: closes all figures.<br />
 
3. who: displays all defined variables.<br />
 
3. who: displays all defined variables.<br />
4. clc: clears screen.<br /><br />
+
4. clc: clears screen.<br />
5. ; : prevents the results from printing.<br /><br />
+
5. ; : prevents the results from printing.<br />
 +
6. disstool: displays a graphing tool.<br /><br />
  
 
<pre style="font-size:16px">
 
<pre style="font-size:16px">
Line 377: Line 396:
  
 
'''Comments:'''<br />
 
'''Comments:'''<br />
 +
 +
Matlab code:
 +
a=5;
 +
b=7;
 +
m=200;
 +
x(1)=3;
 +
for ii=2:1000
 +
x(ii)=mod(a*x(ii-1)+b,m);
 +
end
 +
size(x);
 +
hist(x)
 +
 +
 +
 
Typically, it is good to choose <math>m</math> such that <math>m</math> is large, and <math>m</math> is prime. Careful selection of parameters '<math>a</math>' and '<math>b</math>' also helps generate relatively "random" output values, where it is harder to identify patterns. For example, when we used a composite (non prime) number such as 40 for <math>m</math>, our results were not satisfactory in producing an output resembling a uniform distribution.<br />
 
Typically, it is good to choose <math>m</math> such that <math>m</math> is large, and <math>m</math> is prime. Careful selection of parameters '<math>a</math>' and '<math>b</math>' also helps generate relatively "random" output values, where it is harder to identify patterns. For example, when we used a composite (non prime) number such as 40 for <math>m</math>, our results were not satisfactory in producing an output resembling a uniform distribution.<br />
  
Line 428: Line 461:
 
</pre>
 
</pre>
 
</div>
 
</div>
 +
Another algorithm for generating pseudo random numbers is the multiply with carry method. Its simplest form is similar to the linear congruential generator. They differs in that the parameter b changes in the MWC algorithm. It is as follows: <br>
 +
 +
1.) x<sub>k+1</sub> = ax<sub>k</sub> + b<sub>k</sub> mod m <br>
 +
2.) b<sub>k+1</sub> = floor((ax<sub>k</sub> + b<sub>k</sub>)/m) <br>
 +
3.) set k to k + 1 and go to step 1
 +
[http://www.javamex.com/tutorials/random_numbers/multiply_with_carry.shtml Source]
  
 
=== Inverse Transform Method ===
 
=== Inverse Transform Method ===
Line 441: Line 480:
 
'''Proof of the theorem:'''<br />
 
'''Proof of the theorem:'''<br />
 
The generalized inverse satisfies the following: <br />
 
The generalized inverse satisfies the following: <br />
<math>\begin{align}
+
 
\forall u \in \left[0,1\right], \, x \in \R, \\
+
:<math>P(X\leq x)</math> <br />
&{} F^{-1}\left(u\right) \leq x &{} \\
+
<math>= P(F^{-1}(U)\leq x)</math> (since <math>X= F^{-1}(U)</math> by the inverse method)<br />
\Rightarrow &{} F\Big(F^{-1}\left(u\right)\Big) \leq F\left(x\right) &&{} F \text{ is non-decreasing} \\
+
<math>= P((F(F^{-1}(U))\leq F(x))</math>  (since <math>F </math> is monotonically increasing) <br />
\Rightarrow &{} F\Big(\inf \{y \in \R | F(y)\geq u \}\Big) \leq F\left(x\right) &&{} \text{by definition of } F^{-1} \\
+
<math>= P(U\leq F(x)) </math> (since <math> P(U\leq a)= a</math> for <math>U \sim U(0,1), a \in [0,1]</math>,<br />
\Rightarrow &{} \inf \{F(y) \in [0,1] | F(y)\geq u \} \leq F\left(x\right) &&{} F \text{ is right continuous and non-decreasing} \\
+
<math>= F(x) , \text{ where } 0 \leq F(x) \leq 1 </math>  <br />
\Rightarrow &{} u \leq F\left(x\right) &&{} \text{by definition of } \inf \\
+
 
\Rightarrow &{} x \in \{y \in \R | F(y) \geq u\} &&{} \\
+
This is the c.d.f. of X.  <br />
\Rightarrow &{} x \geq \inf \{y \in \R | F(y)\geq u \}\Big) &&{} \text{by definition of } \inf \\
+
<br />
\Rightarrow &{} x \geq F^{-1}(u) &&{} \text{by definition of } F^{-1} \\
 
\end{align}</math>
 
  
 
That is <math>F^{-1}\left(u\right) \leq x \Leftrightarrow u \leq F\left(x\right)</math><br />
 
That is <math>F^{-1}\left(u\right) \leq x \Leftrightarrow u \leq F\left(x\right)</math><br />
Line 479: Line 516:
 
Step 2: <math>  x=\frac{-ln(U)}{\lambda} </math> <br /><br />
 
Step 2: <math>  x=\frac{-ln(U)}{\lambda} </math> <br /><br />
  
 +
 +
EXAMPLE 2 Normal distribution
 +
G(y)=P[Y<=y)
 +
      =P[-sqr (y) < z < sqr (y))
 +
      =integrate from -sqr(z) to Sqr(z) 1/sqr(2pi) e ^(-z^2/2) dz
 +
      = 2 integrate from 0 to sqr(y)  1/sqr(2pi) e ^(-z^2/2) dz
 +
its the cdf of Y=z^2
 +
 +
pdf g(y)= G'(y)
 +
pdf pf x^2 (1)
  
 
'''MatLab Code''':<br />
 
'''MatLab Code''':<br />
Line 484: Line 531:
 
<pre style="font-size:16px">
 
<pre style="font-size:16px">
 
>>u=rand(1,1000);
 
>>u=rand(1,1000);
>>hist(u)      #will generate a fairly uniform diagram
+
>>hist(u)      # this will generate a fairly uniform diagram
 
</pre>
 
</pre>
 
[[File:ITM_example_hist(u).jpg|300px]]
 
[[File:ITM_example_hist(u).jpg|300px]]
Line 520: Line 567:
 
Sol:  
 
Sol:  
 
Let <math>y=x^5</math>, solve for x: <math>x=y^\frac {1}{5}</math>. Therefore, <math>F^{-1} (x) = x^\frac {1}{5}</math><br />
 
Let <math>y=x^5</math>, solve for x: <math>x=y^\frac {1}{5}</math>. Therefore, <math>F^{-1} (x) = x^\frac {1}{5}</math><br />
Hence, to obtain a value of x from F(x), we first set u as an uniform distribution, then obtain the inverse function of F(x), and set
+
Hence, to obtain a value of x from F(x), we first set 'u' as an uniform distribution, then obtain the inverse function of F(x), and set
 
<math>x= u^\frac{1}{5}</math><br /><br />
 
<math>x= u^\frac{1}{5}</math><br /><br />
  
Line 582: Line 629:
 
== Class 3 - Tuesday, May 14 ==
 
== Class 3 - Tuesday, May 14 ==
 
=== Recall the Inverse Transform Method ===
 
=== Recall the Inverse Transform Method ===
 
+
Let U~Unif(0,1),then the random variable  X = F<sup>-1</sup>(u) has distribution F.  <br />
 
To sample X with CDF F(x), <br />
 
To sample X with CDF F(x), <br />
  
'''1) Draw u~U(0,1) '''<br />
+
<math>1) U~ \sim~ Unif [0,1] </math>
 
'''2) X = F<sup>-1</sup>(u)  '''<br />
 
'''2) X = F<sup>-1</sup>(u)  '''<br />
  
  
'''Proof''' <br />
 
First note that
 
<math>P(U\leq a)=a, \forall a\in[0,1]</math> <br />
 
  
:<math>P(X\leq x)</math> <br />
 
<math>= P(F^{-1}(U)\leq x)</math> (since <math>X= F^{-1}(U)</math> by the inverse method)<br />
 
<math>= P((F(F^{-1}(U))\leq F(x))</math>  (since <math>F </math> is monotonically increasing) <br />
 
<math>= P(U\leq F(x)) </math> (since <math> P(U\leq a)= a</math> for <math>U \sim U(0,1), a \in [0,1]</math>, this is explained further below)<br />
 
<math>= F(x) , \text{ where } 0 \leq F(x) \leq 1 </math>  <br />
 
  
This is the c.d.f. of X.  <br />
+
 
 
<br />
 
<br />
  
'''Note''': that the CDF of a U(a,b) random variable is:
+
'''Note''': CDF of a U(a,b) random variable is:
 
:<math>
 
:<math>
 
   F(x)= \begin{cases}
 
   F(x)= \begin{cases}
Line 624: Line 663:
  
 
Note that on a single point there is no mass probability (i.e. <math>u</math> <= 0.5, is the same as <math> u </math> < 0.5)  
 
Note that on a single point there is no mass probability (i.e. <math>u</math> <= 0.5, is the same as <math> u </math> < 0.5)  
More formally, this is saying that <math> P(X = x) = F(x)- \lim_{s \to x^-}F(x)</math> which equals zero for any continuous random variable
+
More formally, this is saying that <math> P(X = x) = F(x)- \lim_{s \to x^-}F(x)</math> , which equals zero for any continuous random variable
  
 
====Limitations of the Inverse Transform Method====
 
====Limitations of the Inverse Transform Method====
Line 633: Line 672:
  
 
For example, it is too difficult to find the inverse cdf of the Gaussian distribution, so we must find another method to sample from the Gaussian distribution.
 
For example, it is too difficult to find the inverse cdf of the Gaussian distribution, so we must find another method to sample from the Gaussian distribution.
 +
 +
In conclusion, we need to find another way of sampling from more complicated distributions
  
 
=== Discrete Case ===
 
=== Discrete Case ===
Line 649: Line 690:
  
 
Note that after generating a random U, the value of X can be determined by finding the interval <math>[F(x_{j-1}),F(x_{j})]</math> in which U lies. <br />
 
Note that after generating a random U, the value of X can be determined by finding the interval <math>[F(x_{j-1}),F(x_{j})]</math> in which U lies. <br />
 +
 +
In summary:
 +
Generate a discrete r.v.x that has pmf:<br />
 +
  P(X=xi)=Pi,    x0<x1<x2<... <br />
 +
1. Draw U~U(0,1);<br />
 +
2. If F(x(i-1))<U<F(xi), x=xi.<br />
  
  
Line 828: Line 875:
 
Step 5: Go to step 3<br>
 
Step 5: Go to step 3<br>
 
*Note: These steps can be found in Simulation 5th Ed. by Sheldon Ross.
 
*Note: These steps can be found in Simulation 5th Ed. by Sheldon Ross.
*Note: Another method by seeing the Binomial as a sum of n independent Bernoulli random variables, U1, ..., Un. Then set X equal to the number of Ui that are less than or equal to p. To use this method, n random numbers are need and n comparisons need to be done. On the other hand, the inverse transformation method is simpler because only one random variable needs to be generated and it makes 1 + np comparisons.<br>
+
*Note: Another method by seeing the Binomial as a sum of n independent Bernoulli random variables, U1, ..., Un. Then set X equal to the number of Ui that are less than or equal to p. To use this method, n random numbers are needed and n comparisons need to be done. On the other hand, the inverse transformation method is simpler because only one random variable needs to be generated and it makes 1 + np comparisons.<br>
 
Step 1: Generate n uniform numbers U1 ... Un.<br>
 
Step 1: Generate n uniform numbers U1 ... Un.<br>
 
Step 2: X = <math>\sum U_i < = p</math> where P is the probability of success.
 
Step 2: X = <math>\sum U_i < = p</math> where P is the probability of success.
Line 860: Line 907:
 
<math>P(X=x_i) = \, p (1-p)^{x_{i}-1}</math>
 
<math>P(X=x_i) = \, p (1-p)^{x_{i}-1}</math>
 
We have CDF:
 
We have CDF:
<math>F(x)=P(X \leq x)=1-P(X>x) = 1-(1-p)^x</math>, P(X>x) means we get at least x failures before observe the first success.
+
<math>F(x)=P(X \leq x)=1-P(X>x) = 1-(1-p)^x</math>, P(X>x) means we get at least x failures before we observe the first success.
 
Now consider the inverse transform:
 
Now consider the inverse transform:
 
:<math>
 
:<math>
Line 894: Line 941:
  
 
'''Problems'''<br />
 
'''Problems'''<br />
1. We have to find <math> F^{-1} </math>
+
Though this method is very easy to use and apply, it does have a major disadvantage/limitation:
 
+
We need to find the inverse cdf  F^{-1}(\cdot) . In some cases the inverse function does not exist, or is difficult to find because it requires a closed form expression for F(x).
2. For many distributions, such as Gaussian, it is too difficult to find the inverse of <math> F(x)</math>.<br>
+
For example, it is too difficult to find the inverse cdf of the Gaussian distribution, so we must find another method to sample from the Gaussian distribution.
Flipping a coin is a discrete case of uniform distribution, and the code below shows an example of flipping a coin 1000 times; the result is closed to the expected value 0.5.<br>
+
In conclusion, we need to find another way of sampling from more complicated distributions
 +
Flipping a coin is a discrete case of uniform distribution, and the code below shows an example of flipping a coin 1000 times; the result is close to the expected value 0.5.<br>
 
Example 2, as another discrete distribution, shows that we can sample from parts like 0,1 and 2, and the probability of each part or each trial is the same.<br>
 
Example 2, as another discrete distribution, shows that we can sample from parts like 0,1 and 2, and the probability of each part or each trial is the same.<br>
 
Example 3 uses inverse method to figure out the probability range of each random varible.
 
Example 3 uses inverse method to figure out the probability range of each random varible.
Line 949: Line 997:
 
3. Mixed continues discrete
 
3. Mixed continues discrete
  
'''Problems with Inverse-Transform Approach'''
 
 
1. must invert CDF, which may be different (numerical methods).
 
 
2. May not be the fastest or simplest approach for a given distribution.
 
  
 
'''Advantages of Inverse-Transform Method'''
 
'''Advantages of Inverse-Transform Method'''
Line 979: Line 1,022:
 
[[File:AR_Method.png]]
 
[[File:AR_Method.png]]
  
 
{{Cleanup|reason= Do not write <math>c*g(x)</math>. Instead write <math>c \times g(x)</math> or <math>\,c g(x)</math>
 
}}
 
  
 
The main logic behind the Acceptance-Rejection Method is that:<br>
 
The main logic behind the Acceptance-Rejection Method is that:<br>
Line 988: Line 1,028:
 
3. For each value of x, we accept and reject some points based on a probability, which will be discussed below.<br>
 
3. For each value of x, we accept and reject some points based on a probability, which will be discussed below.<br>
  
Note: If the red line was only g(x) as opposed to <math>\,c g(x)</math> (i.e. c=1), then <math>g(x) \geq f(x)</math> for all values of x if and only if g and f are the same functions. This is because the sum of pdf of g(x)=1 and the sum of pdf of f(x)=1, hence, <math>g(x) \ngeqq f(x)</math> &forall;x. <br>
+
Note: If the red line was only g(x) as opposed to <math>\,c g(x)</math> (i.e. c=1), then <math>g(x) \geq f(x)</math> for all values of x if and only if g and f are the same functions. This is because the sum of pdf of g(x)=1 and the sum of pdf of f(x)=1, hence, <math>g(x) \ngeqq f(x)</math> \,&forall;x. <br>
  
 
Also remember that <math>\,c g(x)</math> always generates higher probability than what we need. Thus we need an approach of getting the proper probabilities.<br><br>
 
Also remember that <math>\,c g(x)</math> always generates higher probability than what we need. Thus we need an approach of getting the proper probabilities.<br><br>
Line 998: Line 1,038:
 
3. Verify that <math>f(x)\leqslant c g(x)</math> at all the local maximums as well as the absolute maximums.<br>
 
3. Verify that <math>f(x)\leqslant c g(x)</math> at all the local maximums as well as the absolute maximums.<br>
 
4. Verify that <math>f(x)\leqslant c g(x)</math> at the tail ends by calculating <math>\lim_{x \to +\infty} \frac{f(x)}{\, c g(x)}</math> and <math>\lim_{x \to -\infty} \frac{f(x)}{\, c g(x)}</math> and seeing that they are both < 1. Use of L'Hopital's Rule should make this easy, since both f and g are p.d.f's, resulting in both of them approaching 0.<br>
 
4. Verify that <math>f(x)\leqslant c g(x)</math> at the tail ends by calculating <math>\lim_{x \to +\infty} \frac{f(x)}{\, c g(x)}</math> and <math>\lim_{x \to -\infty} \frac{f(x)}{\, c g(x)}</math> and seeing that they are both < 1. Use of L'Hopital's Rule should make this easy, since both f and g are p.d.f's, resulting in both of them approaching 0.<br>
5.Efficiency: the number of times N that steps 1 and 2 need to be called(also the number of iterations needed to successfully generate X) is a random variable and has a geometric distribution with success probability p=P(U<= f(Y)/(cg(Y))) , P(N=n)=(1-p^(n-1))p ,n>=1.Thus on average the number of iterations required is given by E(N)=1/p
+
5.Efficiency: the number of times N that steps 1 and 2 need to be called(also the number of iterations needed to successfully generate X) is a random variable and has a geometric distribution with success probability <math>p=P(U \leq f(Y)/(cg(Y)))</math> , <math>P(N=n)=(1-p(n-1))p ,n \geq 1</math>.Thus on average the number of iterations required is given by <math> E(N)=\frac{1} p</math>
  
 
c should be close to the maximum of f(x)/g(x), not just some arbitrarily picked large number. Otherwise, the Acceptance-Rejection method will have more rejections (since our probability <math>f(x)\leqslant c g(x)</math> will be close to zero). This will render our algorithm inefficient.  
 
c should be close to the maximum of f(x)/g(x), not just some arbitrarily picked large number. Otherwise, the Acceptance-Rejection method will have more rejections (since our probability <math>f(x)\leqslant c g(x)</math> will be close to zero). This will render our algorithm inefficient.  
Line 1,178: Line 1,218:
  
 
== Class 4 - Thursday, May 16 ==  
 
== Class 4 - Thursday, May 16 ==  
*When we want to find a target distribution, denoted as <math>f(x)</math>, we need to first find a proposal distribution <math>g(x)</math>  that is easy to sample from. <br>  
+
 
*The relationship between the proposal distribution and target distribution is: <math> c \cdot g(x) \geq f(x) </math>, where c is a constant. This means that the area of f(x) is under the area of <math> c \cdot g(x)</math>. <br>
+
'''Goals'''<br>
 +
*When we want to find target distribution <math>f(x)</math>, we need to first find a proposal distribution <math>g(x)</math>  that is easy to sample from. <br>  
 +
*Relationship between the proposal distribution and target distribution is: <math> c \cdot g(x) \geq f(x) </math>, where c is constant. This means that the area of f(x) is under the area of <math> c \cdot g(x)</math>. <br>
 
*Chance of acceptance is less if the distance between <math>f(x)</math> and <math> c \cdot g(x)</math> is big, and vice-versa, we use <math> c </math> to keep <math> \frac {f(x)}{c \cdot g(x)} </math> below 1 (so <math>f(x) \leq c \cdot g(x)</math>). Therefore, we must find the constant <math> C </math> to achieve this.<br />
 
*Chance of acceptance is less if the distance between <math>f(x)</math> and <math> c \cdot g(x)</math> is big, and vice-versa, we use <math> c </math> to keep <math> \frac {f(x)}{c \cdot g(x)} </math> below 1 (so <math>f(x) \leq c \cdot g(x)</math>). Therefore, we must find the constant <math> C </math> to achieve this.<br />
*In other words, a <math>C</math> is chosen to make sure  <math> c \cdot g(x) \geq f(x) </math>. However, it will not make sense if <math>C</math> is simply chosen to be arbitrarily large. We need to choose <math>C</math> such that <math>c \cdot g(x)</math> fits <math>f(x)</math> as tightly as possible. This means that we must find the minimum c such that the area of f(x) is under the area of c*g(x). <br />
+
*In other words, <math>C</math> is chosen to make sure  <math> c \cdot g(x) \geq f(x) </math>. However, it will not make sense if <math>C</math> is simply chosen to be arbitrarily large. We need to choose <math>C</math> such that <math>c \cdot g(x)</math> fits <math>f(x)</math> as tightly as possible. This means that we must find the minimum c such that the area of f(x) is under the area of c*g(x). <br />
 
*The constant c cannot be a negative number.<br />
 
*The constant c cannot be a negative number.<br />
 +
  
 
'''How to find C''':<br />
 
'''How to find C''':<br />
 +
 
<math>\begin{align}
 
<math>\begin{align}
 
&c \cdot g(x) \geq f(x)\\
 
&c \cdot g(x) \geq f(x)\\
Line 1,190: Line 1,234:
 
&c= \max \left(\frac{f(x)}{g(x)}\right)  
 
&c= \max \left(\frac{f(x)}{g(x)}\right)  
 
\end{align}</math><br>
 
\end{align}</math><br>
 +
 
If <math>f</math> and <math> g </math> are continuous, we can find the extremum by taking the derivative and solve for <math>x_0</math> such that:<br/>
 
If <math>f</math> and <math> g </math> are continuous, we can find the extremum by taking the derivative and solve for <math>x_0</math> such that:<br/>
 
<math> 0=\frac{d}{dx}\frac{f(x)}{g(x)}|_{x=x_0}</math> <br/>
 
<math> 0=\frac{d}{dx}\frac{f(x)}{g(x)}|_{x=x_0}</math> <br/>
 +
 
Thus <math> c = \frac{f(x_0)}{g(x_0)} </math><br/>
 
Thus <math> c = \frac{f(x_0)}{g(x_0)} </math><br/>
  
*The logic behind this:
+
Note: This procedure is called the Acceptance-Rejection Method.<br>
The Acceptance-Rejection method involves finding a distribution that we know how to sample from g(x) and multiplying g(x) by a constant c so that <math>c \cdot g(x)</math> is always greater than or equal to f(x). Mathematically, we want <math> c \cdot g(x) \geq f(x) </math>.
+
 
And it means c has to be greater or equal to <math>\frac{f(x)}{g(x)}</math>. So the smallest possible c that satisfies the condition is the maximum value of <math>\frac{f(x)}{g(x)}</math><br/>. If c is too large, the chance of acceptance of generated values will be small, thereby losing efficiency of the algorithm. Therefore, it is best to get the smallest possible c such that <math> c g(x) \geq f(x)</math>. <br>
+
'''The Acceptance-Rejection method''' involves finding a distribution that we know how to sample from, g(x), and multiplying g(x) by a constant c so that <math>c \cdot g(x)</math> is always greater than or equal to f(x). Mathematically, we want <math> c \cdot g(x) \geq f(x) </math>.
 +
And it means, c has to be greater or equal to <math>\frac{f(x)}{g(x)}</math>. So the smallest possible c that satisfies the condition is the maximum value of <math>\frac{f(x)}{g(x)}</math><br/>.  
 +
But in case of c being too large, the chance of acceptance of generated values will be small, thereby losing efficiency of the algorithm. Therefore, it is best to get the smallest possible c such that <math> c g(x) \geq f(x)</math>. <br>
 +
 
 +
'''Important points:'''<br>  
  
 
*For this method to be efficient, the constant c must be selected so that the rejection rate is low. (The efficiency for this method is <math>\left ( \frac{1}{c} \right )</math>)<br>
 
*For this method to be efficient, the constant c must be selected so that the rejection rate is low. (The efficiency for this method is <math>\left ( \frac{1}{c} \right )</math>)<br>
 
*It is easy to show that the expected number of trials for an acceptance is  <math> \frac{Total Number of Trials} {C} </math>. <br>
 
*It is easy to show that the expected number of trials for an acceptance is  <math> \frac{Total Number of Trials} {C} </math>. <br>
*recall the acceptance rate is 1/c. (Not rejection rate)  
+
*recall the '''acceptance rate is 1/c'''. (Not rejection rate)  
 
:Let <math>X</math> be the number of trials for an acceptance, <math> X \sim~ Geo(\frac{1}{c})</math><br>
 
:Let <math>X</math> be the number of trials for an acceptance, <math> X \sim~ Geo(\frac{1}{c})</math><br>
 
:<math>\mathbb{E}[X] = \frac{1}{\frac{1}{c}} = c </math>
 
:<math>\mathbb{E}[X] = \frac{1}{\frac{1}{c}} = c </math>
 
*The number of trials needed to generate a sample size of <math>N</math> follows a negative binomial distribution. The expected number of trials needed is then <math>cN</math>.<br>
 
*The number of trials needed to generate a sample size of <math>N</math> follows a negative binomial distribution. The expected number of trials needed is then <math>cN</math>.<br>
 
*So far, the only distribution we know how to sample from is the '''UNIFORM''' distribution. <br>
 
*So far, the only distribution we know how to sample from is the '''UNIFORM''' distribution. <br>
 +
  
 
'''Procedure''': <br>
 
'''Procedure''': <br>
 +
 
1. Choose <math>g(x)</math> (simple density function that we know how to sample, i.e. Uniform so far) <br>
 
1. Choose <math>g(x)</math> (simple density function that we know how to sample, i.e. Uniform so far) <br>
The easiest case is UNIF(0,1). However, in other cases we need to generate UNIF(a,b). We may need to perform a linear transformation on the UNIF(0,1) variable. <br>
+
The easiest case is <math>U~ \sim~ Unif [0,1] </math>. However, in other cases we need to generate UNIF(a,b). We may need to perform a linear transformation on the <math>U~ \sim~ Unif [0,1] </math> variable. <br>
 
2. Find a constant c such that :<math> c \cdot g(x) \geq f(x) </math>, otherwise return to step 1.
 
2. Find a constant c such that :<math> c \cdot g(x) \geq f(x) </math>, otherwise return to step 1.
  
Line 1,216: Line 1,268:
 
#If <math>U \leq \frac{f(Y)}{c \cdot g(Y)}</math> then X=Y; else return to step 1 (This is not the way to find C. This is the general procedure.)
 
#If <math>U \leq \frac{f(Y)}{c \cdot g(Y)}</math> then X=Y; else return to step 1 (This is not the way to find C. This is the general procedure.)
  
<hr><b>Example: Generate a random variable from the pdf</b><br>
+
<hr><b>Example: <br>
 +
 
 +
Generate a random variable from the pdf</b><br>
 
<math> f(x) =  
 
<math> f(x) =  
 
\begin{cases}  
 
\begin{cases}  
Line 1,251: Line 1,305:
 
[[File:Beta(2,1)_example.jpg|750x750px]]
 
[[File:Beta(2,1)_example.jpg|750x750px]]
  
Note: g follows uniform distribution, it only covers half of the graph which runs from 0 to 1 on y-axis. Thus we need to multiply by c to ensure that <math>c\cdot g</math> can cover entire f(x) area. In this case, c=2, so that makes g runs from 0 to 2 on y-axis which covers f(x).
+
'''Note:''' g follows uniform distribution, it only covers half of the graph which runs from 0 to 1 on y-axis. Thus we need to multiply by c to ensure that <math>c\cdot g</math> can cover entire f(x) area. In this case, c=2, so that makes g run from 0 to 2 on y-axis which covers f(x).
  
Comment:
+
'''Comment:'''<br>
 
From the picture above, we could observe that the area under f(x)=2x is a half of the area under the pdf of UNIF(0,1). This is why in order to sample 1000 points of f(x), we need to sample approximately 2000 points in UNIF(0,1).
 
From the picture above, we could observe that the area under f(x)=2x is a half of the area under the pdf of UNIF(0,1). This is why in order to sample 1000 points of f(x), we need to sample approximately 2000 points in UNIF(0,1).
 
And in general, if we want to sample n points from a distritubion with pdf f(x), we need to scan approximately <math>n\cdot c</math> points from the proposal distribution (g(x)) in total. <br>
 
And in general, if we want to sample n points from a distritubion with pdf f(x), we need to scan approximately <math>n\cdot c</math> points from the proposal distribution (g(x)) in total. <br>
Line 1,264: Line 1,318:
 
</ol>
 
</ol>
  
Note: In the above example, we sample 2 numbers. If second number (u) is less than or equal to first number (y), then accept x=y, if not then start all over.
+
'''Note:''' In the above example, we sample 2 numbers. If second number (u) is less than or equal to first number (y), then accept x=y, if not then start all over.
  
 
<span style="font-weight:bold;color:green;">Matlab Code</span>
 
<span style="font-weight:bold;color:green;">Matlab Code</span>
Line 1,314: Line 1,368:
  
 
<span style="font-weight:bold;colour:green;">Matlab Tip:</span>
 
<span style="font-weight:bold;colour:green;">Matlab Tip:</span>
Periods, ".",meaning "element-wise", are used to describe the operation you want performed on each element of a vector. In the above example, to take the square root of every element in U, the notation U.^0.5 is used. However if you want to take the Square root of the entire matrix U the period, "*.*" would be excluded. i.e. Let matrix B=U^0.5, then <math>B^T*B=U</math>. For example if we have a two 1 X 3 matrices and we want to find out their product; using "." in the code will give us their product. However, if we don't use ".", it will just give us an error. For example, a =[1 2 3] b=[2 3 4] are vectors, a.*b=[2 6 12], but a*b does not work since matrix dimensions must agree.
+
Periods, ".",meaning "element-wise", are used to describe the operation you want performed on each element of a vector. In the above example, to take the square root of every element in U, the notation U.^0.5 is used. However if you want to take the square root of the entire matrix U the period, "." would be excluded. i.e. Let matrix B=U^0.5, then <math>B^T*B=U</math>. For example if we have a two 1 X 3 matrices and we want to find out their product; using "." in the code will give us their product. However, if we don't use ".", it will just give us an error. For example, a =[1 2 3] b=[2 3 4] are vectors, a.*b=[2 6 12], but a*b does not work since the matrix dimensions must agree.
  
 
'''
 
'''
Line 1,344: Line 1,398:
 
=====Example of Acceptance-Rejection Method=====
 
=====Example of Acceptance-Rejection Method=====
  
<math> f(x) = 3x^2,  0<x<1 </math>
+
<math>\begin{align}
<math>g(x)=1,  0<x<1</math>
+
& f(x) = 3x^2,  0<x<1 \\
 +
\end{align}</math><br\>
 +
 
 +
<math>\begin{align}
 +
& g(x)=1,  0<x<1 \\
 +
\end{align}</math><br\>
  
 
<math>c = \max \frac{f(x)}{g(x)} = \max \frac{3x^2}{1} = 3 </math><br>
 
<math>c = \max \frac{f(x)}{g(x)} = \max \frac{3x^2}{1} = 3 </math><br>
Line 1,351: Line 1,410:
  
 
1. Generate two uniform numbers in the unit interval <math>U_1, U_2 \sim~ U(0,1)</math><br>
 
1. Generate two uniform numbers in the unit interval <math>U_1, U_2 \sim~ U(0,1)</math><br>
2. If <math>U_2 \leqslant {U_1}^2</math>, accept <math>U_1</math> as the random variable with pdf <math>f</math>, if not return to Step 1
+
2. If <math>U_2 \leqslant {U_1}^2</math>, accept <math>\begin{align}U_1\end{align}</math> as the random variable with pdf <math>\begin{align}f\end{align}</math>, if not return to Step 1
  
We can also use <math>g(x)=2x</math> for a more efficient algorithm
+
We can also use <math>\begin{align}g(x)=2x\end{align}</math> for a more efficient algorithm
  
 
<math>c = \max \frac{f(x)}{g(x)} = \max \frac {3x^2}{2x} = \frac {3x}{2}  </math>.
 
<math>c = \max \frac{f(x)}{g(x)} = \max \frac {3x^2}{2x} = \frac {3x}{2}  </math>.
Use the inverse method to sample from <math>g(x)</math>
+
Use the inverse method to sample from <math>\begin{align}g(x)\end{align}</math>
<math>G(x)=x^2</math>.
+
<math>\begin{align}G(x)=x^2\end{align}</math>.
Generate <math>U</math> from <math>U(0,1)</math> and set <math>x=sqrt(u)</math>
+
Generate <math>\begin{align}U\end{align}</math> from <math>\begin{align}U(0,1)\end{align}</math> and set <math>\begin{align}x=sqrt(u)\end{align}</math>
  
 
1. Generate two uniform numbers in the unit interval <math>U_1, U_2 \sim~ U(0,1)</math><br>
 
1. Generate two uniform numbers in the unit interval <math>U_1, U_2 \sim~ U(0,1)</math><br>
 
2. If <math>U_2 \leq \frac{3\sqrt{U_1}}{2}</math>, accept <math>U_1</math> as the random variable with pdf <math>f</math>, if not return to Step 1
 
2. If <math>U_2 \leq \frac{3\sqrt{U_1}}{2}</math>, accept <math>U_1</math> as the random variable with pdf <math>f</math>, if not return to Step 1
  
*Note :the function q(x) = c * g(x) is called an envelop or majoring function.<br>
+
*Note :the function <math>\begin{align}q(x) = c * g(x)\end{align}</math> is called an envelop or majoring function.<br>
To obtain a better proposing function g(x), we can first assume a new q(x) and then solve for the normalizing constant by integrating.<br>
+
To obtain a better proposing function <math>\begin{align}g(x)\end{align}</math>, we can first assume a new <math>\begin{align}q(x)\end{align}</math> and then solve for the normalizing constant by integrating.<br>
In the previous example, we first assume q(x) = 3x. To find the normalizing constant, we need to solve k * <math>\sum 3x = 1</math> which gives us k = 2/3. So, g(x) = k*q(x) = 2x.
+
In the previous example, we first assume <math>\begin{align}q(x) = 3x\end{align}</math>. To find the normalizing constant, we need to solve <math>k *\sum 3x = 1</math> which gives us k = 2/3. So,<math>\begin{align}g(x) = k*q(x) = 2x\end{align}</math>.
       
+
 
 +
*Source: http://www.cs.bgu.ac.il/~mps042/acceptance.htm*       
  
 
'''Possible Limitations'''
 
'''Possible Limitations'''
Line 1,494: Line 1,554:
 
3) A constant c where <math>f(x)\leq c\cdot g(x)</math><br/>
 
3) A constant c where <math>f(x)\leq c\cdot g(x)</math><br/>
 
4) A uniform draw<br/>
 
4) A uniform draw<br/>
 
  
 
==== Interpretation of 'C' ====
 
==== Interpretation of 'C' ====
Line 1,503: Line 1,562:
 
Likewise, if the minimum value of possible values for C is <math>\tfrac{4}{3}</math>, <math>1/ \tfrac{4}{3}</math> of the generated random variables will be accepted. Thus the efficient of the algorithm is 75%.
 
Likewise, if the minimum value of possible values for C is <math>\tfrac{4}{3}</math>, <math>1/ \tfrac{4}{3}</math> of the generated random variables will be accepted. Thus the efficient of the algorithm is 75%.
  
In order to ensure the algorithm is as efficient as possible, the 'C' value should be bigger but close to one as much as possible so that <math>\tfrac{1}{c}</math> is smaller but close to one.
+
In order to ensure the algorithm is as efficient as possible, the 'C' value should be as close to one as possible, such that <math>\tfrac{1}{c}</math> approaches 1 => 100% acceptance rate.
 +
 
 +
 
 +
>> close All
 +
>> clear All
 +
>> i=1
 +
>> j=0;
 +
>> while ii<1000
 +
y=rand
 +
u=rand
 +
if u<=y;
 +
x(ii)=y
 +
ii=ii+1
 +
end
 +
end
  
 
== Class 5 - Tuesday, May 21 ==
 
== Class 5 - Tuesday, May 21 ==
Line 1,529: Line 1,602:
 
>>hist(x,30)                #30 is the number of bars
 
>>hist(x,30)                #30 is the number of bars
 
</pre>
 
</pre>
 +
 +
calculate process:
 +
<math>u_{1} <= \sqrt (1-(2u-1)^2) </math> <br>
 +
<math>(u_{1})^2 <=(1-(2u-1)^2) </math> <br>
 +
<math>(u_{1})^2 -1 <=(-(2u-1)^2) </math> <br>
 +
<math>1-(u_{1})^2 >=((2u-1)^2-1) </math> <br>
 +
  
 
MATLAB tips: hist(x,y) plots a histogram of variable x, where y is the number of bars in the graph.
 
MATLAB tips: hist(x,y) plots a histogram of variable x, where y is the number of bars in the graph.
Line 1,561: Line 1,641:
 
~The constant c is a indicator of rejection rate or efficiency of the algorithm. It can represent the average number of trials of the algorithm. Thus, a higher c would mean that the algorithm is comparatively inefficient.
 
~The constant c is a indicator of rejection rate or efficiency of the algorithm. It can represent the average number of trials of the algorithm. Thus, a higher c would mean that the algorithm is comparatively inefficient.
  
the acceptance-rejection method of pmf, the uniform probability is the same for all variables, and there 5 parameters(1,2,3,4,5), so g(x) is 0.2
+
the acceptance-rejection method of pmf, the uniform probability is the same for all variables, and there are 5 parameters(1,2,3,4,5), so g(x) is 0.2
  
 
Remember that we always want to choose <math> cg </math> to be equal to or greater than <math> f </math>, but as close as possible.
 
Remember that we always want to choose <math> cg </math> to be equal to or greater than <math> f </math>, but as close as possible.
<br />limitations: If the form of the proposal dist g is very different from target dist f, then c is very large and the algorithm is not computatively effect.
+
<br />limitations: If the form of the proposal dist g is very different from target dist f, then c is very large and the algorithm is not computatively efficient.
  
 
* '''Code for example 1'''<br />
 
* '''Code for example 1'''<br />
Line 1,608: Line 1,688:
 
>>close all
 
>>close all
 
>>clear all
 
>>clear all
>>p=[.1 .3 .6];  
+
>>p=[.1 .3 .6];     %This a vector holding the values 
 
>>ii=1;
 
>>ii=1;
 
>>while ii < 1000
 
>>while ii < 1000
     y=unidrnd(3);
+
     y=unidrnd(3);   %generates random numbers for the discrete uniform distribution with maximum 3
     u=rand;
+
     u=rand;          
 
     if u<= p(y)/0.6
 
     if u<= p(y)/0.6
       x(ii)=y;
+
       x(ii)=y;    
       ii=ii+1;
+
       ii=ii+1;     %else ii=ii+1
 
     end
 
     end
 
   end
 
   end
Line 1,623: Line 1,703:
  
 
* '''Example 3'''<br>
 
* '''Example 3'''<br>
<math>p_{x}=e^{-3}3^{x}/x! , x>=0</math><br>(poisson distribution)
 
Try the first few p_{x}'s:  .0498 .149 .224 .224 .168 .101 .0504 .0216 .0081 .0027<br>
 
  
Use the geometric distribution for <math>g(x)</math>;<br>
+
Suppose <math>\begin{align}p_{x} = e^{-3}3^{x}/x! , x\geq 0\end{align}</math> (Poisson distribution)
<math>g(x)=p(1-p)^{x}</math>, choose p=0.25<br>
 
Look at <math>p_{x}/g(x)</math> for the first few numbers: .199 .797 1.59 2.12 2.12 1.70 1.13 .647 .324 .144<br>
 
We want <math>c=max(p_{x}/g(x))</math> which is approximately 2.12<br>
 
  
1. Generate <math>U_{1} \sim~ U(0,1); U_{2} \sim~ U(0,1)</math><br>
+
'''First:''' Try the first few <math>\begin{align}p_{x}'s\end{align}</math>:  0.0498, 0.149, 0.224, 0.224, 0.168, 0.101, 0.0504, 0.0216, 0.0081, 0.0027 for <math>\begin{align} x = 0,1,2,3,4,5,6,7,8,9 \end{align}</math><br>
2. <math>j = \lfloor \frac{ln(U_{1})}{ln(.75)} \rfloor+1;</math><br>
 
3. if <math>U_{2} < \frac{p_{j}}{cg(j)}</math>, set X = x<sub>j</sub>, else go to step 1.
 
  
Note: In this case, f(x)/g(x) is extremely difficult to differentiate so we were required to test points. If the function is easily differentiable, we can calculate the max as if it were a continuous function then check the two surrounding points for which is the highest discrete value.
+
'''Proposed distribution:''' Use the geometric distribution for <math>\begin{align}g(x)\end{align}</math>;<br>
 +
 
 +
<math>\begin{align}g(x)=p(1-p)^{x}\end{align}</math>, choose <math>\begin{align}p=0.25\end{align}</math><br>
 +
 
 +
Look at <math>\begin{align}p_{x}/g(x)\end{align}</math> for the first few numbers: 0.199 0.797 1.59 2.12 2.12 1.70 1.13 0.647 0.324 0.144 for <math>\begin{align} x = 0,1,2,3,4,5,6,7,8,9 \end{align}</math><br>
 +
 
 +
We want <math>\begin{align}c=max(p_{x}/g(x))\end{align}</math> which is approximately 2.12<br>
 +
 
 +
'''The general procedures to generate <math>\begin{align}p(x)\end{align}</math> is as follows:'''
 +
 
 +
1. Generate <math>\begin{align}U_{1} \sim~ U(0,1); U_{2} \sim~ U(0,1)\end{align}</math><br>
 +
 
 +
2. <math>\begin{align}j = \lfloor \frac{ln(U_{1})}{ln(.75)} \rfloor+1;\end{align}</math><br>
 +
 
 +
3. if <math>U_{2} < \frac{p_{j}}{cg(j)}</math>, set <math>\begin{align}X = x_{j}\end{align}</math>, else go to step 1.
 +
 
 +
Note: In this case, <math>\begin{align}f(x)/g(x)\end{align}</math> is extremely difficult to differentiate so we were required to test points. If the function is very easy to differentiate, we can calculate the max as if it were a continuous function then check the two surrounding points for which is the highest discrete value.
 +
 
 +
* Source: http://www.math.wsu.edu/faculty/genz/416/lect/l04-46.pdf*
  
 
*'''Example 4''' (Hypergeometric & Binomial)<br>  
 
*'''Example 4''' (Hypergeometric & Binomial)<br>  
Line 1,715: Line 1,806:
 
<math> F(x) = \int_0^{x} \frac{e^{-y}y^{t-1}}{(t-1)!} \mathrm{d}y, \; \forall x \in (0,+\infty)</math>, where <math>t \in \N^+ \text{ and } \lambda \in (0,+\infty)</math>.<br>
 
<math> F(x) = \int_0^{x} \frac{e^{-y}y^{t-1}}{(t-1)!} \mathrm{d}y, \; \forall x \in (0,+\infty)</math>, where <math>t \in \N^+ \text{ and } \lambda \in (0,+\infty)</math>.<br>
  
 +
Note that the CDF of the Gamma distribution does not have a closed form.
 +
 +
The gamma distribution is often used to model waiting times between a certain number of events. It can also be expressed as the sum of infinitely many independent and identically distributed exponential distributions. This distribution has two parameters: the number of exponential terms n, and the rate parameter <math>\lambda</math>. In this distribution there is the Gamma function, <math>\Gamma </math> which has some very useful properties. "Source: STAT 340 Spring 2010 Course Notes" <br/>
  
 
Neither Inverse Transformation nor Acceptance-Rejection Method can be easily applied to Gamma distribution.
 
Neither Inverse Transformation nor Acceptance-Rejection Method can be easily applied to Gamma distribution.
Line 1,825: Line 1,919:
 
:<math>f(x) = \frac{1}{\sqrt{2\pi}}\, e^{- \frac{\scriptscriptstyle 1}{\scriptscriptstyle 2} x^2}</math>
 
:<math>f(x) = \frac{1}{\sqrt{2\pi}}\, e^{- \frac{\scriptscriptstyle 1}{\scriptscriptstyle 2} x^2}</math>
  
*Warning : the General Normal distribution is  
+
*Warning : the General Normal distribution is:
:
 
 
<table>
 
<table>
 
<tr>
 
<tr>
Line 1,878: Line 1,971:
  
 
Let <math> \theta </math> and R denote the Polar coordinate of the vector (X, Y)  
 
Let <math> \theta </math> and R denote the Polar coordinate of the vector (X, Y)  
 +
where <math> X = R \cdot \sin\theta </math> and <math> Y = R \cdot \cos \theta </math>
  
 
[[File:rtheta.jpg]]
 
[[File:rtheta.jpg]]
Line 1,894: Line 1,988:
 
We know that  
 
We know that  
  
:R<sup>2</sup>= X<sup>2</sup>+Y<sup>2</sup> and <math> \tan(\theta) = \frac{y}{x} </math> where X and Y are two independent standard normal
+
<math>R^{2}= X^{2}+Y^{2}</math> and <math> \tan(\theta) = \frac{y}{x} </math> where X and Y are two independent standard normal
 
:<math>f(x) = \frac{1}{\sqrt{2\pi}}\, e^{- \frac{\scriptscriptstyle 1}{\scriptscriptstyle 2} x^2}</math>
 
:<math>f(x) = \frac{1}{\sqrt{2\pi}}\, e^{- \frac{\scriptscriptstyle 1}{\scriptscriptstyle 2} x^2}</math>
 
:<math>f(y) = \frac{1}{\sqrt{2\pi}}\, e^{- \frac{\scriptscriptstyle 1}{\scriptscriptstyle 2} y^2}</math>
 
:<math>f(y) = \frac{1}{\sqrt{2\pi}}\, e^{- \frac{\scriptscriptstyle 1}{\scriptscriptstyle 2} y^2}</math>
:<math>f(x,y) = \frac{1}{\sqrt{2\pi}}\, e^{- \frac{\scriptscriptstyle 1}{\scriptscriptstyle 2} x^2} * \frac{1}{\sqrt{2\pi}}\, e^{- \frac{\scriptscriptstyle 1}{\scriptscriptstyle 2} y^2}=\frac{1}{2\pi}\, e^{- \frac{\scriptscriptstyle 1}{\scriptscriptstyle 2} (x^2+y^2)} </math><br /> - Since for independent distributions, their joint probability function is the multiplication of two independent probability functions
+
:<math>f(x,y) = \frac{1}{\sqrt{2\pi}}\, e^{- \frac{\scriptscriptstyle 1}{\scriptscriptstyle 2} x^2} * \frac{1}{\sqrt{2\pi}}\, e^{- \frac{\scriptscriptstyle 1}{\scriptscriptstyle 2} y^2}=\frac{1}{2\pi}\, e^{- \frac{\scriptscriptstyle 1}{\scriptscriptstyle 2} (x^2+y^2)} </math><br /> - Since for independent distributions, their joint probability function is the multiplication of two independent probability functions. It can also be shown using 1-1 transformation that the joint distribution of R and θ is given by, 1-1 transformation:<br />
It can also be shown using 1-1 transformation that the joint distribution of R and θ is given by,
+
 
1-1 transformation:<br />
+
 
Let <math>d=R^2</math><br />
+
'''Let <math>d=R^2</math>'''<br />
 +
 
 
  <math>x= \sqrt {d}\cos \theta </math>
 
  <math>x= \sqrt {d}\cos \theta </math>
 
  <math>y= \sqrt {d}\sin \theta </math>
 
  <math>y= \sqrt {d}\sin \theta </math>
 
then  
 
then  
 
<math>\left| J\right| = \left| \dfrac {1} {2}d^{-\frac {1} {2}}\cos \theta d^{\frac{1}{2}}\cos \theta +\sqrt {d}\sin \theta \dfrac {1} {2}d^{-\frac{1}{2}}\sin \theta \right| = \dfrac {1} {2}</math>
 
<math>\left| J\right| = \left| \dfrac {1} {2}d^{-\frac {1} {2}}\cos \theta d^{\frac{1}{2}}\cos \theta +\sqrt {d}\sin \theta \dfrac {1} {2}d^{-\frac{1}{2}}\sin \theta \right| = \dfrac {1} {2}</math>
It can be shown that the pdf of <math> d </math> and <math> \theta </math> is:
+
It can be shown that the joint density of <math> d /R^2</math> and <math> \theta </math> is:
 
:<math>\begin{matrix}  f(d,\theta) = \frac{1}{2}e^{-\frac{d}{2}}*\frac{1}{2\pi},\quad  d = R^2 \end{matrix},\quad for\quad 0\leq d<\infty\ and\quad 0\leq \theta\leq 2\pi </math>
 
:<math>\begin{matrix}  f(d,\theta) = \frac{1}{2}e^{-\frac{d}{2}}*\frac{1}{2\pi},\quad  d = R^2 \end{matrix},\quad for\quad 0\leq d<\infty\ and\quad 0\leq \theta\leq 2\pi </math>
  
Line 1,912: Line 2,007:
 
Note that <math> \begin{matrix}f(r,\theta)\end{matrix}</math> consists of two density functions, Exponential and Uniform, so assuming that r and <math>\theta</math> are independent
 
Note that <math> \begin{matrix}f(r,\theta)\end{matrix}</math> consists of two density functions, Exponential and Uniform, so assuming that r and <math>\theta</math> are independent
 
<math> \begin{matrix} \Rightarrow d \sim~ Exp(1/2),  \theta \sim~ Unif[0,2\pi] \end{matrix} </math>
 
<math> \begin{matrix} \Rightarrow d \sim~ Exp(1/2),  \theta \sim~ Unif[0,2\pi] \end{matrix} </math>
::* <math> \begin{align} R^2 = x^2 + y^2 \end{align} </math>
+
::* <math> \begin{align} R^2 = d = x^2 + y^2 \end{align} </math>
 
::* <math> \tan(\theta) = \frac{y}{x} </math>
 
::* <math> \tan(\theta) = \frac{y}{x} </math>
 
<math>\begin{align} f(d) = Exp(1/2)=\frac{1}{2}e^{-\frac{d}{2}}\ \end{align}</math>  
 
<math>\begin{align} f(d) = Exp(1/2)=\frac{1}{2}e^{-\frac{d}{2}}\ \end{align}</math>  
Line 1,918: Line 2,013:
 
<math>\begin{align} f(\theta) =\frac{1}{2\pi}\ \end{align}</math>
 
<math>\begin{align} f(\theta) =\frac{1}{2\pi}\ \end{align}</math>
 
<br>
 
<br>
 +
 
To sample from the normal distribution, we can generate a pair of independent standard normal X and Y by:<br />
 
To sample from the normal distribution, we can generate a pair of independent standard normal X and Y by:<br />
 +
 
1) Generating their polar coordinates<br />
 
1) Generating their polar coordinates<br />
 
2) Transforming back to rectangular (Cartesian) coordinates.<br />
 
2) Transforming back to rectangular (Cartesian) coordinates.<br />
  
Alternative Method of Generating Standard Normal Random Variables 
 
  
Step 1: Generate <math>u1~Unif(0,1)</math>
+
'''Alternative Method of Generating Standard Normal Random Variables'''<br /> 
Step 2: Generate <math>Y1~Exp(1),Y2~Exp(2)</math>
+
 
Step 3: If <math>Y2 \geq(Y1-1)^2/2</math>,set <math>V=Y1</math>,otherwise,go to step 1
+
Step 1: Generate <math>u_{1}</math> ~<math>Unif(0,1)</math><br />
Step 4: If <math>u1 \leq 1/2</math>,then <math>X=-V</math>
+
Step 2: Generate <math>Y_{1}</math> ~<math>Exp(1)</math>,<math>Y_{2}</math>~<math>Exp(2)</math><br />
 +
Step 3: If <math>Y_{2} \geq(Y_{1}-1)^2/2</math>,set <math>V=Y1</math>,otherwise,go to step 1<br />
 +
Step 4: If <math>u_{1} \leq 1/2</math>,then <math>X=-V</math><br />
 +
 
 +
===Expectation of a Standard Normal distribution===<br />
 +
 
 +
The expectation of a standard normal distribution is 0<br />
  
==== Expectation of a Standard Normal distribution ====
+
'''Proof:''' <br />
The expectation of a standard normal distribution is 0
 
:Below is the proof:  
 
  
 
:<math>\operatorname{E}[X]= \;\int_{-\infty}^{\infty} x \frac{1}{\sqrt{2\pi}}  e^{-x^2/2} \, dx.</math>
 
:<math>\operatorname{E}[X]= \;\int_{-\infty}^{\infty} x \frac{1}{\sqrt{2\pi}}  e^{-x^2/2} \, dx.</math>
Line 1,940: Line 2,040:
 
:<math>= - \left[\phi(x)\right]_{-\infty}^{\infty}</math>
 
:<math>= - \left[\phi(x)\right]_{-\infty}^{\infty}</math>
 
:<math>= 0</math><br />
 
:<math>= 0</math><br />
More intuitively, because x is an odd function (f(x)+f(-x)=0). Taking integral of x will give <math>x^2/2 </math> which is an even function (f(x)=f(-x)). Note that this is in relation to the symmetrical properties of the standard normal distribution. If support is from negative infinity to infinity, then the integral will return 0.<br />
 
  
* '''Procedure (Box-Muller Transformation Method):''' <br />
+
'''Note,''' more intuitively, because x is an odd function (f(x)+f(-x)=0). Taking integral of x will give <math>x^2/2 </math> which is an even function (f(x)=f(-x)). This is in relation to the symmetrical properties of the standard normal distribution. If support is from negative infinity to infinity, then the integral will return 0.<br />
 +
 
 +
 
 +
'''Procedure (Box-Muller Transformation Method):''' <br />
 +
 
 
Pseudorandom approaches to generating normal random variables used to be limited. Inefficient methods such as inverse Gaussian function, sum of uniform random variables, and acceptance-rejection were used. In 1958, a new method was proposed by George Box and Mervin Muller of Princeton University. This new technique was easy to use and also had the accuracy to the inverse transform sampling method that it grew more valuable as computers became more computationally astute. <br>
 
Pseudorandom approaches to generating normal random variables used to be limited. Inefficient methods such as inverse Gaussian function, sum of uniform random variables, and acceptance-rejection were used. In 1958, a new method was proposed by George Box and Mervin Muller of Princeton University. This new technique was easy to use and also had the accuracy to the inverse transform sampling method that it grew more valuable as computers became more computationally astute. <br>
 
The Box-Muller method takes a sample from a bivariate independent standard normal distribution, each component of which is thus a univariate standard normal. The algorithm is based on the following two properties of the bivariate independent standard normal distribution: <br>
 
The Box-Muller method takes a sample from a bivariate independent standard normal distribution, each component of which is thus a univariate standard normal. The algorithm is based on the following two properties of the bivariate independent standard normal distribution: <br>
 
if <math>Z = (Z_{1}, Z_{2}</math>) has this distribution, then <br>
 
if <math>Z = (Z_{1}, Z_{2}</math>) has this distribution, then <br>
 +
 
1.<math>R^2=Z_{1}^2+Z_{2}^2</math> is exponentially distributed with mean 2, i.e. <br>
 
1.<math>R^2=Z_{1}^2+Z_{2}^2</math> is exponentially distributed with mean 2, i.e. <br>
 
<math>P(R^2 \leq x) = 1-e^{-x/2}</math>. <br>
 
<math>P(R^2 \leq x) = 1-e^{-x/2}</math>. <br>
 
2.Given <math>R^2</math>, the point <math>(Z_{1},Z_{2}</math>) is uniformly distributed on the circle of radius R centered at the origin. <br>
 
2.Given <math>R^2</math>, the point <math>(Z_{1},Z_{2}</math>) is uniformly distributed on the circle of radius R centered at the origin. <br>
 
We can use these properties to build the algorithm: <br>
 
We can use these properties to build the algorithm: <br>
 +
  
 
1) Generate random number <math> \begin{align} U_1,U_2 \sim~ \mathrm{Unif}(0, 1) \end{align} </math> <br />
 
1) Generate random number <math> \begin{align} U_1,U_2 \sim~ \mathrm{Unif}(0, 1) \end{align} </math> <br />
Line 1,968: Line 2,073:
  
  
Note: In steps 2 and 3, we are using a similar technique as that used in the inverse transform method. <br />
+
'''Note:''' In steps 2 and 3, we are using a similar technique as that used in the inverse transform method. <br />
 
The Box-Muller Transformation Method generates a pair of independent Standard Normal distributions, X and Y (Using the transformation of polar coordinates). <br />
 
The Box-Muller Transformation Method generates a pair of independent Standard Normal distributions, X and Y (Using the transformation of polar coordinates). <br />
 +
 
If you want to generate a number of independent standard normal distributed numbers (more than two), you can run the Box-Muller method several times.<br/>
 
If you want to generate a number of independent standard normal distributed numbers (more than two), you can run the Box-Muller method several times.<br/>
 
For example: <br />
 
For example: <br />
Line 1,976: Line 2,082:
  
  
* '''Code'''<br />
+
'''Matlab Code'''<br />
 +
 
 
<pre style="font-size:16px">
 
<pre style="font-size:16px">
 
>>close all
 
>>close all
Line 1,991: Line 2,098:
 
>>hist(y)
 
>>hist(y)
 
</pre>
 
</pre>
 +
<br>
 +
'''Remember''': For the above code to work the "." needs to be after the d to ensure that each element of d is raised to the power of 0.5.<br /> Otherwise matlab will raise the entire matrix to the power of 0.5."<br>
  
"''Remember'': For the above code to work the "." needs to be after the d to ensure that each element of d is raised to the power of 0.5.<br /> Otherwise matlab will raise the entire matrix to the power of 0.5."
+
'''Note:'''<br>the first graph is hist(tet) and it is a uniform distribution.<br>The second one is hist(d) and it is a exponential distribution.<br>The third one is hist(x) and it is a normal distribution.<br>The last one is hist(y) and it is also a normal distribution.
 
 
Note:<br>the first graph is hist(tet) and it is a uniform distribution.<br>The second one is hist(d) and it is a exponential distribution.<br>The third one is hist(x) and it is a normal distribution.<br>The last one is hist(y) and it is also a normal distribution.
 
  
 
Attention:There is a "dot" between sqrt(d) and "*". It is because d and tet are vectors. <br>
 
Attention:There is a "dot" between sqrt(d) and "*". It is because d and tet are vectors. <br>
Line 2,011: Line 2,118:
 
>>hist(x)
 
>>hist(x)
 
>>hist(x+2)
 
>>hist(x+2)
>>hist(x*2+2)
+
>>hist(x*2+2)<br>
 
</pre>
 
</pre>
 
+
<br>
Note: randn is random sample from a standard normal distribution.<br />
+
'''Note:'''<br>
Note: hist(x+2) will be centered at 2 instead of at 0. <br />
+
1. randn is random sample from a standard normal distribution.<br />
      hist(x*3+2) is also centered at 2. The mean doesn't change, but the variance of x*3+2 becomes nine times (3^2) the variance of x.<br />
+
2. hist(x+2) will be centered at 2 instead of at 0. <br />
 +
3. hist(x*3+2) is also centered at 2. The mean doesn't change, but the variance of x*3+2 becomes nine times (3^2) the variance of x.<br />
 
[[File:Normal_x.jpg|300x300px]][[File:Normal_x+2.jpg|300x300px]][[File:Normal(2x+2).jpg|300px]]
 
[[File:Normal_x.jpg|300x300px]][[File:Normal_x+2.jpg|300x300px]][[File:Normal(2x+2).jpg|300px]]
 
<br />
 
<br />
  
<b>Comment</b>: Box-Muller transformations are not computationally efficient. The reason for this is the need to compute sine and cosine functions. A way to get around this time-consuming difficulty is by an indirect computation of the sine and cosine of  a random angle (as opposed to a direct computation which generates  U  and then computes the sine and cosine of 2πU. <br />
+
<b>Comment</b>:<br />
 +
Box-Muller transformations are not computationally efficient. The reason for this is the need to compute sine and cosine functions. A way to get around this time-consuming difficulty is by an indirect computation of the sine and cosine of  a random angle (as opposed to a direct computation which generates  U  and then computes the sine and cosine of 2πU. <br />
 +
 
 +
 
  
 
'''Alternative Methods of generating normal distribution'''<br />
 
'''Alternative Methods of generating normal distribution'''<br />
 +
 
1. Even though we cannot use inverse transform method, we can approximate this inverse using different functions.One method would be '''rational approximation'''.<br />
 
1. Even though we cannot use inverse transform method, we can approximate this inverse using different functions.One method would be '''rational approximation'''.<br />
 
2.'''Central limit theorem''' : If we sum 12 independent U(0,1) distribution and subtract 6 (which is E(ui)*12)we will approximately get a standard normal distribution.<br />
 
2.'''Central limit theorem''' : If we sum 12 independent U(0,1) distribution and subtract 6 (which is E(ui)*12)we will approximately get a standard normal distribution.<br />
Line 2,036: Line 2,148:
 
=== Proof of Box Muller Transformation ===
 
=== Proof of Box Muller Transformation ===
  
Definition:
+
'''Definition:'''<br />
 
A transformation which transforms from a '''two-dimensional continuous uniform''' distribution to a '''two-dimensional bivariate normal''' distribution (or complex normal distribution).
 
A transformation which transforms from a '''two-dimensional continuous uniform''' distribution to a '''two-dimensional bivariate normal''' distribution (or complex normal distribution).
  
 
Let U<sub>1</sub> and U<sub>2</sub> be independent uniform (0,1) random variables. Then
 
Let U<sub>1</sub> and U<sub>2</sub> be independent uniform (0,1) random variables. Then
<math>X_{1} = (-2lnU)^0.5_{1}*cos(2\pi U_{2})</math>
+
<math>X_{1} = ((-2lnU_{1})^.5)*cos(2\pi U_{2})</math>
  
<math>X_{2} = (-2lnU)^0.5_{1}*sin(2\pi U_{2})</math>
+
<math>X_{2} = (-2lnU_{1})^0.5*sin(2\pi U_{2})</math>
 
are '''independent''' N(0,1) random variables.
 
are '''independent''' N(0,1) random variables.
  
Line 2,056: Line 2,168:
 
       u<sub>2</sub> = g<sub>2</sub> ^-1(x1,x2)
 
       u<sub>2</sub> = g<sub>2</sub> ^-1(x1,x2)
  
Inverting the above transformations, we have
+
Inverting the above transformation, we have
 
     u1 = exp^{-(x<sub>1</sub> ^2+ x<sub>2</sub> ^2)/2}
 
     u1 = exp^{-(x<sub>1</sub> ^2+ x<sub>2</sub> ^2)/2}
 
     u2 = (1/2pi)*tan^-1 (x<sub>2</sub>/x<sub>1</sub>)
 
     u2 = (1/2pi)*tan^-1 (x<sub>2</sub>/x<sub>1</sub>)
Line 2,299: Line 2,411:
  
  
</pre>
+
 
 
</div>
 
</div>
 
Note: We can also regard the Bernoulli Distribution as either a conditional distribution or <math>f(x)= p^{x}(1-p)^{(1-x)}</math>, x=0,1.
 
Note: We can also regard the Bernoulli Distribution as either a conditional distribution or <math>f(x)= p^{x}(1-p)^{(1-x)}</math>, x=0,1.
Line 2,320: Line 2,432:
 
Procedure:
 
Procedure:
  
1.Generate U~Unif [0, 1)<br>
+
1) Generate U~Unif (0, 1)<br>
2.Set <math>x=F^{-1}(u)</math><br>
+
2) Set <math>x=F^{-1}(u)</math><br>
3.X~f(x)<br>
+
3) X~f(x)<br>
  
 
'''Remark'''<br>
 
'''Remark'''<br>
1. The preceding can be written algorithmically as
+
1) The preceding can be written algorithmically for discrete random variables as <br>
Generate a random number U
+
Generate a random number U ~ U(0,1] <br>
If U<<sub>p0</sub> set X=<sub>x0</sub> and stop
+
If U < p<sub>0</sub> set X = x<sub>0</sub> and stop <br>
If U<<sub>p0</sub>+<sub>p1</sub> set X=x1 and stop
+
If U < p<sub>0</sub> + p<sub>1</sub> set X = x<sub>1</sub> and stop <br>
...
+
... <br>
2. If the <sub>xi</sub>, i>=0, are ordered so that <sub>x0</sub><<sub>x1</sub><<sub>x2</sub><... and if we let F denote the distribution function of X, then X will equal <sub>xj</sub> if F(<sub>x(j-1)</sub>)<=U<F(<sub>xj</sub>)
+
2) If the x<sub>i</sub>, i>=0, are ordered so that x<sub>0</sub> < x<sub>1</sub> < x<sub>2</sub> <... and if we let F denote the distribution function of X, then X will equal x<sub>j</sub> if F(x<sub>j-1</sub>) <= U < F(x<sub>j</sub>)
  
 
'''Example 1'''<br>
 
'''Example 1'''<br>
Line 2,357: Line 2,469:
  
 
Step1: Generate U~ U(0, 1)<br>
 
Step1: Generate U~ U(0, 1)<br>
Step2: set <math>y=\, {-\frac {1}{{\lambda_1 +\lambda_2}}} ln(u)</math><br>
+
 
 +
Step2: set <math>y=\, {-\frac {1}{{\lambda_1 +\lambda_2}}} ln(1-u)</math><br>
 +
 
 +
    or set <math>y=\, {-\frac {1} {{\lambda_1 +\lambda_2}}} ln(u)</math><br>
 +
Since it is a uniform distribution, therefore after generate a lot of times 1-u and u are the same.
 +
 
 +
 
 +
* '''Matlab Code'''<br />
 +
<pre style="font-size:16px">
 +
>> lambda1 = 1;
 +
>> lambda2 = 2;
 +
>> u = rand;
 +
>> y = -log(u)/(lambda1 + lambda2)
 +
</pre>
  
 
If we generalize this example from two independent particles to n independent particles we will have:<br>
 
If we generalize this example from two independent particles to n independent particles we will have:<br>
Line 2,401: Line 2,526:
 
<math>U = 0.2</math> => <math>X = U^{1/20} = 0.923</math><br>
 
<math>U = 0.2</math> => <math>X = U^{1/20} = 0.923</math><br>
 
<br>
 
<br>
Observe from above that the values of X for n = 20 are close to 1, this is because we can view <math>X^n</sup></math> as the maximum of n independent random variables <math>X,</math> <math>X~\sim~Unif(0,1)</math> and is much likely to be close to 1 as n increases. This is because when n is large the exponent tends towards 0. This observation is the motivation for method 2 below.<br>
+
Observe from above that the values of X for n = 20 are close to 1, this is because we can view <math>X^n</math> as the maximum of n independent random variables <math>X,</math> <math>X~\sim~Unif(0,1)</math> and is much likely to be close to 1 as n increases. This is because when n is large the exponent tends towards 0. This observation is the motivation for method 2 below.<br>
  
 
Recall that
 
Recall that
Line 2,513: Line 2,638:
 
=== Example of Decomposition Method ===
 
=== Example of Decomposition Method ===
  
F<sub>x</sub>(x) = 1/3*x+1/3*x<sup>2</sup>+1/3*x<sup>3</sup>, 0<= x<=1
+
<math>F_x(x) = \frac {1}{3} x+\frac {1}{3} x^2+\frac {1}{3} x^3, 0\leq x\leq 1</math>
  
let U =F<sub>x</sub>(x) = 1/3*x+1/3*x<sup>2</sup>+1/3*x<sup>3</sup>, solve for x.
+
Let <math>U =F_x(x) = \frac {1}{3} x+\frac {1}{3} x^2+\frac {1}{3} x^3</math>, solve for x.
  
P<sub>1</sub>=1/3, F<sub>x1</sub>(x)= x, P<sub>2</sub>=1/3,F<sub>x2</sub>(x)= x<sup>2</sup>,  
+
<math>P_1=\frac{1}{3}, F_{x1} (x)= x, P_2=\frac{1}{3},F_{x2} (x)= x^2,  
P<sub>3</sub>=1/3,F<sub>x3</sub>(x)= x<sup>3</sup>
+
P_3=\frac{1}{3},F_{x3} (x)= x^3</math>
  
 
'''Algorithm:'''
 
'''Algorithm:'''
  
Generate U ~ Unif [0,1)
+
Generate <math>\,U \sim Unif [0,1)</math>
  
Generate V~ Unif [0,1)
+
Generate <math>\,V \sim  Unif [0,1)</math>
  
if 0<u<1/3, x = v
+
if <math>0\leq u \leq \frac{1}{3}, x = v</math>
  
else if u<2/3, x = v<sup>1/2</sup>
+
else if <math>u \leq \frac{2}{3}, x = v^{\frac{1}{2}}</math>
  
else x = v<sup>1/3</sup><br>
+
else <math>x=v^{\frac{1}{3}}</math> <br>
  
  
Line 2,595: Line 2,720:
  
 
For More Details, please refer to http://www.stanford.edu/class/ee364b/notes/decomposition_notes.pdf
 
For More Details, please refer to http://www.stanford.edu/class/ee364b/notes/decomposition_notes.pdf
 
  
 
===Fundamental Theorem of Simulation===
 
===Fundamental Theorem of Simulation===
Line 2,603: Line 2,727:
 
(Basis of the Accept-Reject algorithm)
 
(Basis of the Accept-Reject algorithm)
  
The advantage of this method is that we can sample a unknown distribution from a easy distribution. The disadvantage of this method is that it may need to reject many points, which is inefficient.
+
The advantage of this method is that we can sample a unknown distribution from a easy distribution. The disadvantage of this method is that it may need to reject many points, which is inefficient.<br />
 +
Inverse each part of partial CDF, the partial CDF is divided by the original CDF, partial range is uniform distribution.<br />
 +
More specific definition of the theorem can be found here.<ref>http://www.bus.emory.edu/breno/teaching/MCMC_GibbsHandouts.pdf</ref>
  
inverse each part of partial CDF, the partial CDF is divided by the original CDF, partial range is uniform distribution.
+
Matlab code:
 +
 
 +
<pre style="font-size:16px">
 +
close all
 +
clear all
 +
ii=1;
 +
while ii<1000
 +
u=rand
 +
y=R*(2*U-1)
 +
if (1-U^2)>=(2*u-1)^2
 +
x(ii)=y;
 +
ii=ii+1
 +
end
 +
</pre>
  
 
===Question 2===
 
===Question 2===
Line 2,648: Line 2,787:
 
===The Bernoulli distribution===
 
===The Bernoulli distribution===
  
The Bernoulli distribution is a special case of the binomial distribution, where n = 1. X ~ Bin(1, p) has the same meaning as X ~ Ber(p), where p is the probability if the event success, otherwise the probability is 1-p (we usually define a variate q, q= 1-p). The mean of Bernoulli is p, variance is p(1-p). Bin(n, p), is the distribution of the sum of n independent Bernoulli trials, Bernoulli(p), each with the same probability p, where 0<p<1. <br>
+
The Bernoulli distribution is a special case of the binomial distribution, where n = 1. X ~ Bin(1, p) has the same meaning as X ~ Ber(p), where p is the probability of success and 1-p is the probability of failure (we usually define a variate q, q= 1-p). The mean of Bernoulli is p and the variance is p(1-p). Bin(n, p), is the distribution of the sum of n independent Bernoulli trials, Bernoulli(p), each with the same probability p, where 0<p<1. <br>
 
For example, let X be the event that a coin toss results in a "head" with probability ''p'', then ''X~Bernoulli(p)''. <br>
 
For example, let X be the event that a coin toss results in a "head" with probability ''p'', then ''X~Bernoulli(p)''. <br>
P(X=1)=p,P(X=0)=1-p, P(x=0)+P(x=1)=p+q=1
+
P(X=1)= p
 +
P(X=0)= q = 1-p
 +
Therefore, P(X=0) + P(X=1) = p + q = 1
  
 
'''Algorithm: '''
 
'''Algorithm: '''
  
1. Generate u~Unif(0,1) <br>
+
1) Generate <math>u\sim~Unif(0,1)</math> <br>
2. If u p, then x = 1 <br>
+
2) If <math>u \leq p</math>, then <math>x = 1 </math><br>
else x = 0 <br>
+
else <math>x = 0</math> <br>
 
The answer is: <br>
 
The answer is: <br>
when U≤p, x=1 <br>
+
when <math> U \leq p, x=1</math> <br>
when U>p, x=0<br>
+
when <math>U \geq p, x=0</math><br>
3.Repeat as necessary
+
3) Repeat as necessary
 +
 
 +
* '''Matlab Code'''<br />
 +
<pre style="font-size:16px">
 +
>> p = 0.8    % an arbitrary probability for example
 +
>> for i = 1: 100
 +
>>  u = rand;
 +
>>  if u < p
 +
>>      x(ii) = 1;
 +
>>  else
 +
>>      x(ii) = 0;
 +
>>  end
 +
>> end
 +
>> hist(x)
 +
</pre>
  
 
===The Binomial Distribution===
 
===The Binomial Distribution===
Line 2,769: Line 2,924:
  
 
P (X > x) = (1-p)<sup>x</sup>(because first x trials are not successful) <br/>
 
P (X > x) = (1-p)<sup>x</sup>(because first x trials are not successful) <br/>
 +
 +
NB: An advantage of using this method is that nothing is rejected. We accept all the points, and the method is more efficient. Also, this method is closer to the inverse transform method as nothing is being rejected. <br />
  
 
'''Proof''' <br/>
 
'''Proof''' <br/>
Line 2,983: Line 3,140:
 
=== Beta Distribution ===
 
=== Beta Distribution ===
 
The beta distribution is a continuous probability distribution. <br>
 
The beta distribution is a continuous probability distribution. <br>
 +
PDF:<math>\displaystyle \text{ } f(x) = \frac{\Gamma(\alpha+\beta)}{\Gamma(\alpha)\Gamma(\beta)}x^{\alpha-1}(1-x)^{\beta-1} </math><br>  where <math>0 \leq x \leq 1</math> and <math>\alpha</math>>0, <math>\beta</math>>0<br/>
 +
<div style = "align:left; background:#F5F5DC; font-size: 120%">
 +
Definition:
 +
In probability theory and statistics, the beta distribution is a family of continuous probability distributions defined on the interval [0, 1] parametrized by two positive shape parameters, denoted by α and β, that appear as exponents of the random variable and control the shape of the distribution.<br/.>
 +
More can be find in the link: <ref>http://en.wikipedia.org/wiki/Beta_distribution</ref>
 +
</div>
 +
 
There are two positive shape parameters in this distribution defined as alpha and beta: <br>
 
There are two positive shape parameters in this distribution defined as alpha and beta: <br>
-Both parameters greater than 0, and X within the interval [0,1]. <br>
+
-Both parameters are greater than 0, and X is within the interval [0,1]. <br>
 
-Alpha is used as exponents of the random variable. <br>
 
-Alpha is used as exponents of the random variable. <br>
 
-Beta is used to control the shape of the this distribution. We use the beta distribution to build the model of the behavior of random variables, which are limited to intervals of finite length. <br>
 
-Beta is used to control the shape of the this distribution. We use the beta distribution to build the model of the behavior of random variables, which are limited to intervals of finite length. <br>
Line 3,034: Line 3,198:
 
:<math>\displaystyle \text{f}(x) = \frac{\Gamma(\alpha+1)}{\Gamma(\alpha)\Gamma(1)}x^{\alpha-1}(1-x)^{1-1}=\alpha x^{\alpha-1}</math><br>
 
:<math>\displaystyle \text{f}(x) = \frac{\Gamma(\alpha+1)}{\Gamma(\alpha)\Gamma(1)}x^{\alpha-1}(1-x)^{1-1}=\alpha x^{\alpha-1}</math><br>
  
The CDF is <math>F(x) = x^{\alpha}</math> (using integration of <math>f(x)</math>)
+
By integrating <math>f(x)</math>, we find the CDF of X is <math>F(x) = x^{\alpha}</math>.
With CDF F(x) = x^α, if U have CDF, it is very easy to sample:
+
As <math>F(x)^{-1} = x^\frac {1}{\alpha}</math>, using the inverse transform method, <math> X = U^\frac {1}{\alpha} </math> with U ~ U[0,1].
y=x^α --> x=y^α --> inverseF(x)= x^(1/α)
 
U~U(0,1) --> x=u^(1/α)
 
Applying the inverse transform method with <math>y = x^\alpha \Rightarrow x = y^\frac {1}{\alpha}</math>
 
 
 
<math>F(x)^{-1} = y^\frac {1}{\alpha}</math>
 
 
 
between case 1 and case 2, when alpha and beta be different value, the beta distribution can simplify to other distribution.
 
  
 
'''Algorithm'''
 
'''Algorithm'''
Line 3,057: Line 3,214:
 
</pre>
 
</pre>
  
'''Case 3:'''<br\> To sample from beta in general. we use the property that <br\>
+
'''Case 3:'''<br\> To sample from beta in general, we use the property that <br\>
  
 
:if <math>Y_1</math> follows gamma <math>(\alpha,1)</math><br\>
 
:if <math>Y_1</math> follows gamma <math>(\alpha,1)</math><br\>
Line 3,195: Line 3,352:
 
An example of the 2-D case is given below:
 
An example of the 2-D case is given below:
  
<pre style='font-size:16px'>
+
<pre style='font-size:14px'>
 
 
 
>>a=[1 2];  
 
>>a=[1 2];  
 
>>b=[4 6];  
 
>>b=[4 6];  
Line 3,212: Line 3,368:
 
[[File:2d_ex.jpg|300px]]
 
[[File:2d_ex.jpg|300px]]
  
==== Code: ====
+
==== Matlab Code: ====
  
<pre style='font-size:16px'>
+
<pre style='font-size:14px'>
 
function x = urectangle (d,n,a,b)
 
function x = urectangle (d,n,a,b)
 
for ii = 1:d;
 
for ii = 1:d;
Line 3,221: Line 3,377:
 
     %keyboard                      #makes the function stop at this step so you can evaluate the variables
 
     %keyboard                      #makes the function stop at this step so you can evaluate the variables
 
end
 
end
 
  
 
>>x=urectangle(2, 100, 2, 5);
 
>>x=urectangle(2, 100, 2, 5);
Line 3,261: Line 3,416:
  
  
This is the picture of the example  
+
The following is a picture relating to the example
 +
 
 
[[File:Untitled.jpg]]
 
[[File:Untitled.jpg]]
  
matlab code:
+
Matlab code:
 
<pre style='font-size:16px'>
 
<pre style='font-size:16px'>
 
u = rand(d,n);
 
u = rand(d,n);
Line 3,289: Line 3,445:
 
==Class 10 - Thursday June 6th 2013 ==  
 
==Class 10 - Thursday June 6th 2013 ==  
 
MATLAB code for using Acceptance/Rejection Method to sample from a d-dimensional unit ball.
 
MATLAB code for using Acceptance/Rejection Method to sample from a d-dimensional unit ball.
 +
G: d-dimensional unit ball G
 +
W: d-dimensional Hypercube
  
 
<pre style='font-size:16px'>
 
<pre style='font-size:16px'>
1. U1~UNIF(0, 1)
+
1) U1~UNIF(0,1)
     U2~UNIF(0, 1)
+
     U2~UNIF(0,1)
 
     ...
 
     ...
     Ud~UNIF(0, 1)
+
     Ud~UNIF(0,1)
 +
2)  X1 = 1-2U1
 +
    X2 = 1-2U2
 +
    ...
 +
    Xd = 1-2Ud
 +
    R = sum(Xi^2)
 +
3)  If R<=1
 +
    X = (X1,X2,...,Xd),
 +
    else go to step 1
 
</pre>
 
</pre>
  
Line 3,332: Line 3,498:
 
z(:,ii) means all the numbers in the ii column starting from 1st column until the nth
 
z(:,ii) means all the numbers in the ii column starting from 1st column until the nth
 
column, which is the last one.
 
column, which is the last one.
 +
 +
higher dimension, less efficient and we need more data points
  
 
Save it with the name of the pattern.
 
Save it with the name of the pattern.
Line 3,404: Line 3,572:
 
[[File:3-dimensional unitball.jpg|400px]]
 
[[File:3-dimensional unitball.jpg|400px]]
  
Note that c increases exponentially as d increases, which will result in rejections of more points. So this method is not efficient for large values of d.
+
Note that c increases exponentially as d increases, which will result in a lower acceptance rate and more points being rejected. So this method is not efficient for large values of d.
  
 
In practice, when we need to vectorlize a high quality image or genes then d would have to be very large.  So AR method is not an efficient way to solve the problem.
 
In practice, when we need to vectorlize a high quality image or genes then d would have to be very large.  So AR method is not an efficient way to solve the problem.
Line 3,420: Line 3,588:
 
For example, for approximating value of <math>\pi</math>, when <math>d \text{(dimension)} =2</math>, the efficiency is around 0.7869; when <math>d=3</math>, the efficiency is around 0.5244; when <math>d=10</math>, the efficiency is around 0.0026: it is getting close to 0.
 
For example, for approximating value of <math>\pi</math>, when <math>d \text{(dimension)} =2</math>, the efficiency is around 0.7869; when <math>d=3</math>, the efficiency is around 0.5244; when <math>d=10</math>, the efficiency is around 0.0026: it is getting close to 0.
  
Thus, when we want to generate high dimension vectors, Acceptance-Rejection Method is not efficient to be used.
+
A 'C' value of 1 implies an acceptance rate of 100% (most efficient scenario) but as we sample from higher dimensions, 'C' usually gets larger. Thus, when we want to generate high dimension vectors, Acceptance-Rejection Method is not efficient to be used.
  
 
<span style="color:red;padding:0 auto;"><br>The end of midterm coverage</span>
 
<span style="color:red;padding:0 auto;"><br>The end of midterm coverage</span>
 +
<div style="border:1px solid #cccccc;border-radius:10px;box-shadow: 0 5px 15px 1px rgba(0, 0, 0, 0.6), 0 0 200px 1px rgba(255, 255, 255, 0.5);padding:20px;margin:20px;background:#FFFFAD;">
 +
<h2 style="text-align:center;">Summary of vector acceptance-rejection sampling</h2>
 +
<p><b>Problem:</b> <math> f(x_1, x_2, ...x_n)</math> is difficult to sample from</p>
 +
<p><b>Plan:</b></p>
 +
Let W represent the sample space covered by <math> f(x_1, x_2, ...x_n)</math>
 +
<ol>
 +
<li>1.Draw <math>\vec{y}=y_1,y_2...y_n\sim~g()</math> where g has sample space G which is greater than W. g is a distribution that is easy to sample from (i.e. uniform)</li>
 +
<li>2.if <math>\vec{y} \subseteq W </math> then <math>\vec{x}=\vec{y} </math><br /> else go 1) </li>
 +
</ol>
 +
<p>x will have the desired distribution.</p>
 +
 +
</div>
  
 
==== Stochastic Process ====
 
==== Stochastic Process ====
Line 3,430: Line 3,610:
 
'''Definition:''' In probability theory, a stochastic process /stoʊˈkæstɪk/, or sometimes random process (widely used) is a collection of random variables; this is often used to represent the evolution of some random value, or system, over time. This is the probabilistic counterpart to a deterministic process (or deterministic system). Instead of describing a process which can only evolve in one way (as in the case, for example, of solutions of an ordinary differential equation), in a stochastic or random process there is some indeterminacy: even if the initial condition (or starting point) is known, there are several (often infinitely many) directions in which the process may evolve. (from Wikipedia)
 
'''Definition:''' In probability theory, a stochastic process /stoʊˈkæstɪk/, or sometimes random process (widely used) is a collection of random variables; this is often used to represent the evolution of some random value, or system, over time. This is the probabilistic counterpart to a deterministic process (or deterministic system). Instead of describing a process which can only evolve in one way (as in the case, for example, of solutions of an ordinary differential equation), in a stochastic or random process there is some indeterminacy: even if the initial condition (or starting point) is known, there are several (often infinitely many) directions in which the process may evolve. (from Wikipedia)
  
A stochastic process is non-deterministic. This means that there is some indeterminacy in the final state, even if the initial condition is known.
+
A stochastic process is non-deterministic. This means that even if we know the initial condition(state), and we know some possibilities of the states to follow, the exact value of the final state remains to be uncertain.  
  
 
We can illustrate this with an example of speech: if "I" is the first word in a sentence, the set of words that could follow would be limited (eg. like, want, am), and the same happens for the third word and so on. The words then have some probabilities among them such that each of them is a random variable, and the sentence would be a collection of random variables. <br>
 
We can illustrate this with an example of speech: if "I" is the first word in a sentence, the set of words that could follow would be limited (eg. like, want, am), and the same happens for the third word and so on. The words then have some probabilities among them such that each of them is a random variable, and the sentence would be a collection of random variables. <br>
Line 3,442: Line 3,622:
 
2. Markov Process- This is a stochastic process that satisfies the Markov property which can be understood as the memory-less property. The property states that the jump to a future state only depends on the current state of the process, and not of the process's history. This model is used to model random walks exhibited by particles, the health state of a life insurance policyholder, decision making by a memory-less mouse in a maze, etc. <br>
 
2. Markov Process- This is a stochastic process that satisfies the Markov property which can be understood as the memory-less property. The property states that the jump to a future state only depends on the current state of the process, and not of the process's history. This model is used to model random walks exhibited by particles, the health state of a life insurance policyholder, decision making by a memory-less mouse in a maze, etc. <br>
 
   
 
   
 
Stochastic Process means even we get some conditions at the beginning, we just can guess some variables followed the first, but at the end the variable would be unpredictable.
 
  
 
=====Example=====
 
=====Example=====
Line 3,450: Line 3,628:
 
stochastic process always has state space and the index set to limit the range.
 
stochastic process always has state space and the index set to limit the range.
  
The state space is the set of cars , while <math>x_t</math> are sport cars.
+
The state space is the set of cars, while <math>x_t</math> are sport cars.
  
==== Poisson Process ====
+
Births in a hospital occur randomly at an average rate
The Poisson process is a discrete counting process of number of occurrences over time.
 
  
e.g traffic accidents , arrival of emails. Emails arrive at random time <math>T_1, T_2</math> ...
+
The number of cases of a disease in different towns
 +
 
 +
==== Poisson Process ====
 +
[[File:Possionprocessidiagram.png‎]]
 +
 
 +
The Poisson process is a discrete counting process which counts the number of<br\>
 +
of events and the time that these occur in a given time interval.<br\>
 +
 
 +
e.g traffic accidents , arrival of emails. Emails arrive at random time <math>T_1, T_2 ... T_n</math> for example (2, 7, 3) is the number of emails received on day 1, day 2, day 3. This is a stochastic process and Poisson process with condition.
 +
 
 +
The probability of observing x events in a given interval is given by
 +
<math> P(X = x) = e^{-\lambda}* \lambda^x/ x! </math>
 +
where x = 0; 1; 2; 3; 4; ....
  
 
-Let <math>N_t</math> denote the number of arrivals within the time interval <math>(0,t]</math><br\>
 
-Let <math>N_t</math> denote the number of arrivals within the time interval <math>(0,t]</math><br\>
Line 3,471: Line 3,660:
 
E[N<sub>t</sub>] = <math>\lambda t</math> and Var[N<sub>t</sub>] = <math>\lambda t</math>
 
E[N<sub>t</sub>] = <math>\lambda t</math> and Var[N<sub>t</sub>] = <math>\lambda t</math>
  
==== ====
+
the rate parameter may change over time; such a process is called a non-homogeneous Poisson process
 +
 
 +
==== Examples ====
 
<br />
 
<br />
 
'''How to generate a multivariate normal with the built-in function "randn": (example)'''<br />
 
'''How to generate a multivariate normal with the built-in function "randn": (example)'''<br />
Line 3,483: Line 3,674:
 
                       %matrix to 1*n matrix;
 
                       %matrix to 1*n matrix;
 
</pre>
 
</pre>
 +
For example, if we use mu = [2 5], we would get <br/>
 +
<math> = \left[ \begin{array}{ccc}
 +
3.8214 & 0.3447 \\
 +
6.3097 & 5.6157 \end{array} \right]</math>
  
and if we want to use box-muller to generate a multivariate normal, we could use the code in lecture 6:
+
 
 +
If we want to use box-muller to generate a multivariate normal, we could use the code in lecture 6:
 
<pre style='font-size:16px'>
 
<pre style='font-size:16px'>
 
d = length(mu);
 
d = length(mu);
Line 3,518: Line 3,714:
  
 
(The definition of CLT is from http://en.wikipedia.org/wiki/Central_limit_theorem)
 
(The definition of CLT is from http://en.wikipedia.org/wiki/Central_limit_theorem)
 +
 +
<math> \lim_{n \to \infty} P*[{\frac{X_1 + ... + X_n -n*\mu}{\sigma*\surd n}} < x] = \Phi (x)</math>
  
 
==Class 11 - Tuesday,June 11, 2013==
 
==Class 11 - Tuesday,June 11, 2013==
Line 3,524: Line 3,722:
  
 
===Poisson Process===
 
===Poisson Process===
 +
A Poisson Process is a stochastic approach to count number of events in a certain time period. <s>Strike-through text</s>
 
A discrete stochastic variable ''X'' is said to have a Poisson distribution with parameter ''λ'' > 0 if
 
A discrete stochastic variable ''X'' is said to have a Poisson distribution with parameter ''λ'' > 0 if
:<math>\!f(n)= \frac{\lambda^n e^{-\lambda}}{n!}  \qquad n= 0,1,2,\ldots,</math>.
+
:<math>\!f(n)= \frac{\lambda^n e^{-\lambda}}{n!}  \qquad n= 0,1,2,3,4,5,\ldots,</math>.
  
 
<math>\{X_t:t\in T\}</math>  where <math>\ X_t </math> is state space and T is index set.
 
<math>\{X_t:t\in T\}</math>  where <math>\ X_t </math> is state space and T is index set.
Line 3,535: Line 3,734:
 
(c) '''Individuality:'''  for a sufficiently short time period of length h, the probability of 2 or more events occurring in the interval is close to 0, or formally <math>\mathcal{O}(h)</math><br>
 
(c) '''Individuality:'''  for a sufficiently short time period of length h, the probability of 2 or more events occurring in the interval is close to 0, or formally <math>\mathcal{O}(h)</math><br>
  
 
+
NOTE: it is very important to note that the time between the occurrence of consecutive events (in a Poisson Process) is exponentially distributed with the same parameter as that in the Poisson distribution. This characteristic is used when trying to simulate a Poisson Process.
'''Notation'''<br>
 
N<sub>t</sub> denotes the number of arrivals up to t, i.e.(0,t] <br>
 
N(a,b] = N<sub>b</sub> - N<sub>a</sub> denotes the number of arrivals in I(a, b]. <br>
 
 
 
  
 
For a small interval (t,t+h], where h is small<br>
 
For a small interval (t,t+h], where h is small<br>
1. The number of arrivals in this interval is independent of the number of arrivals up to t(N<sub>t</sub>)<br>
+
1. The number of arrivals up to time t(N<sub>t</sub>) is independent of the number of arrival in the interval<br>
 
2. <math> P (N(t,t+h)=1|N_{t} ) = P (N(t,t+h)=1) =\frac{e^{-\lambda h} (\lambda h)^1}{1!} =e^{-\lambda h} {\lambda h} \approx \lambda h </math> since <math>e^{-\lambda h} \approx 1</math> when h is small.<br>
 
2. <math> P (N(t,t+h)=1|N_{t} ) = P (N(t,t+h)=1) =\frac{e^{-\lambda h} (\lambda h)^1}{1!} =e^{-\lambda h} {\lambda h} \approx \lambda h </math> since <math>e^{-\lambda h} \approx 1</math> when h is small.<br>
  
Line 3,552: Line 3,747:
 
'''Generate a Poisson Process'''<br />
 
'''Generate a Poisson Process'''<br />
  
<math>U_n \sim U(0,1)</math><br>
+
1. set <math>T_{0}=0</math> and n=1<br/>
<math>T_n-T_{n-1}=-\frac {1}{\lambda} log(U_n)</math><br>
 
 
 
1. set T<sub>0</sub>=0 and n=1<br />
 
  
2. U<sub>n</sub>~ U(0,1)<br />
+
2. <math>U_{n} \sim~ U(0,1)</math><br />
  
3. T<sub>n</sub> = T<sub>n-1</sub> <math> -\frac {1}{\lambda} </math>  log (U<sub>n</sub>) (declare an arrival)<br />
+
3. <math>T_{n} = T_{n-1}-\frac {1}{\lambda} log (U_{n})  </math> (declare an arrival)<br />
  
4. if T<sub>n</sub>>T stop<br />
+
4. if <math>T_{n} \gneq T</math> stop<br />
 
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
 
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
 
&nbsp;&nbsp;&nbsp;&nbsp;n=n+1 go to step 2<br />
 
&nbsp;&nbsp;&nbsp;&nbsp;n=n+1 go to step 2<br />
Line 3,635: Line 3,827:
  
 
</pre>
 
</pre>
 
+
<br>
  
 
The following plot is using TT = 50.<br>
 
The following plot is using TT = 50.<br>
 
The number of points generated every time on average should be <math>\lambda</math> * TT. <br>
 
The number of points generated every time on average should be <math>\lambda</math> * TT. <br>
 
The maximum value of the points should be TT. <br>
 
The maximum value of the points should be TT. <br>
[[File:Poisson.jpg]]
+
[[File:Poisson.jpg]]<br>
 
when TT be big, the plot of the graph will be linear, when we set the TT be 5 or small number, the plot graph looks like discrete distribution.
 
when TT be big, the plot of the graph will be linear, when we set the TT be 5 or small number, the plot graph looks like discrete distribution.
  
Line 3,661: Line 3,853:
 
*Technology: The Google link analysis algorithm "PageRank"<br />
 
*Technology: The Google link analysis algorithm "PageRank"<br />
  
 +
 +
'''Definition''' An irreducible Markov Chain is said to be aperiodic if for some n <math>\ge 0 </math> and some state j.<br />
 +
<math> P*(X_n=j | X_0 =j) > 0 </math>    and    <math>  P*(X_{n+1} | X_0=j) > 0 </math> <br />
 +
 +
It can be shown that if the Markov Chain is irreducible and aperiodic then, <br />
 +
<math> \pi_j = \lim_{n -> \infty} P*(X_n = j) for j=1...N </math> <br />
 +
Source: From Simulation textbook <br />
  
 
Product Rule (Stochastic Process):<br />
 
Product Rule (Stochastic Process):<br />
Line 3,740: Line 3,939:
 
=== Examples of Transition Matrix ===
 
=== Examples of Transition Matrix ===
  
[[File:Mark13.png]]
+
[[File:Mark13.png]]<br>
 
The picture is from http://www.google.ca/imgres?imgurl=http://academic.uprm.edu/wrolke/esma6789/graphs/mark13.png&imgrefurl=http://academic.uprm.edu/wrolke/esma6789/mark1.htm&h=274&w=406&sz=5&tbnid=6A8GGaxoPux9kM:&tbnh=83&tbnw=123&prev=/search%3Fq%3Dtransition%2Bmatrix%26tbm%3Disch%26tbo%3Du&zoom=1&q=transition+matrix&usg=__hZR-1Cp6PbZ5PfnSjs2zU6LnCiI=&docid=PaQvi1F97P2urM&sa=X&ei=foTxUY3DB-rMyQGvq4D4Cg&sqi=2&ved=0CDYQ9QEwAQ&dur=5515)
 
The picture is from http://www.google.ca/imgres?imgurl=http://academic.uprm.edu/wrolke/esma6789/graphs/mark13.png&imgrefurl=http://academic.uprm.edu/wrolke/esma6789/mark1.htm&h=274&w=406&sz=5&tbnid=6A8GGaxoPux9kM:&tbnh=83&tbnw=123&prev=/search%3Fq%3Dtransition%2Bmatrix%26tbm%3Disch%26tbo%3Du&zoom=1&q=transition+matrix&usg=__hZR-1Cp6PbZ5PfnSjs2zU6LnCiI=&docid=PaQvi1F97P2urM&sa=X&ei=foTxUY3DB-rMyQGvq4D4Cg&sqi=2&ved=0CDYQ9QEwAQ&dur=5515)
  
Line 3,771: Line 3,970:
  
 
=== Multiplicative Congruential Algorithm ===
 
=== Multiplicative Congruential Algorithm ===
x<sub>k+1</sub>= (ax<sub>k</sub>+c) mod m
+
<div style="border:1px solid red">
 +
A Linear Congruential Generator (LCG) yields a sequence of randomized numbers calculated with a linear equation. The method represents one of the oldest and best-known pseudorandom number generator algorithms.[1] The theory behind them is easy to understand, and they are easily implemented and fast, especially on computer hardware which can provide modulo arithmetic by storage-bit truncation.<br>
 +
from wikipedia
 +
</div>
  
Where a, c, m and x<sub>1</sub> (the seed) are values we must chose before running the algorithm. While there is no set value for each, it is best for m to be large and prime.
+
<math>\begin{align}x_k+1= (ax_k+c) \mod  m\end{align}</math><br />
  
Examples:
+
Where a, c, m and x<sub>1</sub> (the seed) are values we must chose before running the algorithm. While there is no set value for each, it is best for m to be large and prime. For example, Matlab uses a = 75,b = 0,m = 231 − 1.
      X<sub>0</sub> = 10 ,a = 2 , c = 1 , m = 13
+
 
 +
'''Examples:'''<br>
 +
1. <math>\begin{align}X_{0} = 10 ,a = 2 , c = 1 , m = 13 \end{align}</math><br> 
 +
   
 +
<math>\begin{align}X_{1} = 2 * 10 + 1\mod 13 = 8\end{align}</math><br>
 +
 
 +
<math>\begin{align}X_{2} = 2 * 8  + 1\mod 13 = 4\end{align}</math> ... and so on<br>
 +
 
 +
 
 +
2. <math>\begin{align}X_{0} = 44 ,a = 13 , c = 17 , m = 211\end{align}</math><br>
 
        
 
        
          X<sub>1</sub> = 2 * 10 + mod 13 = 8
+
<math>\begin{align}X_{1} = 13 * 44 + 17\mod 211 = 167\end{align}</math><br>  
          X<sub>2</sub> = 2 * 8  + 1  mod 13 = 4
 
          ... and so on
 
  
      X<sub>0</sub> = 44 ,a = 13 , c = 17 , m = 211
+
<math>\begin{align}X_{2} = 13 * 167  + 17\mod 211 = 78\end{align}</math><br>  
     
+
 
          X<sub>1</sub> = 13 * 44 + 17 mod 211 = 167
+
<math>\begin{align}X_{3} = 13 * 78  + 17\mod 211 = 187\end{align}</math> ... and so on<br>
          X<sub>2</sub> = 13 * 167  + 17  mod 211 = 78
 
          X<sub>3</sub> = 13 * 78  + 17 mod 211 = 187
 
          ... and so on
 
  
 
=== Inverse Transformation Method ===
 
=== Inverse Transformation Method ===
Line 3,844: Line 4,050:
  
 
Models the waiting time until the first success.<br>
 
Models the waiting time until the first success.<br>
 +
<math>X\sim~Exp(\lambda)</math> <br />
  
X~Exp<math>(\lambda) </math><br>
+
<math>f(x) = \lambda e^{-\lambda x} \, , x>0 </math><br/>
<math> f (x) = \lambda e^{-\lambda x}</math> , <math>x>0 </math><br/>
 
  
1. U~Unif(0,1)
+
<math>1.\, U\sim~U(0,1)</math>
 
+
<br />
2. The inverse of exponential function is x = <math>\frac{-1}{\lambda} log(U)</math>
+
<math>2.\, x = \frac{-1}{\lambda} log(U)</math>
  
 
===Normal===
 
===Normal===
Line 3,868: Line 4,074:
 
In the multivariate case,<br/ >
 
In the multivariate case,<br/ >
 
<math>\underline{Z}\sim N(\underline{0},I)\rightarrow  \underline{X} \sim N(\underline{\mu},\Sigma)</math> <br/ >
 
<math>\underline{Z}\sim N(\underline{0},I)\rightarrow  \underline{X} \sim N(\underline{\mu},\Sigma)</math> <br/ >
<math>\underline{X} = \underline{\mu} +\Sigma ^{1/2} \underline{Z}</math>
+
<math>\underline{X} = \underline{\mu} +\Sigma ^{1/2} \underline{Z}</math><br/>
 +
Note: <math>\Sigma^{1/2}</math> can be obtained from Cholesky decomposition (chol(A) in MATLAB), which is guaranteed to exist, as  <math>\Sigma</math> is positive semi-definite.
  
 
=== Gamma ===
 
=== Gamma ===
Line 3,882: Line 4,089:
 
<math>=\frac {-1}{\lambda}\log(\prod_{j=1}^{t} U_j)</math>
 
<math>=\frac {-1}{\lambda}\log(\prod_{j=1}^{t} U_j)</math>
  
This is a property of gamma distribution.
+
This is a special property of gamma distribution.
  
 
=== Bernoulli ===
 
=== Bernoulli ===
Line 3,888: Line 4,095:
 
A Bernoulli random variable can only take two possible values: 0 and 1. 1 represents "success" and 0 represents "failure." If p is the probability of success, we have pdf
 
A Bernoulli random variable can only take two possible values: 0 and 1. 1 represents "success" and 0 represents "failure." If p is the probability of success, we have pdf
  
<math> f(x)= p^x (1-p)^{1-x}, x=0,1 </math><br>
+
<math> f(x)= p^x (1-p)^{1-x},\,  x=0,1 </math><br>
  
 
To generate a Bernoulli random variable we use the following procedure:
 
To generate a Bernoulli random variable we use the following procedure:
  
sample u~U(0,1)<br>
+
<math> 1. U\sim~U(0,1)</math><br>
if u <= p, then x=1<br>
+
<math> 2. if\, u <= p, then\, x=1\,</math><br />  
else x=0<br>
+
<math> else\, x=0</math><br/>
 
where 1 stands for success and 0 stands for failure.<br>
 
where 1 stands for success and 0 stands for failure.<br>
  
Line 3,901: Line 4,108:
 
The sum of n independent Bernoulli trials
 
The sum of n independent Bernoulli trials
 
<br\>
 
<br\>
X~ Bin(n,p)<br/>
+
<math> X\sim~ Bin(n,p)</math><br/>
1. U1, U2, ... Un ~ U(0,1)<br/>
+
1.<math> U1, U2, ... Un \sim~U(0,1)</math><br/>
 
2. <math> X= \sum^{n}_{1} I(U_i \leq p) </math> ,where <math>I(U_i \leq p)</math> is an indicator for a successful trial.<br/>
 
2. <math> X= \sum^{n}_{1} I(U_i \leq p) </math> ,where <math>I(U_i \leq p)</math> is an indicator for a successful trial.<br/>
 
Return to 1<br/>
 
Return to 1<br/>
  
I is an indicator variable if for U <= P, then I(U<=P)=1; else I(U>P)=0.
+
I is an indicator variable if for <math>U \leq P,\, then\, I(U\leq P)=1;\, else I(U>P)=0.</math>
  
 
Repeat this N times if you need N samples.
 
Repeat this N times if you need N samples.
Line 3,920: Line 4,127:
 
simulate this binomial distribution.
 
simulate this binomial distribution.
  
1) Generate <math> U_1....U_{10} </math> ~ <math> U(0,1) </math>  <br>
+
1) Generate <math>U_1....U_{10} \sim~ U(0,1) </math>  <br>
 
2) <math> X= \sum^{10}_{1} I(U_i \leq \frac{1}{6}) </math> <br>
 
2) <math> X= \sum^{10}_{1} I(U_i \leq \frac{1}{6}) </math> <br>
3)Return to one.
+
3)Return to 1)
  
 
=== Beta Distribution ===
 
=== Beta Distribution ===
Line 4,030: Line 4,237:
 
<br>N-Step Transition Matrix: a matrix <math> P_n </math> whose elements are the probability of moving from state i to state j in n steps. <br/>
 
<br>N-Step Transition Matrix: a matrix <math> P_n </math> whose elements are the probability of moving from state i to state j in n steps. <br/>
 
<math>P_n (i,j)=Pr⁡(X_{m+n}=j|X_m=i)</math> <br/>
 
<math>P_n (i,j)=Pr⁡(X_{m+n}=j|X_m=i)</math> <br/>
 +
 +
Explanation: (with an example) Suppose there 10 states { 1, 2, ..., 10}, and suppose you are on state 2, then P<sub>8</sub>(2, 5) represent the probability of moving from state 2 to state 5 in 8 steps.
  
 
One-step transition probability:<br/>
 
One-step transition probability:<br/>
Line 4,064: Line 4,273:
  
 
<math>P_2 = P_1 P_1 </math><br\>
 
<math>P_2 = P_1 P_1 </math><br\>
 +
 +
<math>P_3 = P_1 P_2 </math><br\>
 +
 +
<math>P_n = P_1 P_(n-1) </math><br\>
  
 
<math>P_n = P_1^n </math><br\>
 
<math>P_n = P_1^n </math><br\>
Line 4,106: Line 4,319:
 
Note: <math>P_2 = P_1\times P_1; P_n = P^n</math><br />
 
Note: <math>P_2 = P_1\times P_1; P_n = P^n</math><br />
 
The equation above is a special case of the Chapman-Kolmogorov equations.<br />
 
The equation above is a special case of the Chapman-Kolmogorov equations.<br />
It is true because of the Markov property or<br />
+
It is true because of the Markov property or the memoryless property of Markov chains, where the probabilities of going forward to the next state <br />
the memoryless property of Markov chains, where the probabilities of going forward to the next state <br />
 
 
only depends on your current state, not your previous states. By intuition, we can multiply the 1-step transition <br />
 
only depends on your current state, not your previous states. By intuition, we can multiply the 1-step transition <br />
 
matrix n-times to get a n-step transition matrix.<br />
 
matrix n-times to get a n-step transition matrix.<br />
Line 4,113: Line 4,325:
 
Example: We can see how <math>P_n = P^n</math> from the following:
 
Example: We can see how <math>P_n = P^n</math> from the following:
 
<br/>
 
<br/>
<math>\mu_1=\mu_0\cdot P</math> <br/>
+
<math>\vec{\mu_1}=\vec{\mu_0}\cdot P</math> <br/>
<math>\mu_2=\mu_1\cdot P</math> <br/>
+
<math>\vec{\mu_2}=\vec{\mu_1}\cdot P</math> <br/>
<math>\mu_3=\mu_2\cdot P</math> <br/>
+
<math>\vec{\mu_3}=\vec{\mu_2}\cdot P</math> <br/>
 
Therefore,  
 
Therefore,  
 
<br/>
 
<br/>
<math>\mu_3=\mu_0\cdot P^3
+
<math>\vec{\mu_3}=\vec{\mu_0}\cdot P^3
 
</math> <br/>
 
</math> <br/>
  
 
<math>P_n(i,j)</math> is called n-steps transition probability. <br>
 
<math>P_n(i,j)</math> is called n-steps transition probability. <br>
<math>\mu_0 </math> is called the '''initial distribution'''. <br>
+
<math>\vec{\mu_0} </math> is called the '''initial distribution'''. <br>
<math>\mu_n = \mu_0* P^n </math> <br />
+
<math>\vec{\mu_n} = \vec{\mu_0}* P^n </math> <br />
  
 
Example with Markov Chain:
 
Example with Markov Chain:
Line 4,154: Line 4,366:
 
The vector <math>\underline{\mu_0}</math> is called the initial distribution. <br/>
 
The vector <math>\underline{\mu_0}</math> is called the initial distribution. <br/>
  
<math> P_2~=P_1 P_1 </math> (as verified above)  
+
<math> P^2~=P\cdot P </math> (as verified above)  
  
 
In general,
 
In general,
<math> P_n~=(P_1)^n </math> **Note that <math>P_1</math> is equal to the matrix P <br/>
+
<math> P^n~= \Pi_{i=1}^{n} P</math> (P multiplied n times)<br/>
<math>\mu_n~=\mu_0 P_n</math><br/>
+
<math>\mu_n~=\mu_0 P^n</math><br/>
 
where <math>\mu_0</math> is the initial distribution,
 
where <math>\mu_0</math> is the initial distribution,
and <math>\mu_{m+n}~=\mu_m P_n</math><br/>
+
and <math>\mu_{m+n}~=\mu_m P^n</math><br/>
 
N can be negative, if P is invertible.
 
N can be negative, if P is invertible.
  
Line 4,193: Line 4,405:
  
  
<math>\pi</math> is stationary distribution of the chain if <math>\pi</math>P = <math>\pi</math>
+
<math>\pi</math> is stationary distribution of the chain if <math>\pi</math>P = <math>\pi</math> In other words, a stationary distribution is when the markov process that have equal probability of moving to other states as its previous move.
  
 
where <math>\pi</math> is a probability vector <math>\pi</math>=(<math>\pi</math><sub>i</sub> | <math>i \in X</math>) such that all the entries are nonnegative and sum to 1. It is the eigenvector in this case.
 
where <math>\pi</math> is a probability vector <math>\pi</math>=(<math>\pi</math><sub>i</sub> | <math>i \in X</math>) such that all the entries are nonnegative and sum to 1. It is the eigenvector in this case.
Line 4,200: Line 4,412:
  
 
The above conditions are used to find the stationary distribution
 
The above conditions are used to find the stationary distribution
 +
In matlab, we could use <math>P^n</math> to find the stationary distribution.(n is usually larger than 100)<br/>
 +
  
 
'''Comments:'''<br/>
 
'''Comments:'''<br/>
Line 4,211: Line 4,425:
 
Ans: There is not clear way to find that out  
 
Ans: There is not clear way to find that out  
  
How do you increase the time it takes to reach the steady state.
+
How do you increase the time it takes to reach the steady state?
Ans: Make the probabilities of transition much smaller, to reach from state 0 to state 1 and visevera p=0.005. And make the probabilities of staying in the same state extremely high. To stay in state 0 or state 1 p=0.995, then the matrix is in a "sticky state"
+
Ans: Make the probabilities of transition much smaller, to reach from state 0 to state 1 and vice-versa p=0.005. And make the probabilities of staying in the same state extremely high. To stay in state 0 or state 1 p=0.995, then the matrix is in a "sticky state"
 +
 
 +
 
 +
EXAMPLE : Random Walk on the cycle S={0,1,2}
 +
 
 +
<math>P^2 = \left[ \begin{array}{ccc}
 +
2pq & q^2 & p^2 \\
 +
p^2 & 2pq & q^2 \\
 +
q^2 & p^2 & 2pq \end{array} \right]</math>
 +
 
 +
Suppose<br/>
 +
<math>P(x_0=0)=\frac{1}{4}</math><br/>
 +
<math>P(x_0=1)=\frac{1}{2}</math><br/>
 +
<math>P(x_0=2)=\frac{1}{4}</math><br/>
 +
Thus<br/>
 +
<math>\pi_0 = \left[ \begin{array}{c} \frac{1}{4} \\ \frac{1}{2} \\ \frac{1}{4} \end{array} \right]</math><br/>
 +
so<br/>
 +
<math>\,\pi^2 = \pi_0 * P^2 </math>
 +
<math>= \left[ \begin{array}{c} \frac{1}{4} \\ \frac{1}{2} \\ \frac{1}{4} \end{array} \right] * \left[ \begin{array}{ccc}
 +
2pq & q^2 & p^2 \\
 +
p^2 & 2pq & q^2 \\
 +
q^2 & p^2 & 2pq \end{array} \right]</math>
 +
<math>= \left[ \begin{array}{c} \frac{1}{2}pq + \frac{1}{2}p^2+\frac{1}{4}q^2 \\ \frac{1}{4}q^2+pq+\frac{1}{4}p^2 \\ \frac{1}{4}p^2+\frac{1}{2}q^2+\frac{1}{2}pq\end{array} \right]</math>
  
 
==== MatLab Code ====
 
==== MatLab Code ====
Line 4,385: Line 4,621:
 
<math>\displaystyle \pi=(\frac{1}{3},\frac{4}{9}, \frac{2}{9})</math>
 
<math>\displaystyle \pi=(\frac{1}{3},\frac{4}{9}, \frac{2}{9})</math>
  
<math>\displaystyle \lambda u=A u</math>
+
Note that <math>\displaystyle \pi=\pi  p</math> looks similar to eigenvectors/values <math>\displaystyle \lambda vec{u}=A vec{u}</math>
  
<math>\pi</math> can be considered as an eigenvector of P with eigenvalue = 1.
+
<math>\pi</math> can be considered as an eigenvector of P with eigenvalue = 1. But note that the vector <math>vec{u}</math> is a column vector and o we need to transform our <math>\pi</math> into a column vector.
But the vector u here needs to be a column vector. So we need to transform <math>\pi</math> into a column vector.
 
  
<math>\pi</math><sup>T</sup>= P<sup>T</sup><math>\pi</math><sup>T</sup>
+
<math>=> \pi</math><sup>T</sup>= P<sup>T</sup><math>\pi</math><sup>T</sup><br/>
 
Then <math>\pi</math><sup>T</sup> is an eigenvector of P<sup>T</sup> with eigenvalue = 1. <br />
 
Then <math>\pi</math><sup>T</sup> is an eigenvector of P<sup>T</sup> with eigenvalue = 1. <br />
 
MatLab tips:[V D]=eig(A), where D is a diagonal matrix of eigenvalues and V is a matrix of eigenvectors of matrix A<br />
 
MatLab tips:[V D]=eig(A), where D is a diagonal matrix of eigenvalues and V is a matrix of eigenvectors of matrix A<br />
 
==== MatLab Code ====
 
==== MatLab Code ====
 +
<pre style='font-size:14px'>
 +
 +
P = [1/3 1/3 1/3; 1/4 3/4 0; 1/2 0 1/2]
 +
 +
pii = [1/3 4/9 2/9]
 +
 +
[vec val] = eig(P')            %% P' is the transpose of matrix P
 +
 +
vec(:,1) = [-0.5571 -0.7428 -0.3714]      %% this is in column form
  
 +
a = -vec(:,1)
 +
 +
>> a =
 +
[0.5571 0.7428 0.3714]   
 +
 +
%% a is in column form
 +
 +
%% Since we want this vector a to sum to 1, we have to scale it
 +
 +
b = a/sum(a)
 +
 +
>> b =
 +
[0.3333 0.4444 0.2222] 
 +
 +
%% b is also in column form
 +
 +
%% Observe that b' = pii
 +
 +
</pre>
 +
</br>
 
==== Limiting distribution ====
 
==== Limiting distribution ====
 
A Markov chain has limiting distribution <math>\pi</math> if
 
A Markov chain has limiting distribution <math>\pi</math> if
Line 4,409: Line 4,673:
  
 
If the limiting distribution <math>\pi</math> exists, it must be equal to the stationary distribution.<br/>
 
If the limiting distribution <math>\pi</math> exists, it must be equal to the stationary distribution.<br/>
 +
 +
This convergence means that,in the long run(n to infinity),the probability of finding the <br/>
 +
Markov chain in state j is approximately <math>\pi_j</math> no matter in which state <br/>
 +
the chain began at time 0. <br/>
  
 
'''Example:'''
 
'''Example:'''
Line 4,418: Line 4,686:
 
, find stationary distribution.<br/>
 
, find stationary distribution.<br/>
 
We have:<br/>
 
We have:<br/>
<math>0*\pi_0+0*\pi_1+1*\pi_2=\pi_0</math><br/>
+
<math>0\times \pi_0+0\times \pi_1+1\times \pi_2=\pi_0</math><br/>
<math>1*\pi_0+0*\pi_1+0*\pi_2=\pi_1</math><br/>
+
<math>1\times \pi_0+0\times \pi_1+0\times \pi_2=\pi_1</math><br/>
<math>0*\pi_0+1*\pi_1+0*\pi_2=\pi_2</math><br/>
+
<math>0\times \pi_0+1\times \pi_1+0\times \pi_2=\pi_2</math><br/>
<math>\pi_0+\pi_1+\pi_2=1</math><br/>
+
<math>\,\pi_0+\pi_1+\pi_2=1</math><br/>
 
this gives <math>\pi = \left [ \begin{matrix}
 
this gives <math>\pi = \left [ \begin{matrix}
 
\frac{1}{3} & \frac{1}{3} & \frac{1}{3} \\[6pt]
 
\frac{1}{3} & \frac{1}{3} & \frac{1}{3} \\[6pt]
Line 4,429: Line 4,697:
 
In general, there are chains with stationery distributions that don't converge, this means that they have stationary distribution but are not limiting.<br/>
 
In general, there are chains with stationery distributions that don't converge, this means that they have stationary distribution but are not limiting.<br/>
  
 +
=== MatLab Code ===
 +
<pre style='font-size:14px'>
 +
MATLAB
 +
>> P=[0, 1, 0;0, 0, 1; 1, 0, 0]
  
'''Example:'''
+
P =
 
 
<math> P= \left [ \begin{matrix}
 
\frac{4}{5} & \frac{1}{5} & 0 & 0 \\[6pt]
 
\frac{1}{5} & \frac{4}{5} & 0 & 0 \\[6pt]
 
0 & 0 & \frac{4}{5} & \frac{1}{5} \\[6pt]
 
0 & 0 & \frac{1}{10} & \frac{9}{10} \\[6pt]
 
\end{matrix} \right] </math>
 
  
This chain converges but is not a limiting distribution as the rows are not the same and it doesn't converge to the stationary distribution.<br />
+
    0    1     0
<br />
+
    0    0     1
Double Stichastic Matrix: a double stichastic matrix is a matrix whose all colums sum to 1 and all rows sum to 1.<br />
+
    1     0     0
If a given transition matrix is a double stichastic matrix with n colums and n rows, then the stationary distribution matrix has all<br/>
 
elements equals to 1/n.<br/>
 
<br/>
 
Example:<br/>
 
For a stansition matrix <math> P= \left [ \begin{matrix}
 
0 & \frac{1}{2} & \frac{1}{2} \\[6pt]
 
\frac{1}{2} & 0 & \frac{1}{2} \\[6pt]
 
\frac{1}{2} & \frac{1}{2} & 0 \\[6pt]
 
\end{matrix} \right] </math>,<br/>
 
The stationary distribution is <math>\pi = \left [ \begin{matrix}
 
\frac{1}{3} & \frac{1}{3} & \frac{1}{3} \\[6pt]
 
\end{matrix} \right] </math> <br/>
 
  
 +
>> pii=[1/3, 1/3, 1/3]
  
<span style="font-size:20px;color:red">The following contents are problematic. Please correct it if possible.</span><br />
+
pii =
Suppose we're given that the limiting distribution <math> \pi </math> exists for  stochastic matrix P, that is, <math> \pi = \pi * P </math> <br>
 
  
WLOG assume P is diagonalizable, (if not we can always consider the Jordan form and the computation below is exactly the same. <br>
+
    0.3333    0.3333    0.3333
  
Let <math> P = U * \Sigma * U^{-1} </math> be the eigenvalue decomposition of <math> P </math>, where <math>\Sigma = diag(\lambda_1,\ldots,\lambda_n) ; |\lambda_i| > |\lambda_j|, \forall i < j </math><br>
+
>> pii*P
  
Suppose <math> \pi^T = \sum a_i u_i </math> where <math> a_i \in \mathcal{R} </math> and <math> u_i </math> are eigenvectors of <math> P </math> for <math> i = 1\ldots n </math> <br>
+
ans =
  
By definition: <math> \pi^k = \pi*P = \pi*P^k \implies \pi = \pi*(U * \Sigma * U^{-1}) *(U * \Sigma * U^{-1} )*\ldots*(U * \Sigma * U^{-1}) </math> <br>
+
    0.3333    0.3333    0.3333
  
Therefore <math> \pi^k = \sum a_i * \lambda_i^k u_i </math> since <math> <u_i , u_j> = 0, \forall i\neq j </math>. <br>
+
>> P^1000
  
Therefore <math> \lim_{k \rightarrow \infty} \pi^k = \lim_{k \rightarrow \infty}  \lambda_i^k * a_1 * u_1 = u_1 </math>
+
ans =
  
=== MatLab Code ===
+
    0    1    0
<pre style='font-size:14px'>
+
    0    0    1
>> P=[1/3, 1/3, 1/3; 1/4, 3/4, 0; 1/2, 0, 1/2]      % We input a matrix P.This is the same matrix as last class. 
+
    1     0     0
  
P =
+
>> P^10000
  
    0.3333    0.3333    0.3333
+
ans =
    0.2500    0.7500        0
 
    0.5000        0    0.5000
 
  
>> P^2
+
    0    1    0
 +
    0    0    1
 +
    1    0    0
  
ans =
+
>> P^10002
 
 
    0.3611    0.3611    0.2778
 
    0.2708    0.6458    0.0833
 
    0.4167    0.1667    0.4167
 
 
 
>> P^3
 
  
 
ans =
 
ans =
  
     0.3495    0.3912    0.2593
+
    1     0     0
     0.2934    0.5747    0.1319
+
    0     1     0
     0.3889    0.2639    0.3472
+
    0     0    1
  
>> P^10
+
>> P^10003
 
 
the example of code and an example of stand distribution, then the all the pi probability in the matrix are the same.
 
  
 
ans =
 
ans =
  
     0.3341    0.4419    0.2240
+
    0    1     0
     0.3314    0.4507    0.2179
+
    0     0     1
     0.3360    0.4358    0.2282
+
    1     0    0
  
>> P^100                                            % The stationary distribution is [0.3333 0.4444 0.2222] since values keep unchanged.
+
>> %P^10000 = P^10003
 +
>> % This chain does not have limiting distribution, it has a stationary distribution.   
  
ans =
+
This chain does not converge, it has a cycle.
 +
</pre>
  
    0.3333    0.4444    0.2222
+
The first condition of limiting distribution is satisfied; however, the second condition where <math>\pi</math><sub>j</sub> has to be independent of i (i.e. all rows of the matrix are the same) is not met.<br>
    0.3333    0.4444    0.2222
 
    0.3333    0.4444    0.2222
 
  
 +
This example shows the distinction between having a stationary distribution and convergence(having a limiting distribution).Note: <math>\pi=(1/3,1/3,1/3)</math> is the stationary distribution as <math>\pi=\pi*p</math>. However, upon repeatedly multiplying P by itself (repeating the step <math>P^n</math> as n goes to infinite) one will note that the results become a cycle (of period 3) of the same sequence of matrices. The chain has a stationary distribution, but does not converge to it. Thus, there is no limiting distribution.<br>
  
>> [vec val]=eigs(P')                              % We can find the eigenvalues and eigenvectors from the transpose of matrix P.
+
'''Example:'''
  
vec =
+
<math> P= \left [ \begin{matrix}
 +
\frac{4}{5} & \frac{1}{5} & 0 & 0 \\[6pt]
 +
\frac{1}{5} & \frac{4}{5} & 0 & 0 \\[6pt]
 +
0 & 0 & \frac{4}{5} & \frac{1}{5} \\[6pt]
 +
0 & 0 & \frac{1}{10} & \frac{9}{10} \\[6pt]
 +
\end{matrix} \right] </math>
  
  -0.5571    0.2447    0.8121
+
This chain converges but is not a limiting distribution as the rows are not the same and it doesn't converge to the stationary distribution.<br />
  -0.7428  -0.7969  -0.3324
+
<br />
  -0.3714    0.5523  -0.4797
+
Double Stichastic Matrix: a double stichastic matrix is a matrix whose all colums sum to 1 and all rows sum to 1.<br />
 +
If a given transition matrix is a double stichastic matrix with n colums and n rows, then the stationary distribution matrix has all<br/>
 +
elements equals to 1/n.<br/>
 +
<br/>
 +
Example:<br/>
 +
For a stansition matrix <math> P= \left [ \begin{matrix}
 +
0 & \frac{1}{2} & \frac{1}{2} \\[6pt]
 +
\frac{1}{2} & 0 & \frac{1}{2} \\[6pt]
 +
\frac{1}{2} & \frac{1}{2} & 0 \\[6pt]
 +
\end{matrix} \right] </math>,<br/>
 +
We have:<br/>
 +
<math>0\times \pi_0+\frac{1}{2}\times \pi_1+\frac{1}{2}\times \pi_2=\pi_0</math><br/>
 +
<math>\frac{1}{2}\times \pi_0+0\times \pi_1+\frac{1}{2}\times \pi_2=\pi_1</math><br/>
 +
<math>\frac{1}{2}\times \pi_0+\frac{1}{2}\times \pi_1+0\times \pi_2=\pi_2</math><br/>
 +
<math>\pi_0+\pi_1+\pi_2=1</math><br/>
 +
The stationary distribution is <math>\pi = \left [ \begin{matrix}
 +
\frac{1}{3} & \frac{1}{3} & \frac{1}{3} \\[6pt]
 +
\end{matrix} \right] </math> <br/>
  
  
val =
+
<span style="font-size:20px;color:red">The following contents are problematic. Please correct it if possible.</span><br />
 +
Suppose we're given that the limiting distribution <math> \pi </math> exists for  stochastic matrix P, that is, <math> \pi = \pi \times P </math> <br>
  
    1.0000        0        0
+
WLOG assume P is diagonalizable, (if not we can always consider the Jordan form and the computation below is exactly the same. <br>
        0    0.6477        0
 
        0        0  -0.0643
 
  
>> a=-vec(:,1)                                    % The eigenvectors can be mutiplied by (-1) since  λV=AV  can be written as  λ(-V)=A(-V)
+
Let <math> P = U  \Sigma  U^{-1} </math> be the eigenvalue decomposition of <math> P </math>, where <math>\Sigma = diag(\lambda_1,\ldots,\lambda_n) ; |\lambda_i| > |\lambda_j|, \forall i < j </math><br>
  
a =
+
Suppose <math> \pi^T = \sum a_i u_i </math> where <math> a_i \in \mathcal{R} </math> and <math> u_i </math> are eigenvectors of <math> P </math> for <math> i = 1\ldots n </math> <br>
  
    0.5571
+
By definition: <math> \pi^k = \pi P = \pi P^k \implies \pi = \pi(U  \Sigma  U^{-1}) (U  \Sigma  U^{-1} ) \ldots (U  \Sigma  U^{-1}) </math> <br>
    0.7428
 
    0.3714
 
  
  >> sum(a)
+
Therefore <math> \pi^k = \sum a_i  \lambda_i^k u_i </math> since <math> <u_i , u_j> = 0, \forall i\neq j </math>. <br>
  
ans =
+
Therefore <math> \lim_{k \rightarrow \infty} \pi^k = \lim_{k \rightarrow \infty}  \lambda_i^k  a_1  u_1 = u_1 </math>
  
    1.6713
+
=== MatLab Code ===
 +
<pre style='font-size:14px'>
 +
>> P=[1/3, 1/3, 1/3; 1/4, 3/4, 0; 1/2, 0, 1/2]      % We input a matrix P. This is the same matrix as last class.
  
>> a/sum(a)
+
P =
  
ans =
+
    0.3333    0.3333    0.3333
 +
    0.2500    0.7500        0
 +
    0.5000        0    0.5000
  
    0.3333
+
>> P^2
    0.4444
 
    0.2222
 
</pre>
 
  
This is <math>\pi_j = lim[p^n]_(ij)</math> exist and is independent of i
+
ans =
  
Example: Find the stationary distribution of P= <math>\left[ {\begin{array}{ccc}
+
    0.3611    0.3611    0.2778
0 & 1 & 0 \\
+
    0.2708    0.6458    0.0833
0 & 0 & 1 \\
+
    0.4167    0.1667    0.4167
1 & 0 & 0 \end{array} } \right]</math>
 
  
<math>\pi=\pi~P</math><br>
+
>> P^3
  
<math>\pi=</math> [<math>\pi</math><sub>0</sub>, <math>\pi</math><sub>1</sub>, <math>\pi</math><sub>2</sub>]<br>
+
ans =
  
The system of equations is:
+
    0.3495    0.3912    0.2593
 +
    0.2934    0.5747    0.1319
 +
    0.3889    0.2639    0.3472
  
0*<math>\pi</math><sub>0</sub>+0*<math>\pi</math><sub>1</sub>+1*<math>\pi</math><sub>2</sub> = <math>\pi</math><sub>0</sub> => <math>\pi</math><sub>2</sub> = <math>\pi</math><sub>0</sub><br>
+
>> P^10
1*<math>\pi</math><sub>0</sub>+0*<math>\pi</math><sub>1</sub>+0*<math>\pi</math><sub>2</sub> = <math>\pi</math><sub>1</sub> => <math>\pi</math><sub>1</sub> = <math>\pi</math><sub>0</sub><br>
 
0*<math>\pi</math><sub>0</sub>+1*<math>\pi</math><sub>1</sub>+0*<math>\pi</math><sub>2</sub> = <math>\pi</math><sub>2</sub> <br>
 
<math>\pi</math><sub>0</sub>+<math>\pi</math><sub>1</sub>+<math>\pi</math><sub>2</sub> = 1<br>
 
  
<math>\pi</math><sub>0</sub>+<math>\pi</math><sub>0</sub>+<math>\pi</math><sub>0</sub> = 3<math>\pi</math><sub>0</sub> = 1, which gives <math>\pi</math><sub>0</sub> = 1/3 <br>
+
The example of code and an example of stand distribution, then the all the pi probability in the matrix are the same.
Also, <math>\pi</math><sub>1</sub> = <math>\pi</math><sub>2</sub> = 1/3 <br>
 
So, <math>\pi</math> = <math>[\frac{1}{3}, \frac{1}{3}, \frac{1}{3}]</math> <br>
 
  
when the p matrix is a standard matrix, then all the probabilities of pi are the same in the matrix.
+
ans =
  
=== MatLab Code ===
+
    0.3341    0.4419    0.2240
<pre style='font-size:14px'>
+
    0.3314    0.4507    0.2179
MATLAB
+
    0.3360    0.4358    0.2282
>> P=[0, 1, 0;0, 0, 1; 1, 0, 0]
 
  
P =
+
>> P^100                                  % The stationary distribution is [0.3333 0.4444 0.2222]  since values keep unchanged.
  
    0    1    0
+
ans =
    0    0    1
 
    1    0    0
 
  
>> pii=[1/3, 1/3, 1/3]
+
    0.3333    0.4444    0.2222
 +
    0.3333    0.4444    0.2222
 +
    0.3333    0.4444    0.2222
  
pii =
 
  
    0.3333    0.3333    0.3333
+
>> [vec val]=eigs(P')                    % We can find the eigenvalues and eigenvectors from the transpose of matrix P.
  
>> pii*P
+
vec =
  
ans =
+
  -0.5571    0.2447    0.8121
 +
  -0.7428  -0.7969  -0.3324
 +
  -0.3714    0.5523  -0.4797
  
    0.3333    0.3333    0.3333
 
  
>> P^1000
+
val =
  
ans =
+
    1.0000        0        0
 +
        0    0.6477        0
 +
        0        0  -0.0643
  
    0    1     0
+
>> a=-vec(:,1)                            % The eigenvectors can be mutiplied by (-1) since  λV=AV  can be written as  λ(-V)=A(-V)
    0    0    1
 
    1    0    0
 
  
>> P^10000
+
a =
  
ans =
+
    0.5571
 +
    0.7428
 +
    0.3714
  
    0    1    0
+
>> sum(a)
    0    0    1
 
    1    0    0
 
 
 
>> P^10002
 
  
 
ans =
 
ans =
  
    1    0    0
+
     1.6713
    0    1    0
 
    0    0     1
 
  
>> P^10003
+
>> a/sum(a)
  
 
ans =
 
ans =
  
    0    1     0
+
     0.3333
    0     0     1
+
     0.4444
    1    0     0
+
     0.2222
 
 
>> %P^10000 = P^10003
 
>> % This chain does not have limiting distribution, it has a stationary distribution. 
 
 
 
This chain does not converge, it has a cycle.
 
 
</pre>
 
</pre>
  
The first condition of limiting distribution is satisfied; however, the second condition where <math>\pi</math><sub>j</sub> has to be independent of i (i.e. all rows of the matrix are the same) is not met.<br>
+
This is <math>\pi_j = lim[p^n]_(ij)</math> exist and is independent of i
 
 
This example shows the distinction between having a stationary distribution and convergence(having a limiting distribution).Note: <math>\pi=(1/3,1/3,1/3)</math> is the stationary distribution as <math>\pi=\pi*p</math>. However, upon repeatedly multiplying P by itself (repeating the step <math>P^n</math> as n goes to infinite) one will note that the results become a cycle (of period 3) of the same sequence of matrices. The chain has a stationary distribution, but does not converge to it. Thus, there is no limiting distribution.<br>
 
  
 
Another example:
 
Another example:
Line 4,671: Line 4,921:
  
 
'''Note:'''if there's a finite number N then every other state can be reached in N steps.
 
'''Note:'''if there's a finite number N then every other state can be reached in N steps.
'''Note:'''Also note that a Ergodic chain is irreducible (all states communicate) and aperiodic (d = 1). An Ergodic chain is promised to have a stationary distribution.
+
'''Note:'''Also note that a Ergodic chain is irreducible (all states communicate) and aperiodic (d = 1). An Ergodic chain is promised to have a stationary and limiting distribution.<br/>
 +
'''Ergodicity:''' A state i is said to be ergodic if it is aperiodic and positive recurrent. In other words, a state i is ergodic if it is recurrent, has a period of 1 and it has finite mean recurrence time. If all states in an irreducible Markov chain are ergodic, then the chain is said to be ergodic.<br/>
 +
'''Some more:'''It can be shown that a finite state irreducible Markov chain is ergodic if it has an aperiodic state. A model has the ergodic property if there's a finite number N such that any state can be reached from any other state in exactly N steps. In case of a fully connected transition matrix where all transitions have a non-zero probability, this condition is fulfilled with N=1.<br/>
  
  
Line 4,741: Line 4,993:
 
<math> \pi_0 = \frac{4}{19} </math> <br>
 
<math> \pi_0 = \frac{4}{19} </math> <br>
 
<math> \pi = [\frac{4}{19}, \frac{15}{19}] </math> <br>
 
<math> \pi = [\frac{4}{19}, \frac{15}{19}] </math> <br>
<math> \pi </math> is the long run distribution
+
<math> \pi </math> is the long run distribution, and this is also a limiting distribution.
  
 
We can use the stationary distribution to compute the expected waiting time to return to state 'a' <br/>
 
We can use the stationary distribution to compute the expected waiting time to return to state 'a' <br/>
Line 4,748: Line 5,000:
 
state 'a' given that we start at state 'a' is 19/4.<br/>
 
state 'a' given that we start at state 'a' is 19/4.<br/>
  
definition of limiting distribution.
+
definition of limiting distribution: when the stationary distribution is convergent, it is a limiting distribution.<br/>
  
 
remark:satisfied balance of <math>\pi_i P_{ij} = P_{ji} \pi_j</math>, so there is other way to calculate the step probability.
 
remark:satisfied balance of <math>\pi_i P_{ij} = P_{ji} \pi_j</math>, so there is other way to calculate the step probability.
Line 4,848: Line 5,100:
 
<math>\Pi</math> satisfies detailed balance if <math>\Pi_i P_{ij}=P_{ji} \Pi_j</math>. Detailed balance guarantees that <math>\Pi</math> is stationary distribution.<br />
 
<math>\Pi</math> satisfies detailed balance if <math>\Pi_i P_{ij}=P_{ji} \Pi_j</math>. Detailed balance guarantees that <math>\Pi</math> is stationary distribution.<br />
  
'''Adjacency matrix''' - a matrix <math>A</math> that dictates which states are connected and way of portraying which vertices in the matrix are adjacent. If we compute <math>A^2</math>, we can know which states are connected with paths of length 2.<br />
+
'''Adjacency matrix''' - a matrix <math>A</math> that dictates which states are connected and way of portraying which vertices in the matrix are adjacent. Two vertices are adjacent if there exists a path between them of length 1.If we compute <math>A^2</math>, we can know which states are connected with paths of length 2.<br />
  
 
A '''Markov chain''' is called an irreducible chain if it is possible to go from every state to every state (not necessary in one more).<br />
 
A '''Markov chain''' is called an irreducible chain if it is possible to go from every state to every state (not necessary in one more).<br />
Line 4,873: Line 5,125:
  
 
<math>\pi_2 P_{2,3} = 4/9 \times 0 = 0,\, P_{3,2} \pi_3 = 0 \times 2/9 = 0 \Rightarrow \pi_2 P_{2,3} = P_{3,2} \pi_3</math><br>
 
<math>\pi_2 P_{2,3} = 4/9 \times 0 = 0,\, P_{3,2} \pi_3 = 0 \times 2/9 = 0 \Rightarrow \pi_2 P_{2,3} = P_{3,2} \pi_3</math><br>
Remark:Detailed balance of <math> \pi_i * Pij = Pji * \pi_j</math> , so there is other way to calculate the step probability<br />
+
Remark:Detailed balance of <math> \pi_i \times Pij = Pji \times \pi_j</math> , so there is other way to calculate the step probability<br />
 
<math>\pi</math> is stationary but is not limiting.
 
<math>\pi</math> is stationary but is not limiting.
Detailed balance guarantees that <math>\pi</math> is stationary distribution.
+
Detailed balance implies that <math>\pi</math> = <math>\pi</math> * P as shown in the proof and guarantees that <math>\pi</math> is stationary distribution.
  
 
== Class 15 - Tuesday June 25th 2013 ==
 
== Class 15 - Tuesday June 25th 2013 ==
Line 4,882: Line 5,134:
  
 
====Detailed balance====
 
====Detailed balance====
 
+
<div style="border:2px solid black">
 +
<b>Definition (from wikipedia)</b>
 +
The principle of detailed balance is formulated for kinetic systems which are decomposed into elementary processes (collisions, or steps, or elementary reactions): At equilibrium, each elementary process should be equilibrated by its reverse process.
 +
</div>
 
Let <math>P</math> be the transition probability matrix of a Markov chain. If there exists a distribution vector <math>\pi</math> such that <math>\pi_i \cdot P_{ij}=P_{ji} \cdot \pi_j, \; \forall i,j</math>, then the Markov chain is said to have '''detailed balance'''. A detailed balanced Markov chain must have <math>\pi</math> given above as a stationary distribution, that is <math>\pi=\pi P</math>, where <math>\pi</math> is a 1 by n matrix and P is a n by n matrix.<br>
 
Let <math>P</math> be the transition probability matrix of a Markov chain. If there exists a distribution vector <math>\pi</math> such that <math>\pi_i \cdot P_{ij}=P_{ji} \cdot \pi_j, \; \forall i,j</math>, then the Markov chain is said to have '''detailed balance'''. A detailed balanced Markov chain must have <math>\pi</math> given above as a stationary distribution, that is <math>\pi=\pi P</math>, where <math>\pi</math> is a 1 by n matrix and P is a n by n matrix.<br>
  
  
 
+
need to remember:
 
'''Proof:''' <br>
 
'''Proof:''' <br>
 
<math>\; [\pi P]_j = \sum_i \pi_i P_{ij} =\sum_i P_{ji}\pi_j =\pi_j\sum_i P_{ji} =\pi_j  ,\forall j</math>
 
<math>\; [\pi P]_j = \sum_i \pi_i P_{ij} =\sum_i P_{ji}\pi_j =\pi_j\sum_i P_{ji} =\pi_j  ,\forall j</math>
Line 4,903: Line 5,158:
 
=== PageRank (http://en.wikipedia.org/wiki/PageRank) ===
 
=== PageRank (http://en.wikipedia.org/wiki/PageRank) ===
  
 +
*PageRank is a probability distribution used to represent the likelihood that a person randomly clicking on links will arrive at any particular page. PageRank can be calculated for collections of documents of any size.
 
*PageRank is a link-analysis algorithm developed by and named after Larry Page from Google; used for measuring a website's importance, relevance and popularity.
 
*PageRank is a link-analysis algorithm developed by and named after Larry Page from Google; used for measuring a website's importance, relevance and popularity.
 
*PageRank is a graph containing web pages and their links to each other.
 
*PageRank is a graph containing web pages and their links to each other.
Line 4,910: Line 5,166:
  
 
<br />'''The order of importance'''<br />
 
<br />'''The order of importance'''<br />
1. A web page is important if many other pages point to it<br />
+
1. A web page is more important if many other pages point to it<br />
 
2. The more important a web page is, the more weight should be assigned to its outgoing links<br/ >
 
2. The more important a web page is, the more weight should be assigned to its outgoing links<br/ >
 
3. If a webpage has many outgoing links, then its links have less value (ex: if a page links to everyone, like 411, it is not as important as pages that have incoming links)<br />
 
3. If a webpage has many outgoing links, then its links have less value (ex: if a page links to everyone, like 411, it is not as important as pages that have incoming links)<br />
Line 4,932: Line 5,188:
 
Page 2 comes after page 4 since it has the third most links pointing to it<br/>
 
Page 2 comes after page 4 since it has the third most links pointing to it<br/>
 
Page 1 and page 5 are the least important since no links point to them<br/ >
 
Page 1 and page 5 are the least important since no links point to them<br/ >
<math>As page 1</math> and page 2 has the most outgoing links, then their links have less value compared to the other pages. <br/ >
+
As page 1 and page 2 have the most outgoing links, then their links have less value compared to the other pages. <br/ >
  
 
:<math>
 
:<math>
Line 4,941: Line 5,197:
  
 
<br />
 
<br />
C<sub>j</sub> The number of outgoing links of page <math>j</math>:
+
<math>C_j=</math> The number of outgoing links of page <math>j</math>:
 
<math>C_j=\sum_i L_{ij}</math>
 
<math>C_j=\sum_i L_{ij}</math>
 
(i.e. sum of entries in column j)<br />
 
(i.e. sum of entries in column j)<br />
Line 4,952: Line 5,208:
 
<math>P_i=\sum_j L_{ij}</math> <br />(i.e. sum of entries in row i)
 
<math>P_i=\sum_j L_{ij}</math> <br />(i.e. sum of entries in row i)
  
for each row, if there is a 1 in the third column, it means page three point to that page.
+
For each row of <math>L</math>, if there is a 1 in the third column, it means page three point to that page.
 +
 
 +
However, we should not define the rank of the page this way because links shouldn't be treated the same. The weight of the link is based on different factors. One of the factors is the importance of the page that link is coming from. For example, in this case, there are two links going to Page 4: one from Page 2 and one from Page 5. So far, both links have been treated equally with the same weight 1. But we must rerate the two links based on the importance of the pages they are coming from.
  
 
A PageRank results from a mathematical algorithm based on the webgraph, created by all World Wide Web pages as nodes and hyperlinks as edges, taking into consideration authority hubs such as cnn.com or usa.gov. The rank value indicates an importance of a particular page. A hyperlink to a page counts as a vote of support. (This would be represented in our diagram as an arrow pointing towards the page. Hence in our example, Page 3 is the most important, since it has the most 'votes of support). The PageRank of a page is defined recursively and depends on the number and PageRank metric of all pages that link to it ("incoming links"). A page that is linked to by many pages with high PageRank receives a high rank itself. If there are no links to a web page, then there is no support for that page (In our example, this would be Page 1 and Page 5).
 
A PageRank results from a mathematical algorithm based on the webgraph, created by all World Wide Web pages as nodes and hyperlinks as edges, taking into consideration authority hubs such as cnn.com or usa.gov. The rank value indicates an importance of a particular page. A hyperlink to a page counts as a vote of support. (This would be represented in our diagram as an arrow pointing towards the page. Hence in our example, Page 3 is the most important, since it has the most 'votes of support). The PageRank of a page is defined recursively and depends on the number and PageRank metric of all pages that link to it ("incoming links"). A page that is linked to by many pages with high PageRank receives a high rank itself. If there are no links to a web page, then there is no support for that page (In our example, this would be Page 1 and Page 5).
Line 4,977: Line 5,235:
  
 
=== Page Rank ===
 
=== Page Rank ===
<math>L_{ij}</math> equals 1 if j has a link to i, and equals 0 otherwise. <br>
+
*<math>
<math>C_j</math> :The number of outgoing links for page j, where <math>c_j=\sum_i L_{ij}</math>  
+
L_{ij} = \begin{cases}
 +
1, & \text{if j has a link to i }  \\
 +
0, & \text{otherwise} \end{cases} </math> <br/>
 +
 
 +
*<math>C_j</math>: number of outgoing links for page j, where <math>c_j=\sum_i L_{ij}</math>  
  
 
P is N by 1 vector contains rank of all N pages; for page i, the rank is <math>P_i</math>
 
P is N by 1 vector contains rank of all N pages; for page i, the rank is <math>P_i</math>
  
 
<math>P_i= (1-d) + d\cdot \sum_j \frac {L_{ji}P_j}{c_j}</math>
 
<math>P_i= (1-d) + d\cdot \sum_j \frac {L_{ji}P_j}{c_j}</math>
 +
pi is the rank of a new created page(that no one knows about) is 0 since <math>L_ij</math> is 0 <br/>
 +
where 0 < d < 1 is constant (in original page rank algorithm d = 0.8), and <math>L_{ij}</math> is 1 if j has link to i, 0 otherwise.
  
where 0 < d < 1 is constant (in original page rank algorithm d = 0.8), and <math>L_{ij}</math> is 1 if j has link to i, 0 otherwise.
+
Note that the rank of a page is proportional to the number of its incoming links and inversely proportional to the number of its outgoing links.
  
 
Interpretation of the formula:<br/>
 
Interpretation of the formula:<br/>
Line 4,992: Line 5,256:
 
4) finally, we take a linear combination of the page rank obtained from above and a constant 1. This ensures that every page has a rank greater than zero.<br/>
 
4) finally, we take a linear combination of the page rank obtained from above and a constant 1. This ensures that every page has a rank greater than zero.<br/>
 
5) d is the damping factor.  It represents the probability a user, at any page, will continue clicking to another page.<br/>
 
5) d is the damping factor.  It represents the probability a user, at any page, will continue clicking to another page.<br/>
 +
If there is no damping (i.e. d=1), then there are no assumed outgoing links for nodes with no links. However, if there is damping (e.g. d=0.8), then these nodes are assumed to have links to all pages in the web.
  
 
Note that this is a system of N equations with N unknowns.<br/>
 
Note that this is a system of N equations with N unknowns.<br/>
Line 5,009: Line 5,274:
 
0 & 0 & ... & c_N \end{matrix} } \right]</math>
 
0 & 0 & ... & c_N \end{matrix} } \right]</math>
  
Then <math>P=~(1-d)e+dLD^{-1}P</math><br/> where e =[1 1 ....]<sup>T</sup> , i.e. a N by 1 vector.<br/>
+
Then <math>P=~(1-d)e+dLD^{-1}P</math>, P is an iegenvector of matrix A corresponding to an eigenvalue equal to 1.<br/> where e =[1 1 ....]<sup>T</sup> , i.e. a N by 1 vector.<br/>
 
We assume that rank of all N pages sums to N. The sum of rank of all N pages can be any number, as long as the ranks have certain propotion. <br/>
 
We assume that rank of all N pages sums to N. The sum of rank of all N pages can be any number, as long as the ranks have certain propotion. <br/>
 
i.e. e<sup>T</sup> P = N, then <math>~\frac{e^{T}P}{N} = 1</math>
 
i.e. e<sup>T</sup> P = N, then <math>~\frac{e^{T}P}{N} = 1</math>
Line 5,033: Line 5,298:
  
 
<math>P=[(1-d)~\frac{ee^T}{N}+dLD^{-1}]P</math>
 
<math>P=[(1-d)~\frac{ee^T}{N}+dLD^{-1}]P</math>
 +
 +
<math>=> P=A*P</math>
  
 
'''Explanation of an eigenvector'''
 
'''Explanation of an eigenvector'''
Line 5,039: Line 5,306:
 
That is, A*v = c*v. Where c is the eigenvalue of A corresponding to the eigenvector v. In our case of Page Rank, the eigenvalue c=1. <br>
 
That is, A*v = c*v. Where c is the eigenvalue of A corresponding to the eigenvector v. In our case of Page Rank, the eigenvalue c=1. <br>
  
P=AP
+
We obtain that <math>P=AP</math> where <math>A=(1-d)~\frac{ee^T}{N}+dLD^{-1}</math><br/>
 +
Thus, <math>P</math> is an eigenvector of <math>P</math> correspond to an eigen value equals 1.<br/>
  
  
N is a N*N matrix,  
+
Since,
 
L is a N*N matrix,
 
L is a N*N matrix,
 
D<sup>-1</sup> is a N*N matrix,  
 
D<sup>-1</sup> is a N*N matrix,  
P is a N*1 matrix
+
P is a N*1 matrix <br/>
d is a constant between 0 and 1
+
Then as a result, <math>LD^{-1}P</math> is a N*1 matrix. <br/>
 +
 
 +
N is a N*N matrix, d is a constant between 0 and 1.
  
 
'''P=AP'''<br />
 
'''P=AP'''<br />
Line 5,061: Line 5,331:
 
=== Damping Factor "d" ===
 
=== Damping Factor "d" ===
  
The PageRank assumes that any imaginary user who is randomly clicking on links will eventually stop clicking. The probability, at any step, that the person will keep on clicking is a damping factor, "d". After many studies, the approximation of "d" is 0.85. Other values for "d" have been used in class and may appear on assignments and exams.
+
The PageRank assumes that any imaginary user who is randomly clicking on links will eventually stop clicking. The probability, at any step, that the person will keep on clicking is a damping factor, <math>d</math>. After many studies, the approximation of <math>d</math> is 0.85. Other values for <math>d</math> have been used in class and may appear on assignments and exams.<br/>
 +
 
 +
In addition, <math>d</math> is a vector of ranks that are arbitrary. For example the rank can be [1 3 2], or [10 30 20], or [0.1 0.3 0.2]. All three of these examples are relative/equivalent since they are ranks, we could even have [1 10 3]. Therefore, <math>d</math> must have a relative rank.<br/>
 +
 
 +
So <math>P_1 + P_2 + \cdots + P_n=N</math> <br/>
 +
Which is equivalent to:
 +
<math>e^{T}P= [1 \cdots 1] [P_1 \cdots P_n]^T </math> <br/>
 +
Where <math>[1 \cdots 1]</math> is a 1 scalar vector and <math>[P_1 \cdots P_n]^T</math> is a rank vector. <br/>
 +
So <math>e^{T}P=N -> (e^{T}P)/N = 1 </math>
  
 
===Examples===
 
===Examples===
Line 5,169: Line 5,447:
 
'''NOTE:''' Page 2 is the most important page because it has 2 incomings. Similarly, page 3 is more important than page 1 because page 3 has the incoming result from page 2.
 
'''NOTE:''' Page 2 is the most important page because it has 2 incomings. Similarly, page 3 is more important than page 1 because page 3 has the incoming result from page 2.
  
This example is similar to the first example, but here, page 3 can go back to page 2, so the matrix of the outgoing matrix, the third column of the D matrix is 3 in the third row. And we use the code to calculate the p=Ap.
+
This example is similar to the first example, but here, page 3 can go back to page 2, so the matrix of the outgoing matrix, the third column of the D matrix is 3 in the third row. And we use the code to calculate the p=Ap. Therefore 2, 3, 1 is the order of importance.
  
 
==== Example 3 ====
 
==== Example 3 ====
Line 5,202: Line 5,480:
 
Consider: 1 -> ,<-2 ->3
 
Consider: 1 -> ,<-2 ->3
  
L= [0 1 0; 1 0 0; 0 1 0]; c=[1,1,1]; D= [1 0 0; 0 1 0; 0 0 1]
+
<math>L=  
 +
\left[ {\begin{matrix}
 +
0 & 1 & 0 \\
 +
1 & 0 & 0 \\
 +
0 & 1 & 0 \end{matrix} } \right]\;
 +
c=  
 +
\left[ {\begin{matrix}
 +
1 & 1 & 1 \end{matrix} } \right]\;
 +
D=  
 +
\left[ {\begin{matrix}
 +
1 & 0 & 0 \\
 +
0 & 1 & 0 \\
 +
0 & 0 & 1 \end{matrix} } \right]</math>
  
 
==== Example 4 ====
 
==== Example 4 ====
  
 
<math>1 \leftrightarrow 2 \rightarrow 3 \leftrightarrow 4 </math>
 
<math>1 \leftrightarrow 2 \rightarrow 3 \leftrightarrow 4 </math>
<br />
 
 
<br />
 
<br />
 
<br />
 
<br />
Line 5,215: Line 5,504:
 
1 & 0 & 0 & 0 \\
 
1 & 0 & 0 & 0 \\
 
0 & 1 & 0 & 1 \\
 
0 & 1 & 0 & 1 \\
0 & 0 & 1 & 0 \end{matrix} } \right]\;
+
0 & 0 & 1 & 0 \end{matrix} } \right]\;</math><br />
c=
 
\left[ {\begin{matrix}
 
1 & 2 & 1 & 1 \end{matrix} } \right]\;
 
D=
 
\left[ {\begin{matrix}
 
1 & 0 & 0 & 0 \\
 
0 & 2 & 0 & 0 \\
 
0 & 0 & 1 & 0  \\
 
0 & 0 & 0 & 1 \end{matrix} } \right]</math><br />
 
 
 
Matlab code
 
<pre style='font-size:14px'>
 
  
 +
'''Matlab Code:'''<br>
 +
<pre style='font-size:16px'>
 
>> L=L= [0 1 0 0;1 0 0 0;0 1 0 1;0 0 1 0];
 
>> L=L= [0 1 0 0;1 0 0 0;0 1 0 1;0 0 1 0];
 
>> C=sum(L);
 
>> C=sum(L);
Line 5,234: Line 5,513:
 
>> d=0.8;
 
>> d=0.8;
 
>> N=4;
 
>> N=4;
>> A=(1-d)*ones(N)/N+d*L*pinv(D)
+
>> A=(1-d)*ones(N)/N+d*L*pinv(D);
 
+
>> [vec val]=eigs(A);
A =
+
>> a=vec(:,1);
 
 
    0.0500    0.4500    0.0500    0.0500
 
    0.8500    0.0500    0.0500    0.0500
 
    0.0500    0.4500    0.0500    0.8500
 
    0.0500    0.0500    0.8500    0.0500
 
 
 
>> [vec val]=eigs(A)
 
 
 
vec =
 
 
 
    0.1817  -0.0000  -0.4082    0.4082
 
    0.2336    0.0000    0.5774    0.5774
 
    0.7009  -0.7071    0.4082  -0.4082
 
    0.6490    0.7071  -0.5774  -0.5774
 
 
 
 
 
val =
 
 
 
    1.0000        0        0        0
 
        0  -0.8000        0        0
 
        0        0  -0.5657        0
 
        0        0        0    0.5657
 
 
 
>> a=vec(:,1)
 
 
 
>> a=vec(:,1)
 
 
 
a =
 
 
 
    0.1817
 
    0.2336
 
    0.7009
 
    0.6490
 
 
 
 
>> a=a/sum(a)
 
>> a=a/sum(a)
 +
    a =
 +
        0.1029 <- Page 1
 +
        0.1324 <- Page 2
 +
        0.3971 <- Page 3
 +
        0.3676 <- Page 4
  
a =
+
        % Therefore the PageRank for this matrix is: 3,4,2,1
 
 
    0.1029
 
    0.1324
 
    0.3971
 
    0.3676
 
 
</pre>
 
</pre>
'''NOTE:''' The ranking of each page is as follows: Page 3, Page 4, Page 2 and Page 1. Page 3 is the highest since it has the most incoming links. All of the other pages only have one incoming link but since Page 3, highest ranked page, links to Page 4, Page 4 is the second highest ranked. Lastly, since Page 2 links into Page 3 it is the next highest rank.
+
<br>
 
 
Page 2 has 2 outgoing links. Pages with the same incoming links can be ranked closest to the highest ranked page. If the highest page P1 is incoming into a page P2,  then P2 is ranked second, and so on.
 
  
 
==== Example 5 ====
 
==== Example 5 ====
Line 5,336: Line 5,579:
 
<br />
 
<br />
  
Matlab Code<br />
+
'''Matlab Code:'''<br />
 
<pre style="font-size:16px">
 
<pre style="font-size:16px">
>> d=0.8
+
>> d=0.8;
 +
>> L=[0 1 0 0 1;1 0 0 0 0;0 1 0 0 0;0 1 1 0 1;0 0 0 1 0];
 +
>> c=sum(L);
 +
>> D=diag(c);
 +
>> N=5;
 +
>> A=(1-d)*ones(N)/N+d*L*pinv(D);
 +
>> [vec val]=eigs(A);
 +
>> a=-vec(:,1);
 +
>> a=a/sum(a) 
 +
    a =
 +
        0.1933 <- Page 1
 +
        0.1946 <- Page 2
 +
        0.0919 <- Page 3
 +
        0.2668 <- Page 4
 +
        0.2534 <- Page 5
  
d =
+
        % Therefore the PageRank for this matrix is: 4,5,2,1,3
 +
</pre>
 +
<br>
  
    0.8000
+
== Class 17 - Tuesday July 2nd 2013 ==
 +
=== Markov Chain Monte Carlo (MCMC) ===
  
>> L=[0 1 0 0 1;1 0 0 0 0;0 1 0 0 0;0 1 1 0 1;0 0 0 1 0]
+
===Introduction===
 +
It is, in general, very difficult to simulate the value of a random vector X whose component random variables are dependent. We will present a powerful approach for generating a vector whose distribution is approximately that of X. This approach, called the Markov Chain Monte Carlo Methods, has the added significance of only requiring that the mass(or density) function of X be specified up to a multiplicative constant, and this, we will see, is of great importance in applications.
 +
(referenced by Sheldon M.Ross,Simulation)
 +
The basic idea used here is to generate a Markov Chain whose stationary distribution is the same as the target distribution.
  
L =
+
====Definition:====
 +
Markov Chain
 +
A Markov Chain is a special form of stochastic process in which <math>\displaystyle X_t</math> depends only on <math> \displaystyle X_{t-1}</math>.
  
    0    1    0    0    1
+
For example,
    1     0    0    0    0
+
:<math>\displaystyle f(X_1,...X_n)= f(X_1)f(X_2|X_1)f(X_3|X_2)...f(X_n|X_{n-1})</math>
    0    1    0    0    0
+
A random Walk is the best example  of a Markov process
    0    1    1    0    1
 
    0    0    0    1    0
 
  
>> c=sum(L)
+
<br>'''Transition Probability:'''<br>
 +
The probability of going from one state to another state.
 +
:<math>p_{ij} = \Pr(X_{n}=j\mid X_{n-1}= i). \,</math>
  
c =
+
<br>'''Transition Matrix:'''<br>
 +
For n states, transition matrix P is an <math>N \times N</math> matrix with entries <math>\displaystyle P_{ij}</math> as below:
 +
Markov Chain Monte Carlo (MCMC) methods are a class of algorithms for sampling from probability distributions based on constructing a Markov chain that has the desired distribution as its equilibrium distribution. The state of the chain after a large number of steps is then used as a sample of the desired distribution. The quality of the sample improves as a function of the number of steps. (http://en.wikipedia.org/wiki/Markov_chain_Monte_Carlo)</span>
  
    1    3    1    1    2
+
<a style="color:red" href="http://www.eecs.berkeley.edu/Pubs/TechRpts/2010/EECS-2010-165.pdf">some notes form UCb</a>
  
>> D=diag(c)
+
'''One of the main purposes of MCMC''' : to simulate samples from a joint distribution where the joint random variables are dependent. In general, this is not easily sampled from. Other methods learned in class allow us to simulate i.i.d random variables, but not dependent variables . In this case, we could sample non-independent random variables using a Markov Chain. Its Markov properties help to simplify the simulation process.
  
D =
 
  
    1    0    0    0    0
+
<b>Basic idea:</b>  Given a probability distribution <math>\pi</math> on a set <math>\Omega</math>, we want to generate random elements of <math>\Omega</math> with distribution <math>\pi</math>. MCMC does that by constructing a Markov Chain with stationary distribution <math>\pi</math> and simulating the chain. After a large number of iterations, the Markov Chain will reach its stationary distribution. By sampling from the Markov chain for large amount of iterations, we are effectively sampling from the desired distribution as the Markov Chain would converge to its stationary distribution <br/>
    0    3    0    0    0
 
    0    0    1    0    0
 
    0    0    0    1    0
 
    0    0    0    0    2
 
  
>> N=5
+
Idea: generate a Markov chain whose stationary distribution is the same as target distribution. <br/>
  
N =
 
  
    5
+
'''Notes'''
  
>> A=(1-d)*ones(N)/N+d*L*pinv(D)
+
# Regardless of the chosen starting point, the Markov Chain will converge to its stationary distribution (if it exists). However, the time taken for the chain to converge depends on its chosen starting point. Typically, the burn-in period is longer if the chain is initialized with a value of low probability density.
 +
# Markov Chain Monte Carlo can be used for sampling from a distribution, estimating the distribution, and computing the mean and optimization (e.g. simulated annealing, more on that later).
 +
# Markov Chain Monte Carlo is used to sample using “local” information. It is used as a generic “problem solving technique” to solve decision/optimization/value problems, but is not necessarily very efficient.
 +
# MCMC methods do not suffer as badly from the "curse of dimensionality" that badly affects efficiency in the acceptance-rejection method. This is because a point is always generated at each time-step according to the Markov Chain regardless of how many dimensions are introduced.
 +
# The goal when simulating with a Markov Chain is to create a chain with the same stationary distribution as the target distribution.
 +
# The MCMC method is usually used in continuous cases but a discrete example is given below.
  
A =
 
  
    0.0400    0.3067    0.0400    0.0400    0.4400
+
'''Some properties of the stationary distribution <math>\pi</math>'''
    0.8400    0.0400    0.0400    0.0400    0.0400
 
    0.0400    0.3067    0.0400    0.0400    0.0400
 
    0.0400    0.3067    0.8400    0.0400    0.4400
 
    0.0400    0.0400    0.0400    0.8400    0.0400
 
  
>> [vec val]=eigs(A)
+
<math>\pi</math> indicates the proportion of time the process spends in each of the states 1,2,...,n. Therefore <math>\pi</math> satisfies the following two inequalities: <br>
  
vec =
+
# <math>\pi_j = \sum_{i=1}^{n}\pi_i P_{ij}</math> <br /> This is because <math>\pi_i</math> is the proportion of time the process spends in state i, and <math>P_{ij}</math> is the probability the process transition out of state i into state j. Therefore, <math>\pi_i p_{ij}</math> is the proportion of time it takes for the process to enter state j. Therefore, <math>\pi_j</math> is the sum of this probability over overall states i.
 +
#<math> \sum_{i=1}^{n}\pi_i= 1 </math> as <math>\pi</math> shows the proportion of time the chain is in each state. If we view it as the probability of the chain being in state i at time t for t sufficiently large, then it should sum to one as the chain must be in one of the states.
  
  Columns 1 through 4
+
====Motivation example====
 +
- Suppose we want to generate a random variable X according to distribution <math>\pi=(\pi_1, \pi_2,  ...  , \pi_m)</math> <br/>
 +
X can take m possible different values from <math>{1,2,3,\cdots, m}</math><br />
 +
- We want to generate <math>\{X_t: t=0, 1, \cdots\}</math> according to <math>\pi</math><br />
  
  -0.4129            0.4845 + 0.1032i  0.4845 - 0.1032i  -0.0089 + 0.2973i
+
Suppose our example is of a bias die. <br/>
  -0.4158            -0.6586            -0.6586            -0.5005 + 0.2232i
+
Now we have m=6, <math>\pi=[0.1,0.1,0.1,0.2,0.3,0.2]</math>, <math>X \in [1,2,3,4,5,6]</math><br/>
  -0.1963            0.2854 - 0.0608i  0.2854 + 0.0608i  -0.2570 - 0.2173i
 
  -0.5700            0.1302 + 0.2612i  0.1302 - 0.2612i  0.1462 - 0.3032i
 
  -0.5415            -0.2416 - 0.3036i  -0.2416 + 0.3036i  0.6202         
 
  
  Column 5
+
Suppose <math>X_t=i</math>. Consider an arbitrary probability transition matrix Q with entry <math>q_{ij}</math> being the probability of moving to state j from state i. (<math>q_{ij}</math> can not be zero.) <br/>
  
  -0.0089 - 0.2973i
+
<math> \mathbf{Q} =
  -0.5005 - 0.2232i
+
\begin{bmatrix}
  -0.2570 + 0.2173i
+
q_{11} & q_{12} & \cdots & q_{1m} \\
  0.1462 + 0.3032i
+
q_{21} & q_{22} & \cdots & q_{2m} \\
  0.6202         
+
\vdots & \vdots & \ddots & \vdots \\
 +
q_{m1} & q_{m2} & \cdots & q_{mm}
 +
\end{bmatrix}
 +
</math> <br/>
  
  
val =
+
We generate Y = j according to the i-th row of Q. Note that the i-th row of Q is a probability vector that shows the probability of moving to any state j from the current state i, i.e.<math>P(Y=j)=q_{ij}</math><br />
  
  Columns 1 through 4
+
In the following algorithm: <br>
 +
<math>q_{ij}</math> is the <math>ij^{th}</math> entry of matrix Q. It is the probability of Y=j given that <math>x_t = i</math>. <br/>
 +
<math>r_{ij}</math> is the probability of accepting Y as <math>x_{t+1}</math>. <br/>
  
  1.0000                  0                  0                  0         
 
        0            -0.5886 - 0.1253i        0                  0         
 
        0                  0            -0.5886 + 0.1253i        0         
 
        0                  0                  0            0.1886 - 0.3911i
 
        0                  0                  0                  0         
 
  
  Column 5
+
'''How to get the acceptance probability?'''
  
        0         
+
If <math>\pi </math> is the stationary distribution, then it must satisfy the detailed balance condition:<br/>
        0         
+
If <math>\pi_i P_{ij}</math> = <math>\pi_j P_{ji}</math><br/>then <math>\pi </math> is the stationary distribution of the chain
        0         
 
        0         
 
  0.1886 + 0.3911i
 
  
>> a=-vec(:,1)
+
Since <math>P_{ij}</math> = <math>q_{ij} r_{ij}</math>, we have <math>\pi_i q_{ij} r_{ij}</math> = <math>\pi_j q_{ji} r_{ji}</math>.<br/>
 +
We want to find a general solution: <math>r_{ij} = a(i,j) \pi_j q_{ji}</math>, where a(i,j) = a(j,i).<br/>
  
a =
+
'''Recall'''
 +
<math>r_{ij}</math> is the probability of acceptance, thus it must be that <br/>
  
    0.4129
+
1.<math>r_{ij} = a(i,j)</math> <math>\pi_j q_{ji} </math>≤1, then we get: <math>a(i,j) </math>≤ <math>1/(\pi_j q_{ji})</math>
    0.4158
 
    0.1963
 
    0.5700
 
    0.5415
 
  
>> a=a/sum(a)
+
2. <math>r_{ji} = a(j,i) </math> <math>\pi_i q_{ij} </math> ≤ 1, then we get: <math>a(j,i)</math> ≤ <math>1/(\pi_i q_{ij})</math>
  
a =
+
So we choose a(i,j) as large as possible, but it needs to satisfy the two conditions above.<br/>
  
    0.1933
+
<math>a(i,j) = \min \{\frac{1}{\pi_j q_{ji}},\frac{1}{\pi_i q_{ij}}\} </math><br/>
    0.1946
 
    0.0919
 
    0.2668 % (the most important)
 
    0.2534
 
</pre>
 
For the matrix, the rank is: page 4, page 5, page 2, page 1, page 3.<br />
 
  
== Class 17 - Tuesday July 2nd 2013 ==
+
Thus, <math> r_{ij} = \min \{\frac{\pi_j q_{ji}}{\pi_i q_{ij}}, 1\} </math><br/>
=== Markov Chain Monte Carlo (MCMC) ===
 
Idea: generate a Markov Chain whose stationary distribution is the same as the target distribution.
 
  
Motivation example<br />
+
'''Note''':
-We would like to sample from random variable X according to distribution <math>\pi=(\pi_1, \pi_2,  ...  , \pi_m)</math> <br/>
+
1 is the upper bound to make r<sub>ij</sub> a probability
X can take m different values from <math>X \in [1,2,3,...,m]</math> <br />
 
-Suppose X can take values from: {Xt, t=0, 1, ....., n } according to <math>\pi</math><br />
 
{X0, X1, ....., Xn}<br />
 
  
  
example:
+
'''Algorithm:'''  <br/>
M=6<br/>
+
*<math> (*) P(Y=j) = q_{ij} </math>. <math>\frac{\pi_j q_{ji}}{\pi_i q_{ij}}</math> is a positive ratio.
<math> \pi=[0.1,0.1,0.1,0.2,0.3,0.2]</math><br/>
 
<math>X \in [1,2,3,4,5,6]</math><br/>
 
  
- Suppose Xt=i<br />
+
*<math> r_{ij} = \min \{\frac{\pi_j q_{ji}}{\pi_i q_{ij}}, 1\} </math> <br/>
consider an arbitrary transition matrix Q with entry q<sub>ij</sub>. <br/>
+
*<math>
 +
x_{t+1} = \begin{cases}
 +
Y, & \text{with probability } r_{ij} \\
 +
x_t, & \text{otherwise} \end{cases} </math> <br/>
 +
* go back to the first step (*)  <br/>
  
<math> \mathbf{Q} =
+
We can compare this with the Acceptance-Rejection model we learned before. <br/>
\begin{bmatrix}
+
* <math>U</math> ~ <math>Uniform(0,1)</math> <br/>
q_{11} & q_{12} & \cdots & q_{1m} \\
+
* If <math>U < r_{ij}</math>, then accept. <br/>
q_{21} & q_{22} & \cdots & q_{2m} \\
+
EXCEPT that a point is always generated at each time-step. <br>
\vdots & \vdots & \ddots & \vdots \\
 
q_{m1} & q_{m2} & \cdots & q_{mm}
 
\end{bmatrix}
 
</math> <br/>
 
  
q<sub>ij</sub> is the probability of moving to any state j from current state i. <br/>
+
The algorithm generates a stochastic sequence that only depends on the last state, which is a Markov Chain.<br>
Generate Y according to i-th row of matrix Q.
 
i.e.P(Y=j)=q<sub>ij</sub><br />
 
r<sub>ij</sub> is the probabiliy of accepting j. <br/>
 
  
 +
====Metropolis Algorithm====
  
 +
'''Proposition: ''' Metropolis works:
  
'''Algorithm:'''  <br/>
+
The <math>P_{ij}</math>'s from Metropolis Algorithm satisfy detailed balance property w.r.t <math>\pi</math> . i.e. <math>\pi_i P_{ij} = \pi_j P_{ji}</math>. The new Markov Chain has a stationary distribution <math>\pi</math>. <br/>
*<math> (*) P(Y=j) = q_{ij} </math> <br/>
+
'''Remarks:''' <br/>
*<math> r_{ij} = min (\frac{\pi_j q_{ji}}{\pi_i q_{ij}}, 1) </math>,  Notice that the reason why we take minimum is because we know that <math>\frac{\pi_j q_{ji}}{\pi_i q_{ij}} >0</math>, and may greater than 1. Since r is a probability, it is no more than 1, so we take the minimum.<br/>
+
1) We only need to know ratios of values of <math>\pi_i</math>'s.<br/>
* <math>
+
2) The MC might converge to <math>\pi</math> at varying speeds depending on the proposal distribution and the value the chain is initialized with<br/>
x_{t+1} = \begin{cases}
 
Y, & \text{w/p}:  r_{ij} \\
 
x_t, & \text{otherwise} \end{cases} </math> <br/>
 
*go to (*)  <br/>
 
  
This algorithm generates <math> {x_t, t=0,...,n} </math>. In the long run, the marginal distribution of <math> x_t </math> is <math>\underline{\Pi} </math><br/>
 
<math> {{x_t, t = 0, 1,...,n}}</math> is a Markov chain with probability transition matrix P.
 
This is a Markov Chain since <math> x_t+1 </math> only depends on
 
<math> x_t
 
\text{Where }P_{ij}= \begin{cases}
 
q_{ij} r_{ij}, & \text{if }i \neq j \\
 
1 - \sum_{j} (q_{ij} r_{ij}), & \text{if i = j} \end{cases} </math>
 
  
Detailed Balance:
+
This algorithm generates <math>\{x_t: t=0,...,m\}</math>. <br/>
 +
In the long run, the marginal distribution of <math> x_t </math> is the stationary distribution <math>\underline{\Pi} </math><br>
 +
<math>\{x_t: t = 0, 1,...,m\}</math> is a Markov chain with probability transition matrix (PTM), P.<br>
  
if <math>\pi_i P_{ij} = P_{ji} \pi_j</math>, then <math>\underline\pi</math> is the stationary distribution of this markov chain.
+
This is a Markov Chain since <math> x_{t+1} </math> only depends on <math> x_t </math>, where <br>
 +
<math> P_{ij}= \begin{cases}
 +
q_{ij} r_{ij}, & \text{if }i \neq j  (q_{ij} \text{is the probability of generating j from i and } r_{ij} \text{ is the probiliity of accepting)}\\[6pt]
 +
1 - \displaystyle\sum_{k \neq i} q_{ik} r_{ik}, & \text{if }i = j \end{cases} </math><br />
  
LHS:
+
<math>q_{ij}</math> is the probability of generating state j; <br/>
<math>\pi_i P_{ij} = \pi_i q_{ij} r_{ij} = \pi_i q_{ij} \frac{\pi_j q_{ij}}{\pi_i q_{ij}} = \pi_i q_{ji} </math> <br/>
+
<math> r_{ij}</math> is the probability of accepting state j as the next state. <br/>
RHS:
 
<math>\ P_{ji} \pi_j=q_{ji} r_{ji} \pi_i </math> <br/>
 
note: we assume <math>r_{ij}</math> is smaller than 1, then <math>r_{ji}</math> should be equal to 1.
 
  
<math>q_{ij}</math> is the chance of generating j from i, but may not be accepted, so we consider the chance of accepting j as the next step, which is <math>r_{ij}</math>.
+
Therefore, the final probability of moving from state i to j when i does not equal to j is <math>q_{ij}*r_{ij}</math>. <br/>
If P<sub>ij</sub> is not zero for any i,j, then the chain is ergodic.
+
For the probability of moving from state i to state i, we deduct all the probabilities of moving from state i to any j that are not equal to i, therefore, we get the second probability.
  
'''Example''':
+
===Proof of the proposition:===
\pi=[0.1 0.1 0.2 0.2 0.2 0.1]<br/>
 
  
<math> \mathbf{Q} =  
+
A good way to think of the detailed balance equation is that they balance the probability from state i to state j with that from state j to state i.
\begin{bmatrix}
+
We need to show that the stationary distribition of the Markov Chain is <math>\underline{\Pi}</math>, i.e. <math>\displaystyle \underline{\Pi} = \underline{\Pi}P</math><br />
1/6 & 1/6 & 1/6 & 1/6 & 1/6 & 1/6 \\
+
<div style="text-size:20px">
1/6 & 1/6 & 1/6 & 1/6 & 1/6 & 1/6 \\
+
Recall<br/>
  1/6 & 1/6 & 1/6 & 1/6 & 1/6 & 1/6 \\
+
  If a Markov chain satisfies the detailed balance property, i.e. <math>\displaystyle \pi_i P_{ij} = \pi_j P_{ji} \, \forall i,j</math>, then <math>\underline{\Pi}</math> is the stationary distribution of the chain.<br /><br />
1/6 & 1/6 & 1/6 & 1/6 & 1/6 & 1/6 \\
+
</div>
1/6 & 1/6 & 1/6 & 1/6 & 1/6 & 1/6 \\
 
1/6 & 1/6 & 1/6 & 1/6 & 1/6 & 1/6 \\
 
\end{bmatrix}
 
</math> <br/>
 
  
Y~unif[1,2,3,4,5,6]<br/>
+
'''Proof:'''
Suppose that the current state of i is X_t</math> = 4<br/>
 
'''Algorithm''':<br/>
 
1. Initialize the chain, X_t</math> = 4<br/>
 
2. Draw Y~unif[1,2,3,4,5,6]<br/>
 
<math> r_{ij} = min (\frac{\pi_j q_{ji}}{\pi_i q_{ij}}, 1) = min (\frac{\pi_j}{\pi_i}, 1) </math> </br>
 
3. Sample u~unif(0,1)<br/>
 
4. If u <= r_{ij}, x_{t+1} = y <br/>
 
5. Else x_{t+1} = x_{t} <br/>
 
6. Go back to 2 <br/>
 
  
== Class 17 - Tuesday July 2nd 2013 ==
+
WLOG, we can assume that <math>\frac{\pi_j q_{ji}}{\pi_i q_{ij}}<1</math><br/>
=== Markov Chain Monte Carlo (MCMC) ===
 
  
===Introduction===
+
LHS:<br />
It is, in general, very difficult to simulate the value of a random vector X whose component random variables are dependent. We will present a powerful approach for generating a vector whose distribution is approximately that of X. This approach, called the Markov Chain Monte Carlo Methods, has the added significance of only requiring that the mass(or density) function of X be specified up to a multiplicative constant, and this, we will see, is of great important in applications.
+
<math>\pi_i P_{ij} = \pi_i q_{ij} r_{ij} = \pi_i q_{ij} \cdot \min(\frac{\pi_j q_{ji}}{\pi_i q_{ij}},1) = \cancel{\pi_i q_{ij}} \cdot \frac{\pi_j q_{ji}}{\cancel{\pi_i q_{ij}}} = \pi_j q_{ji}</math><br />
(referenced by Sheldon M.Ross,Simulation)
 
  
====Definition:====
+
RHS:<br />
Markov Chain
+
Note that by our assumption, since <math>\frac{\pi_j q_{ji}}{\pi_i q_{ij}}<1</math>, its reciprocal <math>\frac{\pi_i q_{ij}}{\pi_j q_{ji}} \geq 1</math><br />
A Markov Chain is a special form of stochastic process in which <math>\displaystyle X_t</math> depends only on <math> \displaystyle X_{t-1}</math>.
+
So <math>\displaystyle \pi_j P_{ji} = \pi_ j q_{ji} r_{ji} = \pi_ j q_{ji} \cdot \min(\frac{\pi_i q_{ij}}{\pi_j q_{ji}},1) =  \pi_j q_{ji} \cdot 1 = \pi_ j q_{ji}</math><br />
  
For example,
+
Hence LHS=RHS
:<math>\displaystyle f(X_1,...X_n)= f(X_1)f(X_2|X_1)f(X_3|X_2)...f(X_n|X_{n-1})</math>
 
A random Walk is the best example  of a Markov process
 
  
<br>'''Transition Probability:'''<br>
+
If we assume that <math>\frac{\pi_j q_{ji}}{\pi_i q_{ij}}=1</math><br/> (essentially <math>\frac{\pi_j q_{ji}}{\pi_i q_{ij}}>=1</math>)<br/>
The probability of going from one state to another state.
 
:<math>p_{ij} = \Pr(X_{n}=j\mid X_{n-1}= i). \,</math>
 
  
<br>'''Transition Matrix:'''<br>
+
LHS:<br />
For n states, transition matrix P is an <math>N \times N</math> matrix with entries <math>\displaystyle P_{ij}</math> as below:
+
<math>\pi_i P_{ij} = \pi_i q_{ij} r_{ij} = \pi_i q_{ij} \cdot \min(\frac{\pi_j q_{ji}}{\pi_i q_{ij}},1)  =\pi_i q_{ij} \cdot 1 = \pi_i q_{ij}</math><br />
Markov Chain Monte Carlo (MCMC) methods are a class of algorithms for sampling from probability distributions based on constructing a Markov chain that has the desired distribution as its equilibrium distribution. The state of the chain after a large number of steps is then used as a sample of the desired distribution. The quality of the sample improves as a function of the number of steps. (http://en.wikipedia.org/wiki/Markov_chain_Monte_Carlo)</span>
 
  
<a style="color:red" href="http://www.eecs.berkeley.edu/Pubs/TechRpts/2010/EECS-2010-165.pdf">some notes form UCb</a>
+
RHS:<br />
 +
'''Note''' <br/>
 +
by our assumption, since <math>\frac{\pi_j q_{ji}}{\pi_i q_{ij}}\geq 1</math>, its reciprocal <math>\frac{\pi_i q_{ij}}{\pi_j q_{ji}} \leq 1 </math> <br />
  
'''One of the main purposes of MCMC''' : to simulate samples from a joint distribution where the joint random variables are dependent. In general, this is not easily sampled from. Other methods learned in class allow us to simulate i.i.d random variables, but not dependent variables . In this case, we could sample non-independent random variables using a Markov Chain. Its Markov properties help to simplify the simulation process.
+
So <math>\displaystyle \pi_j P_{ji} = \pi_ j q_{ji} r_{ji} = \pi_ j q_{ji} \cdot \min(\frac{\pi_i q_{ij}}{\pi_j q_{ji}},1) =  \cancel{\pi_j q_{ji}} \cdot \frac{\pi_i q_{ij}}{\cancel{\pi_j q_{ji}}} = \pi_i q_{ij}</math><br />
  
 +
Hence LHS=RHS which indicates <math>pi_i*P_{ij} = pi_j*P_{ji}</math><math>\square</math><br /><br />
  
<b>Basic idea:</b> Given a probability distribution <math>\pi</math> on a set <math>\Omega</math>, we want to generate random elements of <math>\Omega</math> with distribution <math>\pi</math>. MCMC does that by constructing a Markov Chain with stationary distribution <math>\pi</math> and simulating the chain. After a large number of iterations, the Markov Chain will reach its stationary distribution. By sampling from the Markov chain for large amount of iterations, we are effectively sampling from the desired distribution as the Markov Chain would converge to its stationary distribution <br/>  
+
'''Note'''<br />  
 +
1) If we instead assume <math>\displaystyle \frac{\pi_i q_{ij}}{\pi_j q_{ji}} \geq 1</math>, the proof is similar with LHS= RHS =  <math> \pi_i q_{ij} </math> <br />
  
Idea: generate a Markov chain whose stationary distribution is the same as target distribution. <br/>
+
2) If <math>\displaystyle i = j</math>, then detailed balance is satisfied trivially.<br />
  
 +
since <math>{\pi_i q_{ij}}</math>, and <math>{\pi_j q_{ji}}</math> are smaller than one. so the above steps show the proof of  <math>\frac{\pi_i q_{ij}}{\pi_j q_{ji}}<1</math>.
  
'''Note''' <br/>
+
== Class 18 - Thursday July 4th 2013 ==
1) Regardless of the chosen starting point, the Markov Chain will converge to its stationary distribution (if it exists). However, the time taken for the chain to converge depends on its chosen starting point. Typically, the burn-in period is longer if the chain is initialized with a value of low probability density<br/>
+
=== Last class ===
  
2) Markov Chain Monte Carlo can be used for sampling from a distribution, estimating the distribution, and computing the mean and optimization (e.g. simulated annealing, more on that later). <br>
+
Recall: The Acceptance Probability,
 +
<math>r_{ij}=min(\frac {{\pi_j}q_{ji}}{{\pi_i}q_{ij}},1)</math> <br />
  
3) Markov Chain Monte Carlo is used to sample using “local” information. It is used as a generic “problem solving technique” to solve decision/optimization/value problems, but is not necessarily very efficient.<br/>
+
1) <math>r_{ij}=\frac {{\pi_j}q_{ji}}{{\pi_i}q_{ij}}</math>, and <math>r_{ji}=1 </math>,     (<math>\frac {{\pi_j}q_{ji}}{{\pi_i}q_{ij}} < 1</math>) <br />
  
4) MCMC methods do not suffer as badly from the "curse of dimensionality" that badly affects efficiency in the acceptance-rejection method. This is because a point is always generated at each time-step according to the Markov Chain regardless of how many dimensions are introduced.<br>
 
  
5) The goal when simulating with a Markov Chain is to create a chain with the same stationary distribution as the target distribution.<br/>
+
2)  <math>r_{ji}=\frac {{\pi_i}q_{ij}}{{\pi_j}q_{ji}}</math>, and <math> r{ij}=1 </math>,    (<math>\frac {{\pi_j}q_{ji}}{{\pi_i}q_{ij}} \geq 1</math> ) <br />
  
6) The MCMC method is usually used in continuous cases but a discrete example is given below.<br />
+
===Example: Discrete Case===
  
  
'''Some properties of the stationary distribution <math>\pi</math>'''
+
Consider a biased die,
 +
<math>\pi</math>= [0.1, 0.1, 0.2, 0.4, 0.1, 0.1]
  
<math>\pi</math> indicates the proportion of time the process spends in each of the states 1,2,...,n. Therefore <math>\pi</math> satisfies the following two inequalities: <br>
+
We could use any <math>6 x 6 </math> matrix <math> \mathbf{Q} </math> as the proposal distribution <br>
 +
For the sake of simplicity ,using a discrete uniform distribution is the simplest. This is because all probabilities are equivalent, hence during the calculation of r, qxy and qyx will cancel each other out.
  
1. <math>\pi_j</math> = <math>\sum_{i=1}^{n}\pi_i*P{ij}</math>.<br>
+
<math> \mathbf{Q} =  
This is because <math>\pi_i</math> is the proportion of time the process spends in state i, and <math>p{ij}</math> is the probability the process transition out of state i into state j. Therefore, <math>\pi_i*p_{ij}</math> is the proportion of time it takes for the process to enter state j. Therefore, <math>\pi_j</math> is the sum of this probability over overall states i. <br>
 
 
 
2)<math> \sum_{i=1}^{n}\pi_i= 1 </math> as <math>\pi</math> shows the proportion of time the chain is in each state. If we view it as the probability of the chain being in state i at time t for t sufficiently large, then it should sum to one as the chain must be in one of the states. <br>
 
 
 
====Motivation example====
 
- Suppose we want to generate a random variable X according to distribution <math>\pi=(\pi_1, \pi_2,  ...  , \pi_m)</math> <br/>
 
X can take m possible different values from <math>{1,2,3,\cdots, m}</math><br />
 
- We want to generate <math>\{X_t: t=0, 1, \cdots\}</math> according to <math>\pi</math><br />
 
 
 
Suppose our example is of a bias die. <br/>
 
Now we have m=6, <math>\pi=[0.1,0.1,0.1,0.2,0.3,0.2]</math>, <math>X \in [1,2,3,4,5,6]</math><br/>
 
 
 
Suppose <math>X_t=i</math>. Consider an arbitrary probability transition matrix Q with entry <math>q_{ij}</math> being the probability of moving to state j from state i. (<math>q_{ij}</math> can not be zero.) <br/>
 
 
 
<math> \mathbf{Q} =  
 
 
  \begin{bmatrix}
 
  \begin{bmatrix}
  q_{11} & q_{12} & \cdots & q_{1m} \\
+
  1/6 & 1/6 & \cdots & 1/6 \\
  q_{21} & q_{22} & \cdots & q_{2m} \\
+
  1/6 & 1/6 & \cdots & 1/6 \\
 
  \vdots & \vdots & \ddots & \vdots \\
 
  \vdots & \vdots & \ddots & \vdots \\
  q_{m1} & q_{m2} & \cdots & q_{mm}
+
  1/6 & 1/6 & \cdots & 1/6
 
  \end{bmatrix}
 
  \end{bmatrix}
 
</math> <br/>
 
</math> <br/>
  
  
We generate Y = j according to the i-th row of Q. Note that the i-th row of Q is a probability vector that shows the probability of moving to any state j from the current state i, i.e.<math>P(Y=j)=q_{ij}</math><br />
 
  
In the following algorithm: <br>
+
'''Algorithm''' <br>
<math>q_{ij}</math> is the <math>ij^{th}</math> entry of matrix Q. It is the probability of Y=j given that <math>x_t = i</math>. <br/>
+
1. <math>x_t=5</math> (sample from the 5th row, although we can initialize the chain from anywhere within the support)<br />
<math>r_{ij}</math> is the probability of accepting Y as <math>x_{t+1}</math>. <br/>
+
2. Y~Unif[1,2,...,6]<br />
 +
3. <math> r_{ij} = \min \{\frac{\pi_j q_{ji}}{\pi_i q_{ij}}, 1\} = \min \{\frac{\pi_j  1/6}{\pi_i  1/6}, 1\} = \min \{\frac{\pi_j}{\pi_i}, 1\}</math><br>
 +
Note:  current state <math>i</math> is <math>X_t</math>,  the candidate state <math>j</math> is <math>Y</math>. <br>
 +
Note: since <math>q_{ij}= q_{ji}</math> for all i and j, that is, the proposal distribution is symmetric, we have <math> r_{ij} = \min \{\frac{\pi_j}{\pi_i }, 1\} </math><br/>
 +
4. U~Unif(0,1)<br/>
 +
if <math>u \leq r_{ij}</math>, X<sub>t+1</sub>=Y<br />
 +
else X<sub>t+1</sub>=X<sub>t</sub><br />
 +
go back to 2<br>
  
 +
Notice how a point is always generated for X<sub>t+1</sub>, regardless of whether the candidate state Y is accepted <br>
  
'''How to get the acceptance probability?'''
+
'''Matlab'''
 +
<pre style="font-size:14px">
 +
pii=[.1,.1,.2,.4,.1,.1];
 +
x(1)=5;
 +
for ii=2:1000
 +
  Y=unidrnd(6);                %%% Unidrnd(x) is a built-in function which generates a number between (0) and (x)
 +
  r = min (pii(Y)/pii(x(ii-1)), 1);
 +
  u=rand;
 +
  if u<r
 +
    x(ii)=Y;
 +
  else
 +
    x(ii)=x(ii-1);
 +
  end
 +
end
 +
hist(x,6)    %generate histogram displaying all 1000 points
 +
xx = x(501,end);    %After 500, the chain will mix well and converge.
 +
hist(xx,6)                % The result should be better.
 +
</pre>
 +
[[File:MH_example1.jpg|300px]]
  
If <math>\pi </math> is the stationary distribution, then it must satisfy the detailed balance condition:<br/>
 
If <math>\pi_i P_{ij}</math> = <math>\pi_j P_{ji}</math><br/>then <math>\pi </math> is the stationary distribution of the chain
 
  
Since <math>P_{ij}</math> = <math>q_{ij} r_{ij}</math>, we have <math>\pi_i q_{ij} r_{ij}</math> = <math>\pi_j q_{ji} r_{ji}</math>.<br/>
+
'''NOTE:''' Generally, we generate a large number of points (say, 1500) and throw away some of the points that were first generated(say, 500). Those first points are called the [[burn-in period]]. A chain will converge to the limiting distribution eventually, but not immediately. The burn-in period is that beginning period before the chain has converged to the desired distribution. By discarding those 500 points, our data set will be more representative of the desired limiting distribution; once the burn-in period is over, we say that the chain "mixes well".
We want to find a general solution: <math>r_{ij} = a(i,j) \pi_j q_{ji}</math>, where a(i,j) = a(j,i).<br/>
 
  
'''Recall'''
+
===Alternate Example: Discrete Case===
<math>r_{ij}</math> is the probability of acceptance, thus it must be that <br/>
 
  
1.<math>r_{ij} = a(i,j)</math> <math>\pi_j q_{ji} </math>≤1, then we get: <math>a(i,j) </math>≤ <math>1/(\pi_j q_{ji})</math>
 
  
2. <math>r_{ji} = a(j,i) </math> <math>\pi_i q_{ij} </math> ≤ 1, then we get: <math>a(j,i)</math> ≤ <math>1/(\pi_i q_{ij})</math>
+
Consider the weather. If it is sunny one day, there is a 5/7 chance it will be sunny the next. If it is rainy, there is a 5/8 chance it will be rainy the next.
 +
<math>\pi= [\pi_1 \ \pi_2] </math>
  
So we choose a(i,j) as large as possible, but it needs to satisfy the two conditions above.<br/>
+
Use a discrete uniform distribution as the proposal distribution, because it is the simplest.
  
<math>a(i,j) = \min \{\frac{1}{\pi_j q_{ji}},\frac{1}{\pi_i q_{ij}}\} </math><br/>
+
<math> \mathbf{Q} =
 +
\begin{bmatrix}
 +
5/7 & 2/7 \\
 +
3/8 & 5/8\\
 +
 +
\end{bmatrix}
 +
</math> <br/>
  
Thus, <math> r_{ij} = \min \{\frac{\pi_j q_{ji}}{\pi_i q_{ij}}, 1\} </math><br/>
 
  
'''Note''':
 
1 is the upper bound to make r<sub>ij</sub> a probability
 
  
 +
'''Algorithm''' <br>
 +
1. Set initial chain state: <math>X_t=1</math> (i.e. sample from the 1st row, although we could also choose the 2nd row)<br />
 +
2. Sample from proposal distribution: Y~q(y|x) = Unif[1,2]<br />
 +
3. <math> r_{ij} = \min \{\frac{\pi_j q_{ji}}{\pi_i q_{ij}}, 1\} = \min \{\frac{\pi_j  1/6}{\pi_i  1/6}, 1\} = \min \{\frac{\pi_j}{\pi_i}, 1\}</math><br>
 +
'''Note:'''  Current state <math>i</math> is <math>X_t</math>,  the candidate state <math>j</math> is <math>Y</math>. Since <math>q_{ij}= q_{ji}</math> for all i and j, that is, the proposal distribution is symmetric, we have <math> r_{ij} = \min \{\frac{\pi_j}{\pi_i }, 1\} </math>
  
'''Algorithm:'''  <br/>
+
4. U~Unif(0,1)<br>
*<math> (*) P(Y=j) = q_{ij} </math>. <math>\frac{\pi_j q_{ji}}{\pi_i q_{ij}}</math> is a positive ratio.
+
  If  <math>U \leq r_{ij}</math>, then<br>
 +
        <math>X_t=Y</math><br>
 +
  else<br />
 +
        <math>X_{t+1}=X_t</math><br>
 +
  end if<br />
 +
5. Go back to step 2<br>
  
*<math> r_{ij} = \min \{\frac{\pi_j q_{ji}}{\pi_i q_{ij}}, 1\} </math> <br/>
 
*<math>
 
x_{t+1} = \begin{cases}
 
Y, & \text{with probability } r_{ij} \\
 
x_t, & \text{otherwise} \end{cases} </math> <br/>
 
* go back to the first step (*)  <br/>
 
  
We can compare this with the Acceptance-Rejection model we learned before. <br/>
+
'''Generalization of the above framework to the continuous case'''<br>
* <math>U</math> ~ <math>Uniform(0,1)</math> <br/>
 
* If <math>U < r_{ij}</math>, then accept. <br/>
 
EXCEPT that a point is always generated at each time-step. <br>
 
  
The algorithm generates a stochastic sequence that only depends on the last state, which is a Markov Chain.<br>
+
In place of <math>\pi</math> use <math>f(x)</math>
 +
In place of r<sub>ij</sub> use <math>q(y|x)</math> <br>
 +
In place of r<sub>ij</sub> use <math>r(x,y)</math> <br>
 +
Here, q(y|x) is a friendly distribution that is easy to sample, usually a symmetric distribution will be preferable, such that <math>q(y|x) = q(x|y)</math> to simplify the computation for <math>r(x,y)</math>.
  
====Metropolis Algorithm====
 
  
'''Proposition: ''' Metropolis works:
+
'''Remarks'''<br>
 +
1. The chain may not get to a stationary distribution if the # of steps generated are small. That is it will take a very large amount of steps to step through the whole support<br>
 +
2. The algorithm can be performed with a <math>\pi</math> that is not even a probability mass function, it merely needs to be proportional to the probability mass function we wish to sample from. This is useful as we do not need to calculate the normalization factor. <br>
  
The <math>P_{ij}</math>'s from Metropolis Algorithm satisfy detailed balance property w.r.t <math>\pi</math> . i.e. <math>\pi_i P_{ij} = \pi_j P_{ji}</math>. The new Markov Chain has a stationary distribution <math>\pi</math>. <br/>
+
For example, if we are given <math>\pi^'=\pi\alpha=[5,10,11,2,100,1]</math>, we can normalize this vector by dividing the sum of all entries <math>s</math>.<br>
'''Remarks:''' <br/>
+
However we notice that when calculating <math>r_{ij}</math>, <br>
1) We only need to know ratios of values of <math>\pi_i</math>'s.<br/>
+
<math>\frac{\pi^'_j/s}{\pi^'_i/s}\times\frac{q_{ji}}{q_{ij}}=\frac{\pi^'_j}{\pi^'_i}\times\frac{q_{ji}}{q_{ij}}</math> <br>
2) The MC might converge to <math>\pi</math> at varying speeds depending on the proposal distribution and the value the chain is initialized with<br/>
+
<math>s</math> cancels out in this case. Therefore it is not necessary to calculate the sum and normalize the vector.<br>
  
 +
This also applies to the continuous case,where we merely need <math> f(x) </math> to be proportional to the pdf of the distribution we wish to sample from. <br>
  
This algorithm generates <math>\{x_t:  t=0,...,m\}</math>. <br/>
+
===Metropolis–Hasting Algorithm===
In the long run, the marginal distribution of <math> x_t </math> is the stationary distribution <math>\underline{\Pi} </math><br>
 
<math>\{x_t: t = 0, 1,...,m\}</math> is a Markov chain with probability transition matrix (PTM), P.<br>
 
  
This is a Markov Chain since <math> x_{t+1} </math> only depends on <math> x_t </math>, where <br>
+
'''Definition''': <br>
<math> P_{ij}= \begin{cases}
+
Metropolis–Hastings algorithm is a Markov chain Monte Carlo (MCMC) method for obtaining a sequence of random samples from a probability distribution for which direct sampling is difficult. The Metropolis–Hastings algorithm can draw samples from any probability distribution P(x), provided you can compute the value of a function f(x) which is proportional to the density of P. <br>
q_{ij} r_{ij}, & \text{if }i \neq j  (q_{ij} \text{is the probability of generating j from i and } r_{ij} \text{ is the probiliity of accepting)}\\[6pt]
 
1 - \displaystyle\sum_{k \neq i} q_{ik} r_{ik}, & \text{if }i = j \end{cases} </math><br />
 
  
<math>q_{ij}</math> is the probability of generating state j; <br/>
 
<math> r_{ij}</math> is the probability of accepting state j as the next state. <br/>
 
  
Therefore, the final probability of moving from state i to j when i does not equal to j is <math>q_{ij}*r_{ij}</math>. <br/>
 
For the probability of moving from state i to state i, we deduct all the probabilities of moving from state i to any j that are not equal to i, therefore, we get the second probability.
 
  
===Proof of the proposition:===
+
'''Purpose''': <br>
 +
"The purpose of the Metropolis-Hastings Algorithm is to <b>generate a collection of states according to a desired distribution</b> <math>P(x)</math>. <math>P(x)</math> is chosen to be the stationary distribution of a Markov process, <math>\pi(x)</math>." <br>
 +
Source:(http://en.wikipedia.org/wiki/Metropolis%E2%80%93Hastings_algorithm)<br>
  
A good way to think of the detailed balance equation is that they balance the probability from state i to state j with that from state j to state i.
 
We need to show that the stationary distribition of the Markov Chain is <math>\underline{\Pi}</math>, i.e. <math>\displaystyle \underline{\Pi} = \underline{\Pi}P</math><br />
 
<div style="text-size:20px">
 
Recall<br/>
 
If a Markov chain satisfies the detailed balance property, i.e. <math>\displaystyle \pi_i P_{ij} = \pi_j P_{ji} \, \forall i,j</math>, then <math>\underline{\Pi}</math> is the stationary distribution of the chain.<br /><br />
 
</div>
 
  
'''Proof:'''
+
Metropolis-Hastings is an algorithm for constructing a Markov chain with a given limiting probability distribution. In particular, we consider what happens if we apply the Metropolis-Hastings algorithm repeatedly to a “proposal” distribution which has already been updated.<br>
  
WLOG, we can assume that <math>\frac{\pi_j q_{ji}}{\pi_i q_{ij}}<1</math><br/>
 
  
LHS:<br />
+
The algorithm was named after Nicholas Metropolis and W. K. Hastings who extended it to the more general case in 1970.<br>
<math>\pi_i P_{ij} = \pi_i q_{ij} r_{ij} = \pi_i q_{ij} \cdot \min(\frac{\pi_j q_{ji}}{\pi_i q_{ij}},1) = \cancel{\pi_i q_{ij}} \cdot \frac{\pi_j q_{ji}}{\cancel{\pi_i q_{ij}}} = \pi_j q_{ji}</math><br />
 
  
RHS:<br />
+
<math>q(y|x)</math> is used instead of <math>qi,j</math>. In continuous case, we use these notation which means given state x, what's the probability of y.<br>  
Note that by our assumption, since <math>\frac{\pi_j q_{ji}}{\pi_i q_{ij}}<1</math>, its reciprocal <math>\frac{\pi_i q_{ij}}{\pi_j q_{ji}} \geq 1</math><br />
 
So <math>\displaystyle \pi_j P_{ji} = \pi_ j q_{ji} r_{ji} = \pi_ j q_{ji} \cdot \min(\frac{\pi_i q_{ij}}{\pi_j q_{ji}},1) =  \pi_j q_{ji} \cdot 1 = \pi_ j q_{ji}</math><br />
 
  
Hence LHS=RHS
+
Note that the Metropolis-Hasting algorithm possess some advantageous properties. One of which is that this algorithm "can be used when \pi(x) is known up to the constant of proportionality". The second is that in this algorithm, "we do not require the conditional distribution, which, in contrast, is required for the Gibbs sampler. "
 +
Source:https://www.msu.edu/~blackj/Scan_2003_02_12/Chapter_11_Markov_Chain_Monte_Carlo_Methods.pdf
  
If we assume that <math>\frac{\pi_j q_{ji}}{\pi_i q_{ij}}=1</math><br/> (essentially <math>\frac{\pi_j q_{ji}}{\pi_i q_{ij}}>=1</math>)<br/>
 
  
LHS:<br />
 
<math>\pi_i P_{ij} = \pi_i q_{ij} r_{ij} = \pi_i q_{ij} \cdot \min(\frac{\pi_j q_{ji}}{\pi_i q_{ij}},1)  =\pi_i q_{ij} \cdot 1 = \pi_i q_{ij}</math><br />
 
  
RHS:<br />
+
'''Differences between the discrete and continuous case of the Markov Chain''':<br/>
'''Note''' <br/>
 
by our assumption, since <math>\frac{\pi_j q_{ji}}{\pi_i q_{ij}}\geq 1</math>, its reciprocal <math>\frac{\pi_i q_{ij}}{\pi_j q_{ji}} \leq 1 </math> <br />
 
  
So <math>\displaystyle \pi_j P_{ji} = \pi_ j q_{ji} r_{ji} = \pi_ j q_{ji} \cdot \min(\frac{\pi_i q_{ij}}{\pi_j q_{ji}},1) =  \cancel{\pi_j q_{ji}} \cdot \frac{\pi_i q_{ij}}{\cancel{\pi_j q_{ji}}} = \pi_i q_{ij}</math><br />
+
1. <math>q(y|x)</math> is used in continuous, instead of <math>q_{ij}</math> in discrete <br/>
 +
2. <math>r(x,y)</math> is used in continuous, instead of <math>r{ij}</math> in discrete <br/>
 +
3. <math>f</math> is used instead of <math>\pi</math> <br/>
  
Hence LHS=RHS <math>\square</math><br /><br />
 
  
'''Note'''<br />  
+
'''Build the Acceptance Ratio'''<br/>
1) If we instead assume <math>\displaystyle \frac{\pi_i q_{ij}}{\pi_j q_{ji}} \geq 1</math>, the proof is similar with LHS= RHS =  <math> \pi_i q_{ij} </math> <br />
+
Before we consider the algorithm there are a couple general steps to follow to build the acceptance ratio:<br/>
  
2) If <math>\displaystyle i = j</math>, then detailed balance is satisfied trivially.<br />
+
a) Find the distribution you wish to use to generate samples from<br/>
 +
b) Find a candidate distribution that fits the desired distribution, q(y|x). (the proposed moves are independent of the current state)<br/>
 +
c) Build the acceptance ratio <math>\displaystyle \frac{f(y)q(x|y)}{f(x)q(y|x)}</math>
  
since <math>{\pi_i q_{ij}}</math>, and <math>{\pi_j q_{ji}}</math> are smaller than one. so the above steps show the proof of  <math>\frac{\pi_i q_{ij}}{\pi_j q_{ji}}<1</math>.
 
  
== Class 18 - Thursday July 4th 2013 ==
 
=== Last class ===
 
  
Recall : The Acceptance Probability <math>r_{ij}</math>
+
Assume that f(y) is the target distribution; Choose q(y|x) such that it is a friendly distribution and easy to sample from.<br />
<math>r_{ij}=min(\frac {{\pi_j}q_{ji}}{{\pi_i}q_{ij}},1)</math> <br />
+
'''Algorithm:'''<br />
  
1) <math>r_{ij}=\frac {{\pi_j}q_{ji}}{{\pi_i}q_{ij}}</math>, and <math>r_{ji}=1 </math>,    (<math>\frac {{\pi_j}q_{ji}}{{\pi_i}q_{ij}} < 1</math>) <br />
+
# Set <math>\displaystyle i = 0</math> and initialize the chain, i.e. <math>\displaystyle x_0 = s</math> where <math>\displaystyle s</math> is some state of the Markov Chain.
 +
# Sample <math>\displaystyle Y \sim q(y|x)</math>
 +
# Set <math>\displaystyle r(x,y) = min(\frac{f(y)q(x|y)}{f(x)q(y|x)},1)</math>
 +
# Sample <math>\displaystyle u \sim \text{UNIF}(0,1)</math>
 +
# If <math>\displaystyle u \leq r(x,y), x_{i+1} = Y</math><br /> Else <math>\displaystyle x_{i+1} = x_i</math>
 +
# Increment i by 1 and go to Step 2, i.e. <math>\displaystyle i=i+1</math>
  
 +
<br> '''Note''': q(x|y) is moving from y to x and q(y|x) is moving from x to y.
 +
<br>We choose q(y|x) so that it is simple to sample from.
 +
<br>Usually, we choose a normal distribution.
  
2) <math>r_{ji}=\frac {{\pi_i}q_{ij}}{{\pi_j}q_{ji}}</math>, and <math> r{ij}=1 </math>,     (<math>\frac {{\pi_j}q_{ji}}{{\pi_i}q_{ij}} \geq 1</math> ) <br />
+
NOTE2: The proposal q(y|x) y depends on x (is conditional on x)the current state, this makes sense ,because it's a necessary condition for MC. So the proposal should depend on x (also their supports should match) e.g q(y|x) ~ N( x, b<sup>2</sup>) here the proposal depends on x.
 +
If the next state is INDEPENDENT of the current state, then our proposal will not depend on x e.g. (A4 Q2, sampling from Beta(2,2) where the proposal was UNIF(0,1)which is independent of the current state. )
  
===Example: Discrete Case===
+
However, it is important to remember that even if generating the proposed/candidate state does not depend on the current state, the chain is still a markov chain.
  
 +
<br />
 +
Comparing with previous sampling methods we have learned, samples generated from M-H algorithm are not independent of each other, since we accept future sample based on the current sample. Furthermore, unlike acceptance and rejection method, we are not going to reject any points in Metropolis-Hastings. In the equivalent of the "reject" case, we just leave the state unchanged. In other words, if we need a sample of 1000 points, we only need to generate the sample 1000 times.<br/>
  
Consider a biased die
+
<p style="font-size:20px;color:red;">
<math>\pi</math>= [0.1, 0.1, 0.2, 0.4, 0.1, 0.1]
+
Remarks
 +
</p>
 +
===='''Remark 1'''====
 +
<span style="text-shadow: 0px 2px 3px 3399CC;margin-right:1em;font-family: 'Nobile', Helvetica, Arial, sans-serif;font-size:16px;line-height:25px;color:3399CC">
 +
A common choice for <math>q(y|x)</math> is a normal distribution centered at x with standard deviation b. Y~<math>N(x,b^2)</math>
  
We could use any <math>6 x 6 </math> matrix <math> \mathbf{Q} </math> as the proposal distribution <br>
+
In this case, <math> q(y|x)</math> is symmetric.
For the sake of simplicity ,using a discrete uniform distribution is the simplest.
 
  
<math> \mathbf{Q} =
+
i.e.
\begin{bmatrix}
+
<math>q(y|x)=q(x|y)</math><br>
1/6 & 1/6 & \cdots & 1/6 \\
+
(we want to sample q centered at the current state.)<br>
1/6 & 1/6 & \cdots & 1/6 \\
+
<math>q(y|x)=\frac{1}{\sqrt{2\pi}b}\,e^{- \frac{\scriptscriptstyle 1}{\scriptscriptstyle 2b^2} (y-x)^2}</math>, (centered at x)<br>
\vdots & \vdots & \ddots & \vdots \\
+
<math>q(x|y)=\frac{1}{\sqrt{2\pi}b}\,e^{- \frac{\scriptscriptstyle 1}{\scriptscriptstyle 2b^2} (x-y)^2}</math>,(centered at y)<br>
1/6 & 1/6 & \cdots & 1/6
+
<math>\Rightarrow (y-x)^2=(x-y)^2</math><br>
\end{bmatrix}
+
so <math>~q(y \mid x)=q(x \mid y)</math> <br>
</math> <br/>
+
In this case <math>\frac{q(x \mid y)}{q(y \mid x)}=1</math> and therefore <math> r(x,y)=\min \{\frac{f(y)}{f(x)}, 1\} </math> <br/><br />
 +
This is true for any symmetric q. In general if q(y|x) is symmetric, then this algorithm is called Metropolis.<br/>
 +
When choosing function q, it makes sense to choose a distribution with the same support as the distribution you want to simulate. eg. If target is Beta, then can choose q ~ Uniform(0,1)<br>
 +
The chosen q is not necessarily symmetric. Depending on different target distribution, q can be uniform.</span>
  
 +
===='''Remark 2'''====
 +
<span style="text-shadow: 0px 2px 3px 3399CC;margin-right:1em;font-family: 'Nobile', Helvetica, Arial, sans-serif;font-size:16px;line-height:25px;color:3399CC">
 +
The value y is accepted if u<=<math>min\{\frac{f(y)}{f(x)},1\}</math>, so it is accepted with the probability <math>min\{\frac{f(y)}{f(x)},1\}</math>.<br/>
 +
Thus, if <math>f(y)>=f(x)</math>, then y is always accepted.<br/>
 +
The higher that value of the pdf is in the vicinity of a point <math>y_1</math> , the more likely it is that a random variable will take on values around <math>y_1</math>.<br/>
 +
Therefore,we would want a high probability of acceptance for points generated near <math>y_1</math>.<br>
 +
[[File:Diag1.png‎]]<br>
  
 +
'''Note''':<br/>
 +
If the proposal comes from a region with low density, we may or may not accept; however, we accept for sure if the proposal comes from a region with high density.<br>
  
'''Algorithm''' <br>
+
===='''Remark 3'''====  
1. <math>x_t=5</math> (sample from the 5th row, although we can initialize the chain from anywhere within the support)<br />
 
2. Y~Unif[1,2,...,6]<br />
 
3. <math> r_{ij} = \min \{\frac{\pi_j q_{ji}}{\pi_i q_{ij}}, 1\} = \min \{\frac{\pi_j  1/6}{\pi_i  1/6}, 1\} = \min \{\frac{\pi_j}{\pi_i}, 1\}</math><br>
 
Note:  current state <math>i</math> is <math>X_t</math>,  the candidate state <math>j</math> is <math>Y</math>. <br>
 
Note: since <math>q_{ij}= q_{ji}</math> for all i and j, that is, the proposal distribution is symmetric, we have <math> r_{ij} = \min \{\frac{\pi_j}{\pi_i }, 1\} </math>
 
  
4. U~Unif(0,1)<br />
+
One strength of the Metropolis-Hastings algorithm is that normalizing constants, which are often quite difficult to determine, can be cancelled out in the ratio <math> r </math>. For example, consider the case where we want to sample from the beta distribution, which has the pdf:<br>
  if <math>u \leq r_{ij}</math>,<br />X<sub>t+1</sub>=Y<br />
+
(also notice that Metropolis Hastings is just a special case of Metropolis algorithm)
  else<br />
 
  X<sub>t+1</sub>=X<sub>t</sub><br />
 
  end if<br />
 
  go to (2)<br>
 
  
Notice how a point is always generated for X<sub>t+1</sub> regardless of whether the candidate state Y is accepted <br>
+
<math>
 +
\begin{align}
 +
f(x;\alpha,\beta)& = \frac{1}{\mathrm{B}(\alpha,\beta)}\, x^{\alpha-1}(1-x)^{\beta-1}\end{align}
 +
</math>
  
'''Matlab'''
+
The beta function, ''B'', appears as a normalizing constant but it can be simplified by construction of the method.
<pre style="font-size:14px">
 
pii=[.1,.1,.2,.4,.1,.1];
 
x(1)=5;
 
for ii=2:1000
 
  Y=unidrnd(6);                %%% Unidrnd(x) is a built-in function which generates a number between (0) and (x)
 
  r = min (pii(Y)/pii(x(ii-1)), 1);
 
  u=rand;
 
  if u<r
 
    x(ii)=Y;
 
  else
 
    x(ii)=x(ii-1);
 
  end
 
end
 
hist(x,6)    %generate histogram displaying all 1000 points
 
xx = x(501,end);    %After 500, the chain will mix well and converge.
 
hist(xx,6)                % The result should be better.
 
</pre>
 
[[File:MH_example1.jpg|300px]]
 
  
 +
====='''Example'''=====
  
'''NOTE:''' Generally we generate a large number of points (say, 1500) and throw away the first points (say, 500). Those first points are called the [[burn-in period]]. Since the chain is said to converge in the long run, the burn-in period is where the chain is converging toward the limiting distribution, but has not converged yet; by discarding those 500 points, our data set will be more representative of the desired limiting distribution, once the burn-in period is over, we say that the chain "mixes well".
+
<math>\,f(x)=\frac{1}{\pi^{2}}\frac{1}{1+x^{2}}</math>, where <math>\frac{1}{\pi^{2}} </math> is normalization factor and <math>\frac{1}{1+x^{2}} </math> is target distribution. <br>
 +
Then, we have <math>\,f(x)\propto\frac{1}{1+x^{2}}</math>.<br>
 +
And let us take <math>\,q(x|y)=\frac{1}{\sqrt{2\pi}b}e^{-\frac{1}{2b^{2}}(y-x)^{2}}</math>.<br>
 +
Then <math>\,q(x|y)</math> is symmetric since <math>\,(y-x)^{2} = (x-y)^{2}</math>.<br>
 +
Therefore Y can be simplified.
  
===Alternate Example: Discrete Case===
 
  
 +
We get :
  
Consider the weather. If it is sunny one day, there is a 5/7 chance it will be sunny the next. If it is rainy, there is a 5/8 chance it will be rainy the next.
+
<math>\,\begin{align}
<math>\pi</math>= [pi1 pi2]
+
\displaystyle r(x,y)
 +
& =min\left\{\frac{f(y)}{f(x)}\frac{q(x|y)}{q(y|x)},1\right\} \\
 +
& =min\left\{\frac{f(y)}{f(x)},1\right\} \\
 +
& =min\left\{ \frac{ \frac{1}{1+y^{2}} }{ \frac{1}{1+x^{2}} },1\right\}\\
 +
& =min\left\{ \frac{1+x^{2}}{1+y^{2}},1\right\}\\
 +
\end{align}
 +
</math>.
  
Use a discrete uniform distribution as the proposal distribution, because it is the simplest.
+
<br/>
 +
<math>\pi=[0.1\,0.1\,...] </math> stands for probility;<br/>
 +
<math>\pi \propto [3\,2\, 10\, 100\, 1.5] </math> is not brobility, so we take:<br/>
 +
<math>\Rightarrow \pi=1/c \times [3\, 2\, 10\, 100\, 1.5]</math> is probility where<br/>
 +
<math>\Rightarrow c=3+2+10+100+1.5 </math><br/>
 +
<br/>
 +
<br/>
  
<math> \mathbf{Q} =
+
In practice, if elements of <math>\pi</math> are functions or random variables, we need c to be the normalization factor, the summation/integration over all members of <math>\pi</math>. This is usually very difficult. Since we are taking ratios, with the Metropolis-Hasting algorithm, it is not necessary to do this.
\begin{bmatrix}
 
5/7 & 2/7 \\
 
1/8 & 5/8\\
 
 
\end{bmatrix}
 
</math> <br/>
 
  
 +
<br>
 +
For example, to find the relationship between weather temperature and humidity, we only have a proportional function instead of a probability function. To make it into a probability function, we need to compute c, which is really difficult. However, we don't need to compute c as it will be cancelled out during calculation of r.<br>
  
 +
======'''MATLAB'''======
 +
The Matlab code of the algorithm is the following :
 +
<pre style="font-size:12px">
 +
clear all
 +
close all
 +
clc
 +
b=2;
 +
x(1)=0;
 +
for i=2:10000
 +
    y=b*randn+x(i-1);
 +
    r=min((1+x(i-1)^2)/(1+y^2),1);
 +
    u=rand;
 +
    if u<r
 +
        x(i)=y;
 +
    else
 +
        x(i)=x(i-1);
 +
    end
 +
   
 +
end
 +
hist(x,100);
 +
%The Markov Chain usually takes some time to converge and this is known as the "burning time".
 +
</pre>
 +
[[File:MH_example2.jpg|300px]]
  
'''Algorithm''' <br>
+
However, while the data does approximately fit the desired distribution, it takes some time until the chain gets to the stationary distribution. To generate a more accurate graph, we modify the code to ignore the initial points.<br>
1. <math>x_t=1</math> (sample from the 1st row, although we could also choose the second)<br />
 
2. Y~Unif[1,2]<br />
 
3. <math> r_{ij} = \min \{\frac{\pi_j q_{ji}}{\pi_i q_{ij}}, 1\} = \min \{\frac{\pi_j  1/6}{\pi_i  1/6}, 1\} = \min \{\frac{\pi_j}{\pi_i}, 1\}</math><br>
 
Note:  current state <math>i</math> is <math>X_t</math>,  the candidate state <math>j</math> is <math>Y</math>. <br>
 
Note: since <math>q_{ij}= q_{ji}</math> for all i and j, that is, the proposal distribution is symmetric, we have <math> r_{ij} = \min \{\frac{\pi_j}{\pi_i }, 1\} </math>
 
  
4. U~Unif(0,1)<br />
+
'''MATLAB'''
  if <math>u \leq r_{ij}</math>,<br />X<sub>t+1</sub>=Y<br />
+
<pre style="font-size:16px">
  else<br />
+
b=2;
  X<sub>t+1</sub>=X<sub>t</sub><br />
+
x(1)=0;
  end if<br />
+
for ii=2:10500
  go to (2)<br>
+
y=b*randn+x(ii-1);
 +
r=min((1+x(ii-1)^2)/(1+y^2),1);
 +
u=rand;
 +
if u<=r
 +
x(ii)=y;
 +
else
 +
x(ii)=x(ii-1);
 +
end
 +
end
 +
xx=x(501:end) %we don't display the first 500 points because they don't show the limiting behaviour of the Markov Chain
 +
hist(xx,100)
 +
</pre>
 +
[[File:MH_Ex.jpg|300px]]
 +
<br>
 +
'''If a function f(x) can only take values from <math>[0,\infty)</math>, but we need to use normal distribution as the candidate distribution, then we can use <math>q=\frac{2}{\sqrt{2\pi}}*exp(\frac{-(y-x)^2}{2})</math>, where y is from <math>[0,\infty)</math>. <br>(This is essentially the pdf of the absolute value of a normal distribution centered around x)'''<br><br>
  
 +
Example:<br>
 +
We want to sample from <math>exp(2), q(y|x)~\sim~N(x,b^2)</math><br>
 +
<math>r=\frac{f(y)}{f(x)}=\frac{2*exp^(-2y)}{2*exp^(-2x)}=exp(2*(x-y))</math><br>
 +
<math>r=min(exp(2*(x-y)),1)</math><br>
  
'''Generalization of the above framework to the continuous case'''<br>
+
'''MATLAB'''
 +
<pre style="font-size:16px">
 +
x(1)=0;
 +
for ii=2:100
 +
y=2*(randn*b+abs(x(ii-1)))
 +
r=min(exp(2*(x-y)),1);
 +
u=rand;
 +
if u<=r
 +
x(ii)=y;
 +
else
 +
x(ii)=x(ii-1);
 +
end
 +
end
 +
</pre>
 +
<br>
  
In place of <math>\pi</math> use <math>f(x)</math>
+
'''Definition of Burn in:'''
In place of r<sub>ij</sub> use <math>q(y|x)</math> <br>
 
In place of r<sub>ij</sub> use <math>r(x,y)</math> <br>
 
Here, q(y|x) is a friendly distribution that is easy to sample, usually a symmetric distribution will be preferable, such that <math>q(y|x) = q(x|y)</math> to simplify the computation for <math>r(x,y)</math>.
 
  
 +
Typically in a MH Algorithm, a set of values generated at at the beginning of the sequence are "burned" (discarded) after which the chain is assumed to have converged to its target distribution. In the first example listed above, we "burned" the first 500 observations because we believe the chain has not quite reached our target distribution in the first 500 observations. 500 is not a set threshold, there is no right or wrong answer as to what is the exact number required for burn-in. Theoretical calculation of the burn-in is rather difficult, in the above mentioned example, we chose 500 based on experience and quite arbitrarily. 
  
'''Remarks'''<br>
+
Burn-in time can also be thought of as the time it takes for the chain to reach its stationary distribution. Therefore, in this case you will disregard everything uptil the burn-in period because the chain is not stabilized yet.  
1. The chain may not get to a stationary distribution if the # of steps generated are small. That is it will take a very large amount of steps to step through the whole support<br>
 
2. The algorithm can be performed with a <math>\pi</math> that is not even a probability mass function, it merely needs to be proportional to the probability mass function we wish to sample from. This is useful as we do not need to calculate the normalization factor. <br>
 
  
For example, if we are given <math>\pi^'=\pi\alpha=[5,10,11,2,100,1]</math>, we can normalize this vector by dividing the sum of all entries <math>s</math>.<br>
+
The Metropolis–Hasting Algorithm is started from an arbitrary initial value <math>x_0</math> and the algorithm is run for many iterations until this initial state is "forgotten". These samples, which are discarded, are known as ''burn-in''. The remaining
However we notice that when calculating <math>r_{ij}</math>, <br>
+
set of accepted values of <math>x</math> represent a sample from the distribution f(x).(http://en.wikipedia.org/wiki/Metropolis%E2%80%93Hastings_algorithm)<br/>
<math>\frac{\pi^'_j/s}{\pi^'_i/s}\times\frac{q_{ji}}{q_{ij}}=\frac{\pi^'_j}{\pi^'_i}\times\frac{q_{ji}}{q_{ij}}</math> <br>
 
<math>s</math> cancels out in this case. Therefore it is not necessary to calculate the sum and normalize the vector.<br>
 
  
This also applies to the continuous case,where we merely need <math> f(x) </math> to be proportional to the pdf of the distribution we wish to sample from. <br>
+
Burn-in time can also be thought of as the time it takes for the process to reach the stationary distribution pi. Suppose it takes 5 samples after which you reach the stationary distribution. You should disregard the first five samples and consider the remaining samples as representing your target distribution f(x). <br>
 +
   
 +
Several extensions have been proposed in the literature to speed up the convergence and reduce the so called “burn-in” period.
 +
One common suggestion is to match the first few moments of q(y|x) to f(x).
  
===Metropolis–Hasting Algorithm===
+
'''Aside''': The algorithm works best if the candidate density q(y|x) matches the shape of the target distribution f(x). If a normal distribution is used as a candidate distribution, the variance parameter b<sup>2</sup> has to be tuned during the burn-in period. <br/>
  
'''Definition''': <br>
+
1. If b is chosen to be too small, the chain will mix slowly (smaller proposed move, the acceptance rate will be high and the chain will converge only slowly the f(x)).  
Metropolis–Hastings algorithm is a Markov chain Monte Carlo (MCMC) method for obtaining a sequence of random samples from a probability distribution for which direct sampling is difficult. <br>
 
  
 +
2. If b is chosen to be too large, the acceptance rate will be low (larger proposed move and the chain will converge only slowly the f(x)).
  
'''Purpose''': <br>
 
"The purpose of the Metropolis-Hastings Algorithm is to <b>generate a collection of states according to a desired distribution</b> <math>P(x)</math>. <math>P(x)</math> is chosen to be the stationary distribution of a Markov process, <math>\pi(x)</math>." <br>
 
Source:(http://en.wikipedia.org/wiki/Metropolis%E2%80%93Hastings_algorithm)<br>
 
  
  
Metropolis-Hastings is an algorithm for constructing a Markov chain with a given limiting probability distribution. In particular, we consider what happens if we apply the Metropolis-Hastings algorithm repeatedly to a “proposal” distribution which has already been updated.<br>
+
'''Note''':
 +
The histogram looks much nicer if we reject the points within the burning time.<br>
  
  
The algorithm was named after Nicholas Metropolis and W. K. Hastings who extended it to the more general case in 1970.<br>
+
Example: Use M-H method to generate sample from f(x)=2x
 +
0<x<1, 0 otherwise.
  
 +
1) Initialize the chain with <math>x_i</math> and set <math>i=0</math>
  
'''Differences between the discrete and continuous case of the Markov Chain''':<br/>
+
2)<math>Y~\sim~q(y|x_i)</math>
 +
where our proposal function would be uniform [0,1] since it matches our original ones support.
 +
=><math>Y~\sim~Unif[0,1]</math>
  
1. <math>q(y|x)</math> is used in continuous, instead of <math>q_{ij}</math> in discrete <br/>
+
3)consider <math>\frac{f(y)}{f(x)}=\frac{y}{x}</math>,
2. <math>r(x,y)</math> is used in continuous, instead of <math>r{ij}</math> in discrete <br/>
+
<math>r(x,y)=min (\frac{y}{x},1)</math> since q(y|x<sub>i</sub>) and q(x<sub>i</sub>|y) can be cancelled together.
3. <math>f</math> is used instead of <math>\pi</math> <br/>
 
  
 +
4)<math>X_{i+1}=Y</math> with prob <math>r(x,y)</math>,
 +
<math>X_{i+1}=X_i</math>, otherwise
  
'''Build the Acceptance Ratio'''<br/>
+
5)<math>i=i+1</math>, go to 2
Before we consider the algorithm there are a couple general steps to follow to build the acceptance ratio:<br/>
 
  
a) Find the distribution you wish to use to generate samples from<br/>
+
<br>
b) Find a candidate distribution that fits the desired distribution, q(y|x). (the proposed moves are independent of the current state)<br/>
 
c) Build the acceptance ratio <math>\displaystyle \frac{f(y)q(x|y)}{f(x)q(y|x)}</math>
 
  
 +
Example form wikipedia
  
 +
===Step-by-step instructions===
  
Assume that f(y) is the target distribution; Choose q(y|x) such that it is a friendly distribution and easy to sample from.<br />
+
Suppose the most recent value sampled is <math>x_t\,</math>. To follow the Metropolis–Hastings algorithm, we next draw a new proposal state <math>x'\,</math> with probability density <math>Q(x'\mid x_t)\,</math>, and calculate a value
'''Algorithm:'''<br />
 
  
# Set <math>\displaystyle i = 0</math> and initialize the chain, i.e. <math>\displaystyle x_0 = s</math> where <math>\displaystyle s</math> is some state of the Markov Chain.
+
:<math>
# Sample <math>\displaystyle Y \sim q(y|x)</math>
+
a = a_1 a_2\,
# Set <math>\displaystyle r(x,y) = min(\frac{f(y)q(x|y)}{f(x)q(y|x)},1)</math>
+
</math>
# Sample <math>\displaystyle u \sim \text{UNIF}(0,1)</math>
 
# If <math>\displaystyle u \leq r(x,y), x_{i+1} = Y</math><br /> Else <math>\displaystyle x_{i+1} = x_i</math>
 
# Increment i by 1 and go to Step 2, i.e. <math>\displaystyle i=i+1</math>
 
  
<br> '''Note''': q(x|y) is moving from y to x and q(y|x) is moving from x to y.
+
where
<br>We choose q(y|x) so that it is simple to sample from.
 
<br>Usually, we choose a normal distribution.
 
  
NOTE2: The proposal q(y|x) y depends on x (is conditional on x)the current state, this makes sense ,because it's a necessary condition for MC. So the proposal should depend on x (also their supports should match) e.g q(y|x) ~ N( x, b<sup>2</sup>) here the proposal depends on x.
+
:<math>
If the next state is INDEPENDENT of the current state, then our proposal will not depend on x e.g. (A4 Q2, sampling from Beta(2,2) where the proposal was UNIF(0,1)which is independent of the current state. )
+
a_1 = \frac{P(x')}{P(x_t)} \,\!
 +
</math>
  
<br />
+
is the likelihood ratio between the proposed sample <math>x'\,</math> and the previous sample <math>x_t\,</math>, and
Comparing with previous sampling methods we have learned, samples generated from M-H algorithm are not independent of each other, since we accept future sample based on the current sample. Furthermore, unlike acceptance and rejection method, we are not going to reject any points in Metropolis-Hastings. In the equivalent of the "reject" case, we just leave the state unchanged. In other words, if we need a sample of 1000 points, we only need to generate the sample 1000 times.<br/>
 
  
<p style="font-size:20px;color:red;">
+
:<math>
Remarks
+
a_2 = \frac{Q(x_t \mid x')}{Q(x'\mid x_t)}
</p>
+
</math>
===='''Remark 1'''====
 
<span style="text-shadow: 0px 2px 3px 3399CC;margin-right:1em;font-family: 'Nobile', Helvetica, Arial, sans-serif;font-size:16px;line-height:25px;color:3399CC">
 
A common choice for q(y|x) is a normal distribution centered at x with standard deviation b. q(y|x)=N(x,b<sup>2</sup>)
 
  
i.e.
+
is the ratio of the proposal density in two directions (from <math>x_t\,</math> to <math>x'\,</math> and ''vice versa'').
<math>q(y|x)=q(x|y)</math><br>
+
This is equal to 1 if the proposal density is symmetric.
(we want to sample q centered at the current state.)<br>
+
Then the new state <math>\displaystyle x_{t+1}</math> is chosen according to the following rules.
<math>q(y|x)=\frac{1}{\sqrt{2\pi}b}\,e^{- \frac{\scriptscriptstyle 1}{\scriptscriptstyle 2b^2} (y-x)^2}</math>, (centered at x)<br>
 
<math>q(x|y)=\frac{1}{\sqrt{2\pi}b}\,e^{- \frac{\scriptscriptstyle 1}{\scriptscriptstyle 2b^2} (x-y)^2}</math>,(centered at y)<br>
 
<math>\Rightarrow (y-x)^2=(x-y)^2</math><br>
 
so <math>~q(y \mid x)=q(x \mid y)</math> <br>
 
In this case <math>\frac{q(x \mid y)}{q(y \mid x)}=1</math> and therefore <math> r(x,y)=\min \{\frac{f(y)}{f(x)}, 1\} </math> <br/><br />
 
This is true for any symmetric q. In general if q(y|x) is symmetric, then this algorithm is called Metropolis.<br/>
 
When choosing function q, it makes sense to choose a distribution with the same support as the distribution you want to simulate. eg. Beta ---> Choose q ~ Uniform(0,1)<br>
 
The chosen q is not necessarily symmetric. Depending on different target distribution, q can be uniform.</span>
 
  
===='''Remark 2'''====
+
:<math>
<span style="text-shadow: 0px 2px 3px 3399CC;margin-right:1em;font-family: 'Nobile', Helvetica, Arial, sans-serif;font-size:16px;line-height:25px;color:3399CC">
+
\begin{matrix}
The value y is accepted if u<=<math>min\{\frac{f(y)}{f(x)},1\}</math>, so it is accepted with the probability <math>min\{\frac{f(y)}{f(x)},1\}</math>.<br/>
+
\mbox{If } a \geq 1: &  \\
Thus, if <math>f(y)>=f(x)</math>, then y is always accepted.<br/>
+
& x_{t+1} = x',
The higher that value of the pdf is in the vicinity of a point <math>y_1</math> , the more likely it is that a random variable will take on values around <math>y_1</math>.<br/>
+
\end{matrix}
Therefore,we would want a high probability of acceptance for points generated near <math>y_1</math>.<br>
+
</math>
[[File:Diag1.png‎]]<br>
+
:<math>
 +
\begin{matrix}
 +
\mbox{else} & \\
 +
& x_{t+1} = \left\{
 +
                  \begin{array}{lr}
 +
                      x' & \mbox{ with probability }a \\
 +
                      x_t & \mbox{ with probability }1-a.
 +
                  \end{array}
 +
            \right.
 +
\end{matrix}
 +
</math>
  
'''Note''':<br/>  
+
The Markov chain is started from an arbitrary initial value <math>\displaystyle x_0</math> and the algorithm is run for many iterations until this initial state is "forgotten". 
If the proposal comes from a region with low density, we may or may not accept; however, we accept for sure if the proposal comes from a region with high density.<br>
+
These samples, which are discarded, are known as ''burn-in''. The remaining set of accepted values of <math>x</math> represent a sample from the distribution <math>P(x)</math>.
  
===='''Remark 3'''====
+
The algorithm works best if the proposal density matches the shape of the target distribution <math>\displaystyle P(x)</math> from which direct sampling is difficult, that is <math>Q(x'\mid x_t) \approx P(x') \,\!</math>.
 +
If a Gaussian proposal density <math>\displaystyle Q</math> is used the variance parameter <math>\displaystyle \sigma^2</math> has to be tuned during the burn-in period.
 +
This is usually done by calculating the ''acceptance rate'', which is the fraction of proposed samples that is accepted in a window of the last <math>\displaystyle N</math> samples.
 +
The desired acceptance rate depends on the target distribution, however it has been shown theoretically that the ideal acceptance rate for a one dimensional Gaussian distribution is approx 50%, decreasing to approx 23% for an <math>\displaystyle N</math>-dimensional Gaussian target distribution.<ref name=Roberts/>
  
One strength of the Metropolis-Hastings algorithm is that normalizing constants, which are often quite difficult to determine, can be cancelled out in the ratio <math> r </math>. For example, consider the case where we want to sample from the beta distribution, which has the pdf:<br>
+
If <math>\displaystyle \sigma^2</math> is too small the chain will ''mix slowly'' (i.e., the acceptance rate will be high but successive samples will move around the space slowly and the chain will converge only slowly to <math>\displaystyle P(x)</math>). On the other hand,
(also notice that Metropolis Hastings is just a special case of Metropolis algorithm)
+
if <math>\displaystyle \sigma^2</math> is too large the acceptance rate will be very low because the proposals are likely to land in regions of much lower probability density, so <math>\displaystyle a_1</math> will be very small and again the chain will converge very slowly.
  
<math>
+
== Class 19 - Tuesday July 9th 2013 ==
\begin{align}
+
'''Recall: Metropolis–Hasting Algorithm'''
f(x;\alpha,\beta)& = \frac{1}{\mathrm{B}(\alpha,\beta)}\, x^{\alpha-1}(1-x)^{\beta-1}\end{align}
 
</math>
 
  
The beta function, ''B'', appears as a normalizing constant but it can be simplified by construction of the method.
+
1) <math>X_i</math> = State of chain at time i. Set <math>X_0</math> = 0<br>
 +
2) Generate proposal distribution: Y ~ q(y|x) <br>
 +
3) Set <math>\,r=min[\frac{f(y)}{f(x)}\,\frac{q(x|y)}{q(y|x)}\,,1]</math><br>
 +
4) Generate U ~ U(0,1)<br>
 +
  If <math>U<r</math>, then<br>
 +
        <math>X_{i+1} = Y</math> % i.e. we accept Y as the next point in the Markov Chain <br>
 +
  else <br>
 +
        <math>X_{i+1}</math> = <math>X_i</math><br>
 +
  End if<br>
 +
5) Set i = i + 1. Return to Step 2. <br>
  
====='''Example'''=====
 
  
<math>\,f(x)=\frac{1}{\pi^{2}}\frac{1}{1+x^{2}}</math><br>
+
Why can we use this algorithm to generate a Markov Chain?<br>
Then, we have <math>\,f(x)\propto\frac{1}{1+x^{2}}</math>.<br>
 
And let us take <math>\,q(x|y)=\frac{1}{\sqrt{2\pi}b}e^{-\frac{1}{2b^{2}}(y-x)^{2}}</math>.<br>
 
Then <math>\,q(x|y)</math> is symmetric since <math>\,(y-x)^{2} = (x-y)^{2}</math>.<br>
 
Therefore Y can be simplified.
 
  
 +
<math>\,Y</math>~<math>\,q(y|x)</math> satisfies the Markov Property, as the current state does not depend on previous trials. Note that Y does not '''''have''''' to depend on X<sub>t-1</sub>; the Markov Property is satisfied as long as Y is not dependent on  X<sub>0</sub>, X<sub>1</sub>,..., X<sub>t-2</sub>. Thus, time t will not affect the choice of state.<br> 
  
We get :
 
  
<math>\,\begin{align}
+
==='''Choosing b: 3 cases'''===
\displaystyle r(x,y)  
+
If y and x have the same domain, say R, we could use normal distribution to model <math>q(y|x)</math>. <math>q(x|y)~normal(y,b^2), and q(y|x)~normal(x,b^2)</math>.
& =min\left\{\frac{f(y)}{f(x)}\frac{q(x|y)}{q(y|x)},1\right\} \\
+
In the continuous case of MCMC, <math>q(y|x)</math> is the probability of observing y, given you are observing x. We normally assume <math>q(y|x)</math> ~ N(x,b^2). A reasonable choice of b is important to ensure the MC does indeed converges to the target distribution f. If b is too small it is not possible to explore the whole support because the jumps are small. If b is large than the probability of accepting the proposed state y is small, and it is very likely that we reject the possibilities of leaving the current state, hence the chain will keep on producing the initial state of the Markov chain.  
& =min\left\{\frac{f(y)}{f(x)},1\right\} \\
 
& =min\left\{ \frac{ \frac{1}{1+y^{2}} }{ \frac{1}{1+x^{2}} },1\right\}\\
 
& =min\left\{ \frac{1+x^{2}}{1+y^{2}},1\right\}\\
 
\end{align}
 
</math>.
 
  
<br/>
+
To be precise, we are discussing the choice of variance for the proposal distribution.Large b simply implies larger variance for our choice of proposal distribution (Gaussian) in this case. Therefore, many points will be rejected and we will generate same points many times since there are many points that have been rejected.<br>
<math>\pi=[0.1\,0.1\,...] </math><br/>
 
<math>\pi \propto [3\,2\, 10\, 100\, 1.5] </math><br/>
 
<math>\Rightarrow \pi=1/c \times [3\, 2\, 10\, 100\, 1.5]</math><br/>
 
<math>\Rightarrow c=3+2+10+100+1.5 </math><br/>
 
<br/>
 
<br/>
 
  
In practice, if elements of <math>\pi</math> are functions or random variables, we need c to be the normalization factor, the summation/integration over all members of <math>\pi</math>. This is usually very difficult. Since we are taking ratios, with the Metropolis-Hasting algorithm, it is not necessary to do this.  
+
In this example, <math>q(y|x)=N(x, b^2)</math><br>
 +
 
 +
Demonstrated as follows, the choice of b will be significant in determining the quality of the Metropolis algorithm. <br>
 +
 
 +
This parameter affects the probability of accepting the candidate states, and the algorithm will not perform well if the acceptance probability is too large or too small, it also affects the size of the "jump" between the sampled <math>Y</math> and the previous state x<sub>i+1</sub>, as a larger variance implies a larger such "jump".<br>
  
<br>
+
If the jump is too large, we will have to repeat the previous stage; thus, we will repeat the same point for many times.<br>
For example, to find the relationship between weather temperature and humidity, we only have a proportional function instead of a probability function. To make it into a probability function, we need to compute c, which is really difficult. However, we don't need to compute c as it will be cancelled out during calculation of r.<br>
 
  
======'''MATLAB'''======
+
'''MATLAB b=2, b= 0.2, b=20 '''
The Matlab code of the algorithm is the following :
 
 
<pre style="font-size:12px">
 
<pre style="font-size:12px">
 
clear all
 
clear all
 
close all
 
close all
 
clc
 
clc
b=2;
+
b=2 % b=0.2 b=20;
 
x(1)=0;
 
x(1)=0;
 
for i=2:10000
 
for i=2:10000
Line 5,998: Line 6,266:
 
      
 
      
 
end
 
end
hist(x,100);
+
figure(1);
%The Markov Chain usually takes some time to converge and this is known as the "burning time".
+
hist(x(5000:end,100));
 +
figure(2);
 +
plot(x(5000:end));
 +
%The Markov Chain usually takes some time to converge and this is known as the "burning time"
 +
%Therefore, we don't display the first 5000 points because they don't show the limiting behaviour of the Markov Chain
 +
 
 +
generate the Markov Chain with 10000 random variable, using a large b and a small  b.
 
</pre>
 
</pre>
[[File:MH_example2.jpg|300px]]
 
  
However, while the data does approximately fit the desired distribution, it takes some time until the chain gets to the stationary distribution. To generate a more accurate graph, we modify the code to ignore the initial points.<br>
+
b tells where the next point is going to be. The appropriate b is supposed to explore all the support area.
 +
 
 +
f(x) is the stationary distribution list of the chain in MH. We generating y using q(y|x) and accept it with respect to r.
  
'''MATLAB'''
+
===='''b too small====
<pre style="font-size:16px">
+
If <math>b = 0.02</math>, the chain takes small steps so the chain doesn't explore enough of sample space.
b=2;
 
x(1)=0;
 
for ii=2:10500
 
y=b*randn+x(ii-1);
 
r=min((1+x(ii-1)^2)/(1+y^2),1);
 
u=rand;
 
if u<=r
 
x(ii)=y;
 
else
 
x(ii)=x(ii-1);
 
end
 
end
 
xx=x(501:end) %we don't display the first 500 points because they don't show the limiting behaviour of the Markov Chain
 
hist(xx,100)
 
</pre>
 
[[File:MH_Ex.jpg|300px]]
 
<br>
 
'''If a function f(x) can only take values from <math>[0,\infty)</math>, but we need to use normal distribution as the candidate distribution, then we can use <math>q=\frac{2}{\sqrt{2\pi}}*exp(\frac{-(y-x)^2}{2})</math>, where y is from <math>[0,\infty)</math>. <br>(This is essentially the pdf of the absolute value of a normal distribution centered around x)'''<br><br>
 
  
Example:<br>
+
If <math>b = 20</math>, jumps are very unlikely to be accepted; i.e. <math> y </math> is rejected as <math> u> r </math> and <math> Xt+1 = Xt</math>.
We want to sample from <math>exp(2), q(y|x)~\sim~N(x,b^2)</math><br>
+
i.e <math>\frac {f(y)}{f(x)}</math> and consequent <math> r </math> is very small and very unlikely that <math> u < r </math>, so the current value will be repeated.
<math>r=\frac{f(y)}{f(x)}=\frac{2*exp^(-2y)}{2*exp^(-2x)}=exp(2*(x-y))</math><br>
+
 
<math>r=min(exp(2*(x-y)),1)</math><br>
+
==='''Detailed Balance Holds for Metropolis-Hasting'''===
  
'''MATLAB'''
+
In metropolis-hasting, we generate y using q(y|x) and accept it with probability r, where <br>
<pre style="font-size:16px">
 
x(1)=0;
 
for ii=2:100
 
y=2*(randn*b+abs(x(ii-1)))
 
r=min(exp(2*(x-y)),1);
 
u=rand;
 
if u<=r
 
x(ii)=y;
 
else
 
x(ii)=x(ii-1);
 
end
 
end
 
</pre>
 
<br>
 
  
'''Definition of Burn in:'''
+
<math>r(x,y) = min\left\{\frac{f(y)}{f(x)}\frac{q(x|y)}{q(y|x)},1\right\} = min\left\{\frac{f(y)}{f(x)},1\right\}</math><br>
  
Typically in a MH Algorithm, a set of values generated at at the beginning of the sequence are "burned" (discarded) after which the chain is assumed to have converged to its target distribution. In the first example listed above, we "burned" the first 500 observations because we believe the chain has not quite reached our target distribution in the first 500 observations. 500 is not a set threshold, there is no right or wrong answer as to what is the exact number required for burn-in. Theoretical calculation of the burn-in is rather difficult, in the above mentioned example, we chose 500 based on experience and quite arbitrarily. 
+
Without loss of generality we assume <math>\frac{f(y)}{f(x)}\frac{q(x|y)}{q(y|x)} > 1</math><br>
  
The Metropolis–Hasting Algorithm is started from an arbitrary initial value <math>x_0</math> and the algorithm is run for many iterations until this initial state is "forgotten". These samples, which are discarded, are known as ''burn-in''. The remaining
+
Then r(x,y) (probability of accepting y given we are currently in x) is <br>
set of accepted values of <math>x</math> represent a sample from the distribution f(x).(http://en.wikipedia.org/wiki/Metropolis%E2%80%93Hastings_algorithm)<br/>
 
  
Burn-in time can also be thought of as the time it takes for the process to reach the stationary distribution pi. Suppose it takes 5 samples after which you reach the stationary distribution. You should disregard the first five samples and consider the remaining samples as representing your target distribution f(x). <br>
+
<math>r(x,y) = min\left\{\frac{f(y)}{f(x)}\frac{q(x|y)}{q(y|x)},1\right\} = \frac{f(y)}{f(x)}\frac{q(x|y)}{q(y|x)}</math><br>
   
 
Several extensions have been proposed in the literature to speed up the convergence and reduce the so called “burn-in” period.
 
One common suggestion is to match the first few moments of q(y|x) to f(x).
 
  
'''Aside''': The algorithm works best if the candidate density q(y|x) matches the shape of the target distribution f(x). If a normal distribution is used as a candidate distribution, the variance parameter b<sup>2</sup> has to be tuned during the burn-in period. <br/>
+
Now suppose that the current state is y and we are generating x; the probability of accepting x given that we are currently in state y is <br>
  
1. If b is chosen to be too small, the chain will mix slowly (smaller proposed move, the acceptance rate will be high and the chain will converge only slowly the f(x)).
+
<math>r(x,y) = min\left\{\frac{f(x)}{f(y)}\frac{q(y|x)}{q(x|y)},1\right\} = 1 </math><br>
  
2. If b is chosen to be too large, the acceptance rate will be low (larger proposed move and the chain will converge only slowly the f(x)).
+
This is because <math>\frac{f(y)}{f(x)}\frac{q(x|y)}{q(y|x)} < 1 </math> and its reverse <math>\frac{f(x)}{f(y)}\frac{q(y|x)}{q(x|y)} > 1 </math>. Then <math>r(x,y) = 1</math>.<br>
 +
We are interested in the probability of moving from from x to y in the Markov Chain generated by MH algorithm: <br>
 +
P(y|x) depends on two probabilities:
 +
1. Probability of generating y, and<br>
 +
2. Probability of accepting y. <br>
  
 +
<math>P(y|x) = q(y|x)*r(x,y) = q(y|x)*{\frac{f(y)}{f(x)}\frac{q(x|y)}{q(y|x)}} = \frac{f(y)*q(x|y)}{f(x)} </math> <br>
  
 +
The probability of moving to x given the current state is y:
  
'''Note''':
+
<math>P(x|y) = q(x|y)*r(y,x) = q(x|y)</math><br>
The histogram looks much nicer if we reject the points within the burning time.<br>
 
  
 +
So does detailed balance hold for MH? <br>
  
Example: Use M-H method to generate sample from f(x)=2x
+
If it holds we should have <math>f(x)*P(y|x) = f(y)*P(x|y)</math>.<br>
0<x<1, 0 otherwise.
 
  
1) Initialize the chain with <math>x_i</math> and set <math>i=0</math>
+
Left-hand side: <br>
  
2)<math>Y~\sim~q(y|x_i)</math>
+
<math>f(x)*P(y|x) = f(x)*{\frac{f(y)*q(x|y)}{f(x)}} = f(y)*q(x|y)</math><br>
where our proposal function would be uniform [0,1] since it matches our original ones support.
 
=><math>Y~\sim~Unif[0,1]</math>
 
  
3)consider <math>\frac{f(y)}{f(x)}=\frac{y}{x}</math>,
+
Right-hand side: <br>
<math>r(x,y)=min (\frac{y}{x},1)</math> since q(y|x<sub>i</sub>) and q(x<sub>i</sub>|y) can be cancelled together.
 
  
4)<math>X_{i+1}=Y</math> with prob <math>r(x,y)</math>,
+
<math>f(y)*P(x|y) = f(y)*q(x|y)</math><br>
<math>X_{i+1}=X_i</math>, otherwise
 
  
5)<math>i=i+1</math>, go to 2
+
Thus LHS and RHS are equal and the detailed balance holds for MH algorithm. <br>
 +
Therefore, f(x) is the stationary distribution of the chain.<br>
  
<br>
+
== Class 20 - Thursday July 11th 2013 ==
 +
=== Simulated annealing ===
 +
<br />
 +
'''Definition:''' Simulated annealing (SA) is a generic probabilistic metaheuristic for the global optimization problem of locating a good approximation to the global optimum of a given function in a large search space. It is often used when the search space is discrete (e.g., all tours that visit a given set of cities). <br />
 +
(http://en.wikipedia.org/wiki/Simulated_annealing) <br />
 +
"Simulated annealing is a popular algorithm in simulation for minimizing functions." (from textbook)<br />
  
Example form wikipedia
+
Simulated annealing is developed to solve the traveling salesman problem: finding the optimal path to travel all the cities needed<br/>
  
===Step-by-step instructions===
+
It is called "Simulated annealing" because it mimics the process undergone by misplaced atoms in a metal when<br />
 +
its heated and then slowly cooled.<br />
 +
(http://mathworld.wolfram.com/SimulatedAnnealing.html)<br />
  
Suppose the most recent value sampled is <math>x_t\,</math>. To follow the Metropolis–Hastings algorithm, we next draw a new proposal state <math>x'\,</math> with probability density <math>Q(x'\mid x_t)\,</math>, and calculate a value
+
It is a probabilistic method proposed in Kirkpatrick, Gelett and Vecchi (1983) and Cerny (1985) for finding the global minimum of a function that may have multiple local minimums.<br />
 +
(http://www.mit.edu/~dbertsim/papers/Optimization/Simulated%20annealing.pdf)<br />
  
:<math>
+
Simulated annealing was developed as an approach for finding the minimum of complex functions <br />
a = a_1 a_2\,
+
with multiple peaks; where standard hill-climbing approaches may trap the algorithm at a less that optimal peak.<br />
</math>
 
  
where
+
Suppose we generated a point <math> x </math> by an existing algorithm, and we would like to get a "better" point. <br>
 +
(eg. If we have generated a local min of a function and we want the global min) <br>
 +
Then we would use simulated annealing as a method to "perturb" <math> x </math> to obtain a better solution. <br>
 +
 +
Suppose we would like to min <math> h(x)</math>, for any arbitrary constant <math> T > 0</math>, this problem is equivalent to  max <math>e^{-h(x)/T}</math><br />
 +
Note that the exponential function is monotonic. <br />
 +
Consider f proportional  to  e<sup>-h(x)/T</sup>, sample of this distribution when T is small and
 +
close to the optimal point of h(x). Based on this observation, SA algorithm is introduced as :<br />
 +
<b>1.</b> Set T to be a large number<br />
 +
<b>2.</b> Initialize the chain: set <math>\,X_{t}  (ie.  i=0, x_0=s)</math><br />
 +
<b>3.</b> <math>\,y</math>~<math>\,q(y|x)</math><br/>
 +
(q should be symmetric)<br />
 +
<b>4.</b> <math>r = \min\{\frac{f(y)}{f(x)},1\}</math><br />
 +
<b>5.</b> U ~ U(0,1)<br />
 +
<b>6.</b> If U < r, <math>X_{t+1}=y</math> <br/>
 +
else, <math>X_{t+1}=X_t</math><br/>
 +
<b>7.</b> end  decrease T, and let i=i+1. Go back to 3. (This is where the difference lies between SA and MH. <br />
 +
(repeat the procedure until T is very small)<br/>
 +
<br/>
 +
<b>Note</b>: q(y|x) does not have to be symmetric. If q is non-symmetric, then the original MH formula is used.<br />
  
:<math>
+
The significance of T <br />  
a_1 = \frac{P(x')}{P(x_t)} \,\!
+
Initially we set T to be large when initializing the chain so as to explore the entire sample space and to avoid the possibility of getting stuck/trapped in one region of the sample space. Then we gradually start decreasing T so as to get closer and closer to the actual solution. 
</math>
 
  
is the likelihood ratio between the proposed sample <math>x'\,</math> and the previous sample <math>x_t\,</math>, and
+
Notice that we have:
 +
    <math> r = \min\{\frac{f(y)}{f(x)},1\} </math><br/>
 +
    <math> = \min\{\frac{e^{\frac{-h(y)}{T}}}{e^{\frac{-h(x)}{T}}},1\} </math> <br/>
 +
    <math> = \min\{e^{\frac{h(x)-h(y)}{T}},1\} </math><br/>
  
:<math>
+
Reasons we start with a large T but not a small T at the beginning:<br />
a_2 = \frac{Q(x_t \mid x')}{Q(x'\mid x_t)}
 
</math>
 
  
is the ratio of the proposal density in two directions (from <math>x_t\,</math> to <math>x'\,</math> and ''vice versa'').
+
<ul><li>A point in the tail when T is small would be rejected <br />
This is equal to 1 if the proposal density is symmetric.
+
</li><li>Chances that we reject points get larger as we move from large T to small T <br />
Then the new state <math>\displaystyle x_{t+1}</math> is chosen according to the following rules.
+
</li><li>Large T helps get to the mode of maximum value<br />
 +
</li></ul>
  
:<math>
+
Assume T is large <br />
\begin{matrix}
+
1. h(y) < h(x), e<sup>(h(x)-h(y))/T </sup> > 1, then r = 1, y will always be accepted.<br />
\mbox{If } a \geq 1: &  \\
+
2. h(y) > h(x), e<sup>(h(x)-h(y))/T </sup>< 1, then r < 1, y will be accepted with probability r.  '''Remark:'''this will help to scape from local minimum, because the algorithm prevents it from reaching and staying in the local minimum forever. <br />
& x_{t+1} = x',
+
Assume T is small<br />
\end{matrix}
+
1. h(y) < h(x), then r = 1, y will always be accepted.<br />
</math>
+
2. h(y) > h(x), e<sup>(h(x)-h(y))/T </sup> approaches to 0, then r goes to 0 and y will almost never be accepted.
:<math>
 
\begin{matrix}
 
\mbox{else} & \\
 
& x_{t+1} = \left\{
 
                  \begin{array}{lr}
 
                      x' & \mbox{ with probability }a \\
 
                      x_t & \mbox{ with probability }1-a.
 
                  \end{array}
 
            \right.
 
\end{matrix}
 
</math>
 
  
The Markov chain is started from an arbitrary initial value <math>\displaystyle x_0</math> and the algorithm is run for many iterations until this initial state is "forgotten". 
+
<p><br /> All in all, choose a large T to start off with in order for a higher chance that the points can explore. <br />
These samples, which are discarded, are known as ''burn-in''. The remaining set of accepted values of <math>x</math> represent a [[Sample (statistics)|sample]] from the distribution <math>P(x)</math>.
 
  
The algorithm works best if the proposal density matches the shape of the target distribution <math>\displaystyle P(x)</math> from which direct sampling is difficult, that is <math>Q(x'\mid x_t) \approx P(x') \,\!</math>.
+
'''Note''': The variable T is known in practice as the "Temperature", thus the higher T is, the more variability there is in terms of the expansion and contraction of materials. The term "Annealing" follows from here, as annealing is the process of heating materials and allowing them to cool slowly.<br />
If a Gaussian proposal density <math>\displaystyle Q</math> is used the variance parameter <math>\displaystyle \sigma^2</math> has to be tuned during the burn-in period.
 
This is usually done by calculating the ''acceptance rate'', which is the fraction of proposed samples that is accepted in a window of the last <math>\displaystyle N</math> samples.
 
The desired acceptance rate depends on the target distribution, however it has been shown theoretically that the ideal acceptance rate for a one dimensional Gaussian distribution is approx 50%, decreasing to approx 23% for an <math>\displaystyle N</math>-dimensional Gaussian target distribution.<ref name=Roberts/>
 
  
If <math>\displaystyle \sigma^2</math> is too small the chain will ''mix slowly'' (i.e., the acceptance rate will be high but successive samples will move around the space slowly and the chain will converge only slowly to <math>\displaystyle P(x)</math>).  On the other hand,
+
Asymptotically this algorithm is guaranteed to generate the global optimal answer, however in practice, we never sample forever and this may not happen.
if <math>\displaystyle \sigma^2</math> is too large the acceptance rate will be very low because the proposals are likely to land in regions of much lower probability density, so <math>\displaystyle a_1</math> will be very small and again the chain will converge very slowly.
 
  
== Class 19 - Tuesday July 9th 2013 ==
+
</p><p><br />
'''Recall: Metropolis–Hasting Algorithm'''
+
</p><p>Example: Consider <math>h(x)=3x^2</math>, 0&lt;x&lt;1
 +
</p><p><br />1) Set T to be large, for example, T=100<br />
 +
<br />2) Initialize the chain<br />
 +
<br />3) Set <math>q(y|x)~\sim~Unif[0,1]</math><br />
 +
<br />4) <math>r=min(exp(\frac{(3x^2-3y^2)}{100}),1)</math><br />
 +
<br />5) <math>U~\sim~U[0,1]</math><br />
 +
<br />6) If <i>U</i> &lt; <i>r</i> then <i>X</i><sub><i>t</i> + 1</sub> = <i>y</i> <br>
 +
<i>e</i><i>l</i><i>s</i><i>e</i>,<i>X</i><sub><i>t</i> + 1</sub> = <i>x</i><sub><i>t</i></sub><br />
 +
<br />7) Decrease T, go back to 3<br />
 +
</p>
 +
<div style="border:1px red solid">
 +
<p><b>MATLAB </b>
 +
</p>
 +
<pre style="font-size:12px">
 +
Syms x
 +
Ezplot('(x-3)^2',[-6,12])
 +
Ezplot('exp(-((x-3)^2))', [-6, 12])
 +
</pre>
  
1) X<sub>0</sub>= state of chain at time 0. Set i = 0<br>
+
[[File:Snip2013.png|350px]]
2) <math>Y</math>~<math>q(y|x)</math><br>
 
3) <math>\,r=min[\frac{f(y)}{f(x)}\,\frac{q(x|y)}{q(y|x)}\,,1]</math><br>
 
4) <math>U</math>~<math>Uniform(0,1)</math><br>
 
5)
 
If <math>U<r</math>, then<br>
 
  x<sub>(i+1)</sub> = y  % i.e. we accept y as the next point in the Markov Chain<br>
 
else<br>
 
  x<sub>(i+1)</sub> = x<sub>t</sub><br>
 
End if<br>
 
6) i = i + 1. Return to Step 2. <br>
 
  
 +
[[File:Snip20131.png|350px]]
  
Why can we use this algorithm to generate a Markov Chain?<br>
+
[[File:STAT_340.JPG]]
 +
http://www.wolframalpha.com/input/?i=graph+exp%28-%28x-3%29%5E2%2F10%29
 +
<b>MATLAB </b>
  
The current state will only be affected by the previous state, which satisfies the memoryless property of a Markov Chain. Thus, time t will not affect the choice of state.<br> 
+
Note that when T is small, the graph consists of a much higher bump; when T is large, the graph is flatter.  
  
 +
<pre style="font-size:14px">
  
==='''Choosing b: 3 cases'''===
 
 
To be precise, we are discussing the choice of variance for the proposal distribution. A large b simply implies a larger variance for our choice of proposal distribution (Gaussian) in this case. So there are many points should be rejected and we should generate same points many times since there are many points have been rejected.<br>
 
 
In this example, <math>q(y|x)=N(x, b^2)</math><br>
 
 
Demonstrated as follows, the choice of b will be significant in determining the quality of the Metropolis algorithm. <br>
 
 
This parameter affects the probability of accepting the candidate states, and the algorithm will not perform well if the acceptance probability is too large or too small, it also affects the size of the "jump" between the sampled <math>Y</math> and the previous state x<sub>i+1</sub>, as a larger variance implies a larger such "jump".<br>
 
 
If the jump is too large, we will have to repeat the previous stage; thus, we will repeat the same point for many times.<br>
 
 
'''MATLAB b=2, b= 0.2, b=20 '''
 
<pre style="font-size:12px">
 
 
clear all
 
clear all
 
close all
 
close all
clc
+
T=100;
b=2 % b=0.2 b=20;
+
x(1)=randn;
x(1)=0;
+
ii=1;
for i=2:10000
+
b=1;
    y=b*randn+x(i-1);
+
while T&gt;0.001
    r=min((1+x(i-1)^2)/(1+y^2),1);
+
  y=b*randn+x(ii);
    u=rand;
+
  r=min(exp((H(x(ii))-H(y))/T),1);
    if u<r
+
  u=rand;
        x(i)=y;
+
  if u&lt;r
    else
+
      x(ii+1)=y;
        x(i)=x(i-1);
+
  else
    end
+
      x(ii+1)=x(ii);
   
+
  end
 +
 
 +
T=0.99*T;
 +
ii=ii+1;
 
end
 
end
figure(1);
+
plot(x)
hist(x(5000:end,100));
 
figure(2);
 
plot(x(5000:end));
 
%The Markov Chain usually takes some time to converge and this is known as the "burning time"
 
%Therefore, we don't display the first 5000 points because they don't show the limiting behaviour of the Markov Chain
 
  
generate the Markov Chain with 10000 random variable, using a large b and a small  b.
 
 
</pre>
 
</pre>
 +
[[File:SA_example.jpg|350px]]
 +
</div>
 +
<p>Helper function:
 +
</p><p>an example is for H(x)=(x-3)^2
 +
</p>
 +
<pre style="font-size:12px">
 +
function c=H(x)
 +
c=(x-3)^2;
 +
end
 +
</pre>
 +
<p><b>Another Example:</b>
 +
<span class="texhtml"><i>h</i>(<i>x</i>) = ((<i>x</i> &minus; 2)<sup>2</sup> &minus; 4)((<i>x</i> &minus; 4)<sup>2</sup> &minus; 8)</span>
 +
</p>
 +
<pre style="font-size:12px">
 +
&gt;&gt;syms x
 +
&gt;&gt;ezplot(((x-2)^2-4)*((x-4)^2-8),[-1,8])
 +
</pre>
 +
<pre style="font-size:12px">
 +
function c=H(x)
 +
c=((x-2)^2-4)*((x-4)^2-8);
 +
end
 +
</pre>
 +
[[File:SA_example2.jpg|350px]]
 +
<p>Run earlier code with the new H(x) function
 +
</p>
 +
<h3> <span class="mw-headline" id="Motivation:_Simulated_Annealing_and_the_Travelling_Salesman_Problem"> Motivation: Simulated Annealing and the Travelling Salesman Problem </span></h3>
 +
<p>The Travelling Salesman Problem asks:  <br />
 +
Given n numbers of cities and the distances between each pair of cities, what is the shortest possible route that visits each city exactly once and returns to the original city? By letting two permutations if one results from an interchange of two of the coordinates of the other, we can use simulated annealing to approximate the best path.
 +
<p>[[File:Salesman n5.png|350px]]
 +
</p>
 +
<ul><li>An example of a solution of a travelling salesman problem on n=5. This is only one of many solutions, but we want to ensure we find the optimal solution.
 +
</li></ul>
 +
 +
<ul><li>Given n=5 cities, we search for the best route with the minimum distance to visit all cities and return to the starting city.
 +
</li></ul>
 +
<p><b>The idea of using Simulated Annealing algorithm</b>&nbsp;:
 +
Let Y (let Y be all possible combinations of route in terms of cities index) be generated by permutation of all cities. Let the target or objective distribution (f(x)) be the distance of the route given Y.
 +
Then use the Simulated Annealing algorithm to find the minimum value of f(x).<br />
 +
</p><p><b>Note</b>: in this case, Q is the permutation of the numbers. There will be may possible paths, especially when n is large. If n is very large, then it will take forever to check all the combination of routes.
 +
</p>
 +
<ul><li>This sort of knowledge would be very useful for those in a situation where they are on a limited budget or must visit many points in a short period of time. For example, a truck driver may have to visit multiple cities in southern Ontario and make it back to his original starting point within a 6-hour period. <br />
 +
</li></ul>
  
b tells where the next point is going to be. The appropriate b is supposed to explore all the support area.
+
'''Disadvantages of Simulated Annealing:'''<br/>
 
+
1. This method converges very slowly, and therefore very expensive.<br/>
===='''b too small====
+
2. This algorithm cannot tell whether it has found the global minimum.<br/><ref>
If b = 0.02, the chain takes small steps so the chain doesn't explore enough of sample space.
+
Reference: http://cs.adelaide.edu.au/~paulc/teaching/montecarlo/node140.html
 
+
</ref>
If b = 20, jumps are very unlikely to be accepted; i.e. y is rejected as u> r and Xt+1 = Xt
 
i.e f(y)/f(x) and consequent r is very small and very unlikely that u < r.so the current value will be repeated.
 
 
 
== Class 20 - Thursday July 11th 2013 ==
 
=== Simulated annealing ===
 
"Simulated annealing is a popular algorithm in simulation for minimizing functions." (from textbook)<br />
 
Simulated annealing was developed as an approach for finding the maximum of complex functions <br />
 
with multiple peaks where standard hill-climbing approaches may trap the algorithm at a less that optimal peak.<br />
 
 
 
Suppose we generated a point <math> x </math> by an existing algorithm, and we would like to get a "better" point. <br>
 
(eg. If we generated a local min of a function and we want the global min) <br>
 
Then we would use simulated annealing as a method to "perturb" <math> x </math> to obtain a better solution. <br>
 
 
Suppose we would like to min <math> h(x)</math>, for any arbitrary constant <math> T > 0</math>, this problem is equivalent to  max <math>e^{-h(x)/T}</math><br />
 
Note that exponential function is monotonic. <br />
 
Consider f proportional  to  e<sup>-h(x)/T</sup> sample of this distribution when T is small and
 
close to the optimal point of h(x). Based on this observation, SA algorithm is introduced as :<br />
 
Set T to be large , initialize the chain (set x<sub>t</sub>).<br />
 
 
 
Let y~q(y|x) where q should be symmetric
 
Then,
 
<math>r = \min\{\frac{f(y)}{f(x)},1\}=\min\{\frac{e^{-h(y)/T}}{e^{-h(x)/T}},1\}==\min\{e^{(-h(y)+h(x))/T},1\}</math><br>
 
  
Why do we start from a large T and gradually decrease it?<br>
+
== Class 21 - Tuesday July 16, 2013 ==
 +
=== Gibbs Sampling===
 +
'''Definition'''<br>
 +
In statistics and in statistical physics, Gibbs sampling or a Gibbs sampler is a Markov chain Monte Carlo (MCMC) algorithm for obtaining a sequence of observations which are approximately from a specified multivariate probability distribution (i.e. from the joint probability distribution of two or more random variables), when direct sampling is difficult.<br/>
 +
(http://en.wikipedia.org/wiki/Gibbs_sampling)<br/>
  
If we start with a small T, f(y) is small and we will have to repeat the sampling process. We might not be able to explore the entire sample space. It would be hard to get to the final solution.<br>
+
The Gibbs sampling method was originally developed by Geman and Geman [1984]. It was later brought into mainstream statistics by Gelfand and Smith [1990] and Gelfand, et al. [1990]<br/>
 +
Source:  https://www.msu.edu/~blackj/Scan_2003_02_12/Chapter_11_Markov_Chain_Monte_Carlo_Methods.pdf<br/>
  
Assume T is large <br />
+
Gibbs sampling is a general method for probabilistic inference which is often used when dealing with incomplete information. However, generality comes at some computational cost, and for many applications including those involving missing information, there are often alternative methods that have been proven to be more efficient in practice. For example, say we want to sample from a joint distribution <math>p(x_1,...,x_k)</math> (i.e. a posterior distribution). If we knew the full conditional distributions for each parameter (i.e. <math>p(x_i|x_1,x_2,...,x_{i-1},x_{i+1},...,x_k)</math>), we can use the Gibbs sampler to sample from these conditional distributions. <br>
1. h(y) < h(x), then  e<sup>(h(x)-h(y))/T </sup> > 1,  r = 1 y always be accepted.<br />
 
2. h(y) > h(x), then e<sup>(h(x)-h(y))/T </sup>< 1, r < 1<br />
 
Assume distribution T is small<br />
 
1. h(y) < h(x), then r = 1, we always accept r<br />
 
2. h(y) > h(x), then e<sup>(h(x)-h(y))/T </sup> approaches to 0.<br />
 
Then r goes to 0 and almost never accept.
 
  
<ul><li>Simulated annealing (SA) is a generic probabilistic metaheuristic for the global optimization problem of locating a good approximation to the global optimum of a given function in a large search space. It is often used when the search space is discrete (e.g., all tours that visit a given set of cities).<br />
+
When utilizing the Gibbs sampler, the candidate state is always accepted as the next state of the chain.(from text book)<br/>
</li><li>For certain problems, simulated annealing may be more efficient than exhaustive enumeration — provided that the goal is merely to find an acceptably good solution in a fixed amount of time, rather than the best possible solution.<br />
 
</li></ul>
 
<ul><li>This notion of slow cooling is implemented in the Simulated Annealing algorithm as a slow decrease in the probability of accepting worse solutions as it explores the solution space. Therefore accepting worse solutions is a fundamental property of metaheuristics because it allows for a more extensive search for the optimal solution.
 
</li></ul>
 
<ul><li>In short, Simulated Annealing is a popular algorithm in simulation for minimizing functions. This Simulated Annealing is an application of the Metropolis algorithm.
 
</li></ul>
 
  
<p>Since when h(x)=0, f(x)=1
+
*Another Markov Chain Monte Carlo (MCMC) method (first MCMC method introduced in this course is the MH Algorithm) <br/>
</p><p>Suppose that we want to minimize h(x) by maximizing <br /> <img class="tex" alt="e^{-\frac{h(x)}{T}}" src="/w/images/math/9/2/8/928757fdf3fac779ca019420f9fe4d15.png" />
+
*a special case of Metropolis-Hastings sampling where the random value is always accepted, i.e. as long as a point is proposed, it is accepted. <br/>  
</p><p><b>Note</b>: Exponential function is monotonic - meaning that it is only ever increasing/decreasing.<br />
+
* useful and make it simple and easier for sampling a d-dimensional random vector <math>\vec{x} = (x_1, x_2,...,x_d)</math><br />
</p><p>For a given (arbitrary) constant T &gt; 0, minimizing h(x) is equivalent to maximizing <img class="tex" alt="e^{-\frac{h(x)}{T}}" src="/w/images/math/9/2/8/928757fdf3fac779ca019420f9fe4d15.png" /><br />
+
* then the observations of d-dimensional random vectors <math>{\vec{x_1}, \vec{x_2}, ... , \vec{x_n}}</math> form a d-dimensional Markov Chain and the joint density <math>f(x_1, x_2, ... , x_d)</math> is an invariant distribution for the chain. i.e. for sampling multivariate distributions.<br />
</p><p>We want to find the x that minimizes h(x) and its value.<br />
+
* useful if sampling from conditional pdf, since they are easier to sample, in comparison to the joint distribution.<br/>
</p><p><br />
+
*Definition of univariate conditional distribution: all the random variables are fixed except for one; we need to use n such univariate conditional distributions to simulate n random variables.
</p><p>T is an arbitrary positive number. A <b>small T will narrow the function</b> and <b>large T will widen the function</b>
 
<b>Note</b>&nbsp;: Choosing the value of T will not affect the points of the min/max. <br />
 
</p><p>This means that if T is large, it is spread out. If T is small, then it is close to 2.<br />
 
</p><p>This equivalency follows because the exponential function is monotonic<br />
 
</p><p>Why? <span class="texhtml"><i>e</i><sup> &minus; <i>x</i></sup></span> is a decreasing function of x. Therefore the minimum value of this function occurs at the largest value of x.
 
</p><p>Consider the function <br />
 
</p><p>f ∝ e<sup>-h(x)/T</sup> amples of distribution when T is small are close to the optimal point of h(x). Based on this observation SA algorithm is introduced as
 
set T to be large
 
</p><p>We do not need to know the normalization factor (alpha).
 
</p><p><b>Note</b>: Exponential function is monotonic. <br />
 
</p><p>If T is small, then sampling from f is in fact a sample of points close to the mode of <img class="tex" alt="e^{\frac{-h(x)}{T}}" src="/w/images/math/e/5/8/e58065d24209579e8387882df260f4ca.png" /> which are the min of h(x). <br />
 
<br/>
 
Based on this intuition, <b>simulated annealing algorithm has the process</b>:<br />
 
<b>1.</b> Set T to be a large number<br />
 
<b>2.</b> Initialize the chain: set <math>X_{t}  (ie.   i=0, x_0=s)</math><br />
 
<b>3.</b> y ~ q(y|x) <br/>
 
(q should be symmetric)<br />
 
<b>4.</b> <math>r = \min\{\frac{f(y)}{f(x)},1\}</math><br />
 
<b>5.</b> U ~ U(0,1)<br />
 
<b>6.</b> If U < r, <math>X_{t+1}=Y</math> <br/>
 
else, <math>X_{t+1}=X_t</math><br/>
 
<b>7.</b> end  decrease T, and let i=i+1. Go back to 3. (This is where the difference lies between SA and MH. <br />
 
(repeat the procedure until T is very small)<br/>
 
<br/>
 
<b>Note</b>: q(y|x) does not have to be symmetric. If q is non-symmetric, then the original MH formula is used.<br />
 
In most academic papers q(y|x) is chosen to be symmetric for convenience.
 
</p><p><b>Note</b>: The reason we start with a large T and not a small T at the beginning:<br />
 
</p>
 
<ul><li>A point in the tail when T is large would be rejected <br />
 
</li><li>Chance we reject pointes gets larger and larger as we move from large to small T <br />
 
</li><li>Large T helps get to mode of maximum value<br />
 
</li></ul>
 
  
{{Cleanup|reason= There are problems with the format>
+
'''Difference between Gibbs Sampling & MH'''<br>
}}
+
Gibbs Sampling generates new value based on the conditional distribution of other components (unlike MH, which does not require conditional distribution).<br/>
 +
eg. We are given the following about <math> f(x_1,x_2) , f(x_1|x_2),f(x_2|x_1) </math><br/>
 +
1. let <math>x^*_1 \sim f(x_1|x_2)</math><br/>
 +
2. <math>x^*_2 \sim f(x_2|x^*_1)</math><br/>
 +
3. substitute <math>x^*_2</math> back into first step and repeat the process. <br/>
  
{{Cleanup|reason= Delete all copyrighted materials>
+
Also, for Gibbs sampling, we will "always accept a candidate point", unlike MH<br/>
}}
+
Source:  https://www.msu.edu/~blackj/Scan_2003_02_12/Chapter_11_Markov_Chain_Monte_Carlo_Methods.pdf<br/>
  
<b>Suppose T is large</b>  <br />
+
<div style = "align:left; background:#F5F5DC; font-size: 120%">
1. If <math>h(y) < h(x)</math>, then <math>e^{\frac{h(x)-h(y)}{T}} > 1.</math> Therefore r=1 and we will accept accept y. <br>
+
'''Gibbs Sampling as a special form of the Metropolis Hastings algorithm'''<br>
2. If <math>h(y) > h(x)</math>, then <math>e^{\frac{h(x)-h(y)}{T}} < 1.</math> Therefore r<1 and we will accept y with probability r. This will help us escape from local minima.<br>
 
[<b>Suppose T is small</b> (<img class="tex" alt="T \rightarrow 0" src="/w/images/math/8/a/b/8ab711236d4d57f703a352c467e36400.png" />)]] <br />
 
1. If <span class="texhtml"><i>h</i>(<i>y</i>) &lt; <i>h</i>(<i>x</i>)</span>, then <img class="tex" alt="e^{\frac{h(x)-h(y)}{T}} \rightarrow \infty" src="/w/images/math/e/8/4/e84abac0906873a00b32a9342dcb0a21.png" />. <br />
 
Therefore r=1, we always accept y.
 
Since h(y) takes on a lower value, moving towards h(y) is considered a good move and we always accept such a good move.<br />
 
</p><p>2. If <span class="texhtml"><i>h</i>(<i>y</i>) &gt; <i>h</i>(<i>x</i>)</span>, then <img class="tex" alt="e^{\frac{h(x)-h(y)}{T}} \rightarrow 0" src="/w/images/math/5/5/9/5599b8073be873ad6a3638cb4c3cb26c.png" />. <br />
 
Therefore <img class="tex" alt="r \rightarrow 0" src="/w/images/math/8/9/3/893dae76989af5ab8fe1371dfb66865f.png" />, we almost never accept y.<br />
 
</p><p>3. If r is equal to 1 or close to 1, then we accept the move. If r is close to 0, then that means the probability of the move is close to 0, so we almost reject.<br />
 
</p>
 
<ul><li>Essentially, the smaller the value of T, the sharper the distribution, and the higher the probability of rejection. We start by picking T large so that there is a lower probability of rejection which is more efficient. The algorithm will then be able to explore the target distribution instead of rejecting all proposed points and just repeating the previous state. <br />
 
</li><li>Note though that the convergence of this algorithm to an accurate estimate of the global minimum is not guaranteed. We can never be sure if we have escaped the local minimums, if it is a complex example, and if there are a lot of them. However, with a large enough T and reasonable choice of 'b' in the proposal density the algorithm should work for most functions. 
 
</li></ul>
 
<ul><li>Initial T is large to make sure it can escape from the wrong region. (If initial T is small, it may be trapped in the wrong region) <br />
 
</li></ul>
 
<p>The decrease of T makes the result more and more accurate.<br />
 
</p>
 
Also, the main reason to choose T to be large enough at first is mainly because we have no idea what the possibilities of x<sub>t</sub> can be. With that in mind, if we initialize a value of x which is away from the mean too much,we may never have the chance to ever get any closer to mean because the probability to move towards the wrong direction will be way too high due to the mechanism of the algorithm.
 
<p><br /> In simple words, choose a large T to start off with in order for a higher chance that the points can explore. <br />
 
</p><p><br />
 
</p>
 
The acceptance probability is also equal to<div>
 
<p>min(<img class="tex" alt="\frac {e^{-\frac {h(y)}{T}}}{e^{-\frac {h(x)}{T}}}" src="/w/images/math/1/4/3/143c12c0d26cdf45f30f5663a6b4b80f.png" />,1)=min(<img class="tex" alt="e^{\frac {h(x)-h(y)}{T}}" src="/w/images/math/b/8/b/b8bd29758d5d1593c16f47e99a93427f.png" />,1)<br />
 
</p><p><b>Note</b>: The variable T is known in practice as the "Temperature", thus the higher T is, the more variability there is in terms of the expansion and contraction of materials. The term "Annealing" follows from here, as annealing is the process of heating materials and allowing them to cool slowly - in our case, starting the algorithm with a high T, and then lowering it. Because when T is small, it is almost impossible to accept r when h(y) > h(x) if we want to find the minimum value.<br />
 
</p><p><br />
 
  
Asymptotically this algorithm is guaranteed to generate the global optimal answer, however in practice we never sample forever and this may not happen.
+
The Gibbs Sampler is simply a case of the Metropolis Hastings algorithm<br>
  
</p><p><br />
+
here, the proposal distribution is <math>q(Y|X)=f(X^j|X^*_i, i\neq j)=\frac{f(Y)}{f(X_i, i\neq j)}</math> for <math>X=(X_1,...,X_n)</math>, <br>
</p><p>Example: Consider <math>h(x)=3x^2</math>, 0&lt;x&lt;1
+
which is simply the conditional distribution of each element conditional on all the other elements in the vector. <br>
</p><p><br />1) Set T to be large, for example, T=100<br />
+
similarly <math>q(X|Y)=f(X|Y^*_i, i\neq j)=\frac{f(X)}{f(Y_i, i\neq j)}</math><br>
<br />2) Initialize the chain<br />
+
notice that <math>(Y_i, i\neq j)</math> and <math>(X_i, i\neq j)</math> are identically distributed. <br>
<br />3) Set <math>q(y|x)~\sim~Unif[0,1]</math><br />
 
<br />4) <math>r=min(exp(\frac{(3x^2-3y^2)}{100}),1)</math><br />
 
<br />5) <math>U~\sim~U[0,1]</math><br />
 
<br />6) If <i>U</i> &lt; <i>r</i> then <i>X</i><sub><i>t</i> + 1</sub> = <i>y</i> <br>  
 
<i>e</i><i>l</i><i>s</i><i>e</i>,<i>X</i><sub><i>t</i> + 1</sub> = <i>x</i><sub><i>t</i></sub><br />
 
<br />7) Decrease T, go back to 3<br />
 
</p>
 
<div style="border:1px red solid">
 
<p><b>MATLAB </b>
 
</p>
 
<pre style="font-size:12px">
 
Syms x
 
Ezplot('(x-3)'^2)
 
Ezplot('(x-3)^2',[-6,12])
 
Ezplot('exp(-((x-3)^2))', [-6, 12])
 
</pre>
 
<p>ezplot('(x-3)^2')<br />
 
<gallery>
 
</gallery>
 
<a href="/wiki/File:Snip20130711_1.png" class="image"><img alt="Snip20130711 1.png" src="/w/images/thumb/8/80/Snip20130711_1.png/300px-Snip20130711_1.png" width="300" height="236" /></a><br />
 
ezplot((x-3)^2,[-6, 12])<br />
 
<a href="/wiki/File:Snip2013.png" class="image"><img alt="Snip2013.png" src="/w/images/thumb/8/8d/Snip2013.png/300px-Snip2013.png" width="300" height="249" /></a><br />
 
ezplot(exp(-((x-3)^2)),[-6, 12])<br />
 
<a href="/wiki/File:Snip20131.png" class="image"><img alt="Snip20131.png" src="/w/images/thumb/e/e2/Snip20131.png/300px-Snip20131.png" width="300" height="235" /></a><br />
 
</p><p>initial the chain is important to find the probability to make the value reject or accept.
 
</p><p><b>MATLAB </b>
 
</p>
 
<pre style="font-size:12px">
 
  
clear all
+
the distribution we wish to simulate from is <math>p(X) = f(X) </math>
close all
+
also, <math>p(Y) = f(Y) </math>
T=100;
 
x(1)=randn;
 
ii=1;
 
b=1;
 
while T&gt;0.001
 
  y=b*randn+x(ii);
 
  r=min(exp((H(x(ii))-H(y))/T),1);
 
  u=rand;
 
  if u&lt;r
 
      x(ii+1)=y;
 
  else
 
      x(ii+1)=x(ii);
 
  end
 
  
T=0.99*T;
+
Hence, the acceptance ratio in the Metropolis-Hastings algorithm is: <br>
ii=ii+1;
+
<math>r(x,y) = min\left\{\frac{f(x)}{f(y)}\frac{q(y|x)}{q(x|y)},1\right\} = min\left\{\frac{f(x)}{f(y)}\frac{f(y)}{f(x)},1\right\} = 1 </math><br>
end
+
so the new point will always be accepted, and no points are rejected and the Gibbs Sampler is an efficient algorithm in that aspect. <br>
plot(x)
+
</div>
  
</pre>
+
<b>Advantages </b><ref>
[[File:SA_example.jpg|350px]]
 
</div>
 
<p>when T is large, it is helpful for generating the function.
 
</p><p>an example is for H(x)=(x-3)^2
 
</p>
 
<pre style="font-size:12px">
 
function c=H(x)
 
c=(x-3)^2;
 
end
 
</pre>
 
<p><b>Another Example:</b>
 
<span class="texhtml"><i>h</i>(<i>x</i>) = ((<i>x</i> &minus; 2)<sup>2</sup> &minus; 4)((<i>x</i> &minus; 4)<sup>2</sup> &minus; 8)</span>
 
</p>
 
<pre style="font-size:12px">
 
&gt;&gt;syms x
 
&gt;&gt;ezplot(((x-2)^2-4)*((x-4)^2-8),[-1,8])
 
</pre>
 
<pre style="font-size:12px">
 
function c=H(x)
 
c=((x-2)^2-4)*((x-4)^2-8);
 
end
 
</pre>
 
[[File:SA_example2.jpg|350px]]
 
<p>Run earlier code with the new H(x) function
 
</p>
 
<h3> <span class="mw-headline" id="Motivation:_Simulated_Annealing_and_the_Travelling_Salesman_Problem"> Motivation: Simulated Annealing and the Travelling Salesman Problem </span></h3>
 
<p>The Travelling Salesman Problem asks:  <br />
 
Given n numbers of cities and the distances between each pair of cities, what is the shortest possible route that visits each city exactly once and returns to the original city?
 
</p><p><a href="/wiki/File:Salesman_n5.png" class="image"><img alt="Salesman n5.png" src="/w/images/9/9c/Salesman_n5.png" width="286" height="245" /></a>
 
</p>
 
<ul><li>An example of a solution of a travelling salesman problem on n=5. This is only one of many solutions, but we want to ensure we find the optimal solution.
 
</li></ul>
 
<p><a href="/wiki/File:Travellingsalesman.jpg" class="image"><img alt="Travellingsalesman.jpg" src="/w/images/9/94/Travellingsalesman.jpg" width="755" height="394" /></a>
 
</p>
 
<ul><li>Given n=5 cities, we search for the best route with the minimum distance to visit all cities and return to the starting city.
 
</li></ul>
 
<p><b>The idea of using Simulated Annealing algorithm</b>&nbsp;:
 
Let Y (let Y be all possible combinations of route in terms of cities index) be generated by permutation of all cities. Let the target or objective distribution (f(x)) be the distance of the route given Y.
 
Then use the Simulated Annealing algorithm to find the minimum value of f(x).<br />
 
</p><p><b>Note</b>: in this case, Q is the permutation of the numbers. There will be may possible paths, especially when n is large. If n is very large, then it will take forever to check all the combination of routes.
 
</p>
 
<ul><li>This sort of knowledge would be very useful for those in a situation where they are on a limited budget or must visit many points in a short period of time. For example, a truck driver may have to visit multiple cities in southern Ontario and make it back to his original starting point within a 6-hour period. <br />
 
</li></ul>
 
what happen? someone delete the notes? Dyjang seems to have deleted 2 lectures worth of notes.
 
 
 
<b>Disadvantages of Simulated Annealing:<b><br/>
 
1. This method converges very slowly, and therefore very expensive.<br/>
 
2. This algorithm cannot tell whether it has found the global minimum.<br/><ref>
 
Reference: http://cs.adelaide.edu.au/~paulc/teaching/montecarlo/node140.html
 
</ref>
 
 
 
== Class 21 - Tuesday July 16, 2013 ==
 
=== Gibbs Sampling===
 
<b>Definition</b><br>
 
Gibbs sampling is a general method for probabilistic inference which is well used in the situation like coping with incomplete information. However, generality comes at some computational cost, and for many applications including those involving missing information there are often alternative methods that have been shown to be more efficient in practice. Suppose we want to sample from a joint distribution <math>p(x_1,...,x_k)</math> (i.e. a posterior distribution). If we knew the full condition distributions for each parameter (i.e. <math>p(x_i|x_1,x_2,...,x_{i-1},x_{i+1},...,x_k)</math>), we can use the Gibbs sampler to sample from the joint distribution. <br>
 
 
 
- another Markov Chain Monte Carlo (MCMC) method (first MCMC method introduced in this course is the MH Algorithm) <br/>
 
- a special case of Metropolis-Hastings sampling wherein the random value is always accepted, i.e. as long as a point is proposed, it is accepted. <br/>
 
- useful for sampling a d-dimensional random vector <math>\vec{x} = (x_1, x_2,...,x_d)</math><br />
 
i.e. for sampling multivariate distributions.<br />
 
- useful if sampling from conditional pdf, since they are easier to sample from than the joint distribution.<br/>
 
-In general, the difference between Gibbs Sampling and MH is that Gibbs Sampling generates new value based on the conditional distribution of other components.<br/><br/>
 
 
 
<b>Advantages </b><ref>
 
 
http://wikicoursenote.com/wiki/Stat341#Gibbs_Sampling_-_June_30.2C_2009
 
http://wikicoursenote.com/wiki/Stat341#Gibbs_Sampling_-_June_30.2C_2009
 
</ref>
 
</ref>
  
*The algorithm has an acceptance rate of 1. Thus it is efficient because we keep all the points we sample.
+
*The algorithm has an acceptance rate of 1. Thus, it is efficient because we keep all the points that we sample from.
*It is useful for high-dimensional distributions.
+
*It is simple and straightforward if and only if we know the conditional pdf. 
 +
*It is useful for high-dimensional distributions. (ie. for sampling multivariate PDF)
 +
*It is useful if sampling from conditional PDF are easier than sampling from the joint.  
  
 
<br />
 
<br />
Line 6,459: Line 6,563:
  
 
*We rarely know how to sample from the conditional distributions.
 
*We rarely know how to sample from the conditional distributions.
 +
*The probability functions of the conditional probability are usually unknown or hard to sample from.
 
*The algorithm can be extremely slow to converge.
 
*The algorithm can be extremely slow to converge.
 
*It is often difficult to know when convergence has occurred.
 
*It is often difficult to know when convergence has occurred.
 
*The method is not practical when there are relatively small correlations between the random variables.
 
*The method is not practical when there are relatively small correlations between the random variables.
  
'''Note:''' Other optimizing algorithms introduced such as Simulated Annealing settles on a minimum eventually. This means that if we generate enough observations and plot them in a time series plot, the plot will eventually flatten at the optimal value. For Gibbs Sampling however, when convergence is achieved, instead of staying at the optimal value, the Gibbs Sampler continues to wonder through the target distribution (i.e. will not stay at the optimal point) forever.
+
'''Gibbs Sampler Steps:'''<br\><ref>
 +
http://www.people.fas.harvard.edu/~plam/teaching/methods/mcmc/mcmc.pdf
 +
</ref>
 +
Let's suppose that we are interested in sampling from the posterior p(x|y), where x is a vector of three parameters, x1, x2, x3. <br\>
 +
The steps to a Gibbs Sampler are:<br\>
 +
1. Pick a vector of starting value x(0). Any x(0) will converge eventually, but it can be chosen to take fewer iterations<br\>
 +
2. Start with any x(order does not matter, but I will start with x1 for convenience). Draw a value x1(1)from the full conditional p(x1|x2(0),x3(0),y)<br\>
 +
3. Draw a value x2(1) from the full conditional p(x2|x1(1),x3(0),y). Note that we must use the updated value of x1(1).<br\>
 +
4. Draw a value x3(1) from the full conditional p(x3|x1(1),x2(1),y) using both updated values.<br\>
 +
5. Draw x2 using x1 and continually using the most updated values. <br\>
 +
6. Repeat until we get M draws, we each draw being a vector x(t).<br\>
 +
7. Optional burn-in or thinning.<br\>
 +
Our result is a Markov chain with a bunch of draws of x that are approximately from our posterior.
  
<b>Example:</b> We want to sample from a target joint distribution f(x<sub>1</sub>, x<sub>2</sub>), which is not easy to sample from but the conditional pdfs f(x<sub>1</sub>|x<sub>2</sub>) & f(x<sub>2</sub>|x<sub>1</sub>) are very easy to sample from. We can find the stationary distribution (target distribution) using Gibbs sampling: <br/>
+
'''The Basic idea:''' <br>
 +
The distinguishing feature of Gibbs sampling is that the underlying Markov chain is constructed from a sequence of conditional distributions. The essential idea is updating one part of the previous element while keeping the other parts fixed - it is useful in many instances where the state variable is a random variable taking values in a general space, not just in R<sup>n</sup>. (Simulation and the Monte Carlo Method, Reuven Y. Rubinstein)
 +
 
 +
'''Note:''' <br>
 +
1.Other optimizing algorithms introduced such as Simulated Annealing settles on a minimum eventually,which means that if we generate enough observations and plot them in a time series plot, the plot will eventually flatten at the optimal value.<br\>
 +
2.For Gibbs Sampling however, when convergence is achieved, instead of staying at the optimal value, the Gibbs Sampler continues to wonder through the target distribution (i.e. will not stay at the optimal point) forever.<br\> 
 +
'''Special Example'''<br\>
 +
<pre>
 +
function gibbs2(n, thin)
 +
  x_samp = zeros(n,1)
 +
  y_samp = zeros(n,1)
 +
  x=0.0
 +
  y=0.0
 +
  for i=1:n
 +
      for j=1:thin
 +
        x=(y^2+4)*randg(3)
 +
        y=1/(1+x)+randn()/sqrt(2*x+2)
 +
      end
 +
      x_samp[i] = x
 +
      y_samp[i] = y
 +
  end
 +
  return x_samp, y_samp
 +
end
 +
1
 +
2
 +
julia> @elapsed gibbs2(50000,1000)
 +
7.6084020137786865
 +
</pre>
 +
 
 +
'''Theoretical Example''' <br/>
 +
 
 +
Gibbs Sampler Application (Inspired by Example 10b in the Ross Simulation (4th Edition Textbook))
 +
 
 +
Suppose we are a truck driver who randomly puts n basketballs into a 3D storage cube sized so that each edge of the cube is 300cm in length. The basket balls are spherical and have a radius of 25cm each.
 +
 
 +
Because the basketballs have a radius of 25cm, the centre of each basketball must be at least 50cm away from the centre of another basketball. That is to say, if two basketballs are touching (as close together as possible) their centres will be 50cm apart.
 +
 
 +
Clearly the distribution of n basketballs will need to conditioned on the fact that no basketball is placed so that its centre is closer than 50cm to another basketball.
 +
 
 +
This gives:
 +
 
 +
Beta = P{the centre of no two basketballs are within 50cm of each other}
 +
 
 +
That is to say, the placement of basketballs is conditioned on the fact that two balls cannot overlap.
 +
 
 +
This distribution of n balls can be modelled using the Gibbs sampler.
 +
 
 +
1. Start with n basketballs positioned in the cube so that no two centres are within 50cm of each other<br />
 +
2. Generate a random number U and let I = floor(n*U) + 1<br />
 +
3. Generate another random point <math>X_k</math> in the storage box.<br />
 +
4. If <math>X_k</math> is not within 50cm of any other point, excluding point <math>X_I</math>: <br />
 +
then replace <math>X_I</math> by this new point. <br />
 +
Otherwise: return to step 3.<br />
 +
 
 +
After many iterations, the set of n points will approximate the distribution.
 +
 
 +
 
 +
'''Example1''' <br/>
 +
We want to sample from a target joint distribution f(x<sub>1</sub>, x<sub>2</sub>), which is not easy to sample from but the conditional pdfs f(x<sub>1</sub>|x<sub>2</sub>) & f(x<sub>2</sub>|x<sub>1</sub>) are very easy to sample from. We can find the stationary distribution (target distribution) using Gibbs sampling: <br/>
 
1. x<sub>1</sub>* ~ f(x<sub>1</sub>|x<sub>2</sub>) (here x<sub>2</sub> is given) => x = [x<sub>1</sub>* x<sub>2</sub>] <br/>
 
1. x<sub>1</sub>* ~ f(x<sub>1</sub>|x<sub>2</sub>) (here x<sub>2</sub> is given) => x = [x<sub>1</sub>* x<sub>2</sub>] <br/>
 
2. x<sub>2</sub>* ~ f(x<sub>2</sub>|x<sub>1</sub>*) (here x<sub>1</sub>* is generated from above) => x = [x<sub>1</sub>* x<sub>2</sub>*] <br/>
 
2. x<sub>2</sub>* ~ f(x<sub>2</sub>|x<sub>1</sub>*) (here x<sub>1</sub>* is generated from above) => x = [x<sub>1</sub>* x<sub>2</sub>*] <br/>
Line 6,474: Line 6,649:
  
 
Suppose we want to sample from multivariate pdf f(x), where <math>\vec{x} =  (x_1, x_2,...,x_d)</math> is a d-dimentional vector.<br/>
 
Suppose we want to sample from multivariate pdf f(x), where <math>\vec{x} =  (x_1, x_2,...,x_d)</math> is a d-dimentional vector.<br/>
Suppose <math>\vec{x} _t = (x_t,_1, x_t,_2,...,x_t,_d)</math><br/>
+
Suppose <math>\vec{x} _t = (x_t,_1, x_t,_2,...,x_t,_d)</math> is the current value. <br/>  
  
 
Suppose <math>\vec{y} = (y_1, y_2,...,y_d)</math> is the proposed point. <br/>
 
Suppose <math>\vec{y} = (y_1, y_2,...,y_d)</math> is the proposed point. <br/>
 
<math>\vec{x} _{t+1} = \vec{y} </math><br /><br/>
 
<math>\vec{x} _{t+1} = \vec{y} </math><br /><br/>
Let  <math>f(x_i|x_1, x_2,...,x_i-1,....x_d)</math> represents the conditional pdf of component x<sub>i</sub>, given other components. <br/>
+
 
 +
Let  <math>\displaystyle f(x_i|x_1, x_2,...,x_{i-1},....x_d)</math> represents the conditional pdf of component x<sub>i</sub>, given other components. <br/>
 
Then Gibbs sampler is as follows:<br/>
 
Then Gibbs sampler is as follows:<br/>
 
# <math>\displaystyle y_1 \sim  f(x_1 | x_{t,2}, x_{t,3}, ..., x_{t,d})</math>
 
# <math>\displaystyle y_1 \sim  f(x_1 | x_{t,2}, x_{t,3}, ..., x_{t,d})</math>
 
# <math>\displaystyle y_i \sim  f(x_i | y_1, ...., y_{i-1}, x_{t,i+1} , ..., x_{t,d})</math>  
 
# <math>\displaystyle y_i \sim  f(x_i | y_1, ...., y_{i-1}, x_{t,i+1} , ..., x_{t,d})</math>  
 
# <math>\displaystyle y_d \sim f(x_d | y_1, ... , y_{d-1})</math>
 
# <math>\displaystyle y_d \sim f(x_d | y_1, ... , y_{d-1})</math>
# <math>\displaystyle \vec{Y} = (y_1,y_2, ...,y_d)</math>
+
# <math>\displaystyle \vec{Y} = (y_1,y_2, ...,y_d)</math><br>
 +
 
 +
 
 +
'''A simpler illustration of the above example'''
 +
Consider four variables (w,x,y,z), the sampler becomes<br/>
 +
# <math>\displaystyle w_i \sim  p(w | x = x_{i - 1}, y = y_{i - 1},z = z_{i - 1} )</math>
 +
# <math>\displaystyle x_i \sim  p(x | w = w_i, y = y_{i - 1},z = z_{i - 1} )</math>
 +
# <math>\displaystyle y_i \sim  p(y | w = w_i, x = x_i,z = z_{i - 1} )</math>
 +
# <math>\displaystyle z_i \sim  p(z | w = w_i, x = x_i,y = y_i)</math>
 +
The reference is here<br/>
 +
http://web.mit.edu/~wingated/www/introductions/mcmc-gibbs-intro.pdf
  
<br/><br/> Example: Suppose we want to sample from a bivariate normal distribution. <br/> <math>\mu =
+
'''Example2'''<br>
 +
Suppose we want to sample from a bivariate normal distribution. <br/> <math>\mu =
 
\left [ \begin{matrix}
 
\left [ \begin{matrix}
 
1 \\
 
1 \\
Line 6,497: Line 6,684:
 
where <math>\rho</math>= 0.9. Then it can be shown that all conditionals are normal of this form: <br/>
 
where <math>\rho</math>= 0.9. Then it can be shown that all conditionals are normal of this form: <br/>
 
f(x<sub>1</sub>|x<sub>2</sub>) = N (u<sub>1</sub> + r(x<sub>2</sub>-u<sub>2</sub>), 1-r<math>^2</math>) <br/>
 
f(x<sub>1</sub>|x<sub>2</sub>) = N (u<sub>1</sub> + r(x<sub>2</sub>-u<sub>2</sub>), 1-r<math>^2</math>) <br/>
f(x<sub>2</sub>|x<sub>1</sub>) = N (u<sub>2</sub> + r(x<sub>1</sub>-u<sub>1</sub>), 1-r<math>^2</math>) <br/> <br/>
+
f(x<sub>2</sub>|x<sub>1</sub>) = N (u<sub>2</sub> + r(x<sub>1</sub>-u<sub>1</sub>), 1-r<math>^2</math>) <br/><br/>
 
+
Matlab Code:
+
'''Matlab Code'''
 
<pre style="font-size:16px">
 
<pre style="font-size:16px">
 
close all
 
close all
 
clear all
 
clear all
mu = [1;2];
+
mu = [1;2];  
x(:,1) = [1;1];
+
x(:,1) = [1;1]; % covariance matrix
r = 0.9;
+
r = 0.9; % covariance matrix
 
for ii = 1:1000
 
for ii = 1:1000
x(1, ii+1) = sqrt(1-r^2)*randn + (mu(1) + r*(x(2,ii) - mu(2)));
+
x(1, ii+1) = sqrt(1-r^2)*randn + (mu(1) + r*(x(2,ii) - mu(2))); % N (u1 + r(x2-u2), 1-r2)
x(2, ii+1) = sqrt(1-r^2)*randn + (mu(2) + r*(x(1,ii+1) - mu(1)));
+
x(2, ii+1) = sqrt(1-r^2)*randn + (mu(2) + r*(x(1,ii+1) - mu(1))); % N (u2 + r(x1-u1), 1-r2)
 
end
 
end
 
plot(x(1,:),x(2,:),'.')
 
plot(x(1,:),x(2,:),'.')
</pre>
+
</pre><br>
 
 
  
<br/> Example: Consider the flowing bivariate normal distribution. <br/>  
+
'''Example3''' <br>
 +
Consider the flowing bivariate normal distribution. <br/>  
 
<math>\mu = \left[\begin{matrix}0\\0 \end{matrix}\right] \qquad \Sigma=\left [ \begin{matrix}1 & \rho \\ \rho & 1 \end{matrix} \right] </math>  (the covariance matrix)
 
<math>\mu = \left[\begin{matrix}0\\0 \end{matrix}\right] \qquad \Sigma=\left [ \begin{matrix}1 & \rho \\ \rho & 1 \end{matrix} \right] </math>  (the covariance matrix)
  
 
where <math>\rho</math>= 0.5. Then it can be shown that all conditionals are normal of this form: <br/>
 
where <math>\rho</math>= 0.5. Then it can be shown that all conditionals are normal of this form: <br/>
 
<math> x_{1,t+1}|x_{2,t} \sim N(\rho x_{2,t},1-\rho^2</math>) <br/>
 
<math> x_{1,t+1}|x_{2,t} \sim N(\rho x_{2,t},1-\rho^2</math>) <br/>
<math> x_{2,t+1}|x_{1,t} \sim N(\rho x_{1,t},1-\rho^2</math>) <br/> <br/>
+
<math> x_{2,t+1}|x_{1,t} \sim N(\rho x_{1,t},1-\rho^2</math>) <br/><br/>
 +
 
  
Matlab Code:
+
'''Matlab Code:'''
 
<pre style="font-size:16px">
 
<pre style="font-size:16px">
 
close all
 
close all
Line 6,537: Line 6,725:
 
[[File:GibbExample.jpg]]
 
[[File:GibbExample.jpg]]
  
===Additional Example===
+
<div style = "align:left; background:#F5F5DC; font-size: 120%"> <br />
(Adapted from Assignment 5 Question 2)<br />
+
 
 +
 
 +
'''Additional Example''' (Adapted from Assignment 5 Question 2)<br />
 
Suppose we want to sample from the following two dimensional pdf:<br />
 
Suppose we want to sample from the following two dimensional pdf:<br />
 
  <math>\, f(x_1,x_2) = c \times e^{\frac{-(x_1^2 x_2^2+x_1^2+x_2^2-8 x_1-8 x_2)}2}</math><br />
 
  <math>\, f(x_1,x_2) = c \times e^{\frac{-(x_1^2 x_2^2+x_1^2+x_2^2-8 x_1-8 x_2)}2}</math><br />
One can show that  <math>c=~\frac{1}{20216.3359}</math>, is a normalize constant , but is not required.<br />
+
One can show that  <math>c=~\frac{1}{20216.3359}</math>, is a normalize constant , but is not required. <br />
  
  
''Method 1'' - apply Metropolis-Hastings<br />
+
'''''Method 1''''' - apply Metropolis-Hastings<br />
  
A simple choice of the proposal distribution is <math>q(y|x)~\sim~N(x,a^2 l_2)</math> for some parameter a > 0, and l_2 is the identity matrix of dimension 2.<br />
+
A simple choice of the proposal distribution is <math>q(y|x)~\sim~N(x,a^2 l_2)</math> for some parameter <math>a > 0</math>, and <math>l_2</math> is the identity matrix of dimension 2.<br />
 
i.e., A random walk sampler : Y= x + Z, where <math>Z~\sim~N_2(0,a^2 l_2)</math><br />
 
i.e., A random walk sampler : Y= x + Z, where <math>Z~\sim~N_2(0,a^2 l_2)</math><br />
 
Since q(.) is symmetric, then we have<br />
 
Since q(.) is symmetric, then we have<br />
Line 6,554: Line 6,744:
 
                           <math>\,y_1 = x_1+Z_1</math> and <math>\,y_2 = x_2+Z_2</math><br />
 
                           <math>\,y_1 = x_1+Z_1</math> and <math>\,y_2 = x_2+Z_2</math><br />
 
where <math>\Z_i~\sim~N(0,a^2)</math>
 
where <math>\Z_i~\sim~N(0,a^2)</math>
Using a= 2(moderate tuning parameter)
+
Using <math>a = 2</math> (moderate tuning parameter)
  
'''Algorithm''':<br />
+
[[Algorithm]]
 
+
<br />1. Initiate <math>\,x_0 = (x_{0 1}, x_{0 2})</math><br />
1. Initiate <math>\,x_0 = (x_{0 1}, x_{0 2})</math><br />
 
  
 
2. Generate <math>Z_1,Z_2 ~\sim~N(0,1)</math> independently,<math>\,Z=(Z_1,Z_2)</math>, and <math>\,y = x+2Z </math> for the nth steps.<br />
 
2. Generate <math>Z_1,Z_2 ~\sim~N(0,1)</math> independently,<math>\,Z=(Z_1,Z_2)</math>, and <math>\,y = x+2Z </math> for the nth steps.<br />
Line 6,564: Line 6,753:
 
3. Calculate <math>r = min(\frac {f(x)}{f(y)},1)</math> <br />
 
3. Calculate <math>r = min(\frac {f(x)}{f(y)},1)</math> <br />
  
4. Generate <math>U~\sim~Unif(0,1)</math>, if <math>\, U < r </math>, return <math>\,x_n = y</math> , else <math>\,x_n = x_{n-1}</math>.<br />
+
4. Generate <math>U~\sim~Unif(0,1)</math>, if <math>\, U < r </math>, return <math>\,x_n = y</math> , else <math>\,x_n = x_{n-1}</math>. <br />
  
''Method 2'' - apply Metropolis-Hastings - gibbs sampling <br />
+
 
 +
'''''Method 2''''' - apply Metropolis-Hastings - Gibbs sampling <br />
 
Note  that we can rearrange the function as follow:
 
Note  that we can rearrange the function as follow:
 
               <math>\,f(x_1,x_2) = c e^{-(1+x_2^2)(x_1-(\frac{4}{1+x_2^2}))^2/2}</math> <br />
 
               <math>\,f(x_1,x_2) = c e^{-(1+x_2^2)(x_1-(\frac{4}{1+x_2^2}))^2/2}</math> <br />
Line 6,577: Line 6,767:
 
<math>\,f(x_2|x_1) ~\sim~N(\frac{4}{1+x_1^2},\frac{1}{1+x_1^2})</math><br />
 
<math>\,f(x_2|x_1) ~\sim~N(\frac{4}{1+x_1^2},\frac{1}{1+x_1^2})</math><br />
  
'''Algorithm :'''<br />
+
[[Algorithm]]
1. sampling from <math>x_1: y_1~\sim~f(x_1|x_{t 2})</math><br />
+
<br />1. sampling from <math>x_1: y_1~\sim~f(x_1|x_{t 2})</math><br />
 
2. <math>y_2~\sim~f(x_2|Y_1)</math> and repeat the procedures.<br />
 
2. <math>y_2~\sim~f(x_2|Y_1)</math> and repeat the procedures.<br />
 
3. <math>\vec{Y} = (y_1,y_2) </math>
 
3. <math>\vec{Y} = (y_1,y_2) </math>
  
Matlab Code:<br />
+
'''Matlab Code:''' <br />
 
<pre style="font-size:16px">
 
<pre style="font-size:16px">
 
n=10^4; %% generate 10^4 chains
 
n=10^4; %% generate 10^4 chains
 
x1(1) =1; x2(1)  = 0 ; %% initialize the chain
 
x1(1) =1; x2(1)  = 0 ; %% initialize the chain
 +
%%Note that we take steps of 2
 +
%%This is so that we can store the initial result, and the improved result
 
for i = 2 :2: n;  
 
for i = 2 :2: n;  
 
     sig_x1 = sqrt(1/(1+x2(i-1)^2));
 
     sig_x1 = sqrt(1/(1+x2(i-1)^2));
Line 6,599: Line 6,791:
 
end
 
end
 
scatter(x1(1000:n),(x2(1000:n)),'.'); hold on;
 
scatter(x1(1000:n),(x2(1000:n)),'.'); hold on;
[ x , y ] = meshgrid( -1:.2:7 , -1:0.2:7) ; c=1/202126.335877
+
[ x , y ] = meshgrid( -1:.2:7 , -1:0.2:7);  
z = c .* exp( -( x .^2+ y .^2+ y .^2 .* x .^2 -8.* x -8.* y )  /2)
+
c = 1/202126.335877;
contour( x , y , z )
+
z = c .* exp( -( x .^2+ y .^2+ y .^2 .* x .^2 -8.* x -8.* y )  /2);
 +
contour( x , y , z );
 
</pre>
 
</pre>
 +
 +
Result:
 +
 +
[[File:BivariateGibbsContour.png]]
 +
</div>
  
 
==Class 22, Thursday, July 18, 2013==
 
==Class 22, Thursday, July 18, 2013==
 
===Assignment Hint: Question 2 ===
 
===Assignment Hint: Question 2 ===
Matlab Code:<br />
+
Matlab Code <br />
 
<pre style="font-size:16px">
 
<pre style="font-size:16px">
syms x<br/>
+
syms x
syms y<br/>
+
syms y
ezplot(x^2 +2)<br/>
+
ezplot(x^2 +2)
ezsurf(exp(-x given  ~ 2 ...)/i) this gives a n dimensional plot <br/>
+
ezsurf(exp(-x given  ~ 2 ...)/i) this gives a n dimensional plot  
 
</pre>
 
</pre>
  
example: ezsurf((x+y)^2+(x-y)^3)<br/>
+
ezsurf(fun) creates a graph of fun(x,y) using the surf function. fun is plotted over the default domain: -2π < x < 2π, -2π < y < 2π.
 +
http://www.mathworks.com/help/matlab/ref/ezsurf.html<br>
 +
 
 +
'''Example:''' ezsurf((x+y)^2+(x-y)^3)<br/>
 
[[File:Ezplot.jpg|300px]][[File:Ezsurf.jpg|300px]]
 
[[File:Ezplot.jpg|300px]][[File:Ezsurf.jpg|300px]]
  
 
====Generate CDF of N(0,1) distribution====
 
====Generate CDF of N(0,1) distribution====
Define <math>h(x)</math> to be an indicator function such that <math>h(X<x)</math> = 1 and 0 otherwise.<br />
+
Define <math>h (x)</math> to be an indicator function such that <math>h (X<x)</math> = 1 and 0 otherwise.<br />
Example: Face recognition<br />
+
'''Example:''' Face recognition <br />
  
X is a picture of the person.<br />
+
X is a greyscale image of the person and Y is the person.<br />
Y is the person.<br />
+
Here,We have a 100 x 100 grid where each cell is a number from 0 to 255 representing the darkness of the cell (from white to black).<br>
 +
Let x be a vector of length 100*100=10,000 and y be a vector with each element being a picture of a person's face.<br>
 +
Compare Pr{x|y} and Pr{y|x}.<br />
  
We have a 100 x 100 grid where each cell is a number from 0 to 250 representing the darkness of the cell (from white to black).<br>
+
<br />[[Frequentist approach]]<br />
Let x be a vector of length 100*100=10,000.
+
*A frequentist would say X is a random variable and Y is not, so they would use Pr{x|y} (given that y is Tom, how likely is it that x is an image of Tom?).
Let y be a vector with each element a picture of a person's face.<br>
 
Consider Pr{x|y} and Pr{y|x}.
 
To frequentist, X is a r.v. and Y is not (eg. given y is Tom, how likely x is Tom?).
 
  
<math>\displaystyle P(X|Y)</math>, y is person and x is how likely the picture is of this person. Here, y is known. '''(Frequentist approach)'''
+
<math>\displaystyle P(X|Y)</math>, y is person and x is how likely the picture is of this person. Here, y is known. <br/>  
<br/>  
+
*Frequentist: probability is objective quantity which is proportional to events. <br>
<math>P(Y|X) = \frac {P(x|y)P(y)}{\int P(x|y)P(y)dy}</math> Here, everything is random variable. '''(Bayesian approach)'''
+
i.e. Flip a coin many times, half of the time, it will be heads, and the other half it will be tails. (Physics) <br>
  
<br> Frequentist: probability is objective quantity which is proportional to events. <br>
+
<br/>[[Bayesian approach]] <br/>
EX. Flip a coin for many times, half of the times, it will be heads, and the other half will be tails. (Physics) <br>
+
A Bayesian would ask, given some image, how likely is it that the person in the image is Tom? They would use P(Y|X).
Bayesian: Probability is subjective, which states someone's belief. <br>
+
 
EX. The chance of raining tomorrow is 40%. (Frequentist will not say this because no one can observe tomorrow a thousand times.)
+
<math>P(Y|X) = \frac {P(x|y)P(y)}{\int P(x|y)P(y)dy}</math> Here, everything is a random variable.<br>
 +
Proof:<br/>
 +
<math>P(y|x)P(x) = P(x,y)= P(x|y)P(y)  P(x) = \int P(x|y)P(y)dy</math>
 +
 
 +
*Bayesian: Probability is subjective, which states someone's belief. <br>
 +
i.e. The chance of raining tomorrow is 40%. (A Frequentist would not say this because no one can observe tomorrow a thousand times.)
  
 
===Generating Normally Distributed Random Number(MATLAB)===
 
===Generating Normally Distributed Random Number(MATLAB)===
 
y = randn(m,n) returns "m x n" matrix of random values from standard normal distribution.  <br>
 
y = randn(m,n) returns "m x n" matrix of random values from standard normal distribution.  <br>