# Edit default plot settings (colours from colorbrewer2.org) plt.rc("font", size=14) # data y = np.array([93, 112, 122, 135, 122, 150, 118, 90, 124, 114]) # sufficient statistics n = len(y) s2 = np.var(y, ddof=1) # Here ddof=1 is used to get the sample estimate. my = np.mean(y) # Factorize the joint posterior p(mu,sigma2|y) to p(sigma2|y)p(mu|sigma2,y) # Sample from the joint posterior using this factorization # sample from p(sigma2|y) nsamp = 1000 sigma2 = sinvchi2.rvs(n - 1, s2, size=nsamp) # sample from p(mu|sigma2,y) mu = my + np.sqrt(sigma2 / n) * np.random.randn(*sigma2.shape) # display sigma instead of sigma2 sigma = np.sqrt(sigma2) # For mu compute the density in these points tl1 = [90, 150] t1 = np.linspace(tl1[0], tl1[1], 1000) # For sigma compute the density in these points tl2 = [10, 60] t2 = np.linspace(tl2[0], tl2[1], 1000) # evaluate the joint density in a grid # note that the following is not normalized, but for plotting # contours it does not matter
plt.rc('axes', color_cycle=('#377eb8', '#e41a1c', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33')) # data y = np.array([93, 112, 122, 135, 122, 150, 118, 90, 124, 114]) # sufficient statistics n = len(y) s2 = np.var(y, ddof=1) # Here ddof=1 is used to get the sample estimate. my = np.mean(y) # Factorize the joint posterior p(mu,sigma2|y) to p(sigma2|y)p(mu|sigma2,y) # Sample from the joint posterior using this factorization # sample from p(sigma2|y) sigma2 = sinvchi2.rvs(n - 1, s2, size=1000) # sample from p(mu|sigma2,y) mu = my + np.sqrt(sigma2 / n) * np.random.randn(*sigma2.shape) # display sigma instead of sigma2 sigma = np.sqrt(sigma2) # For mu compute the density in these points tl1 = [90, 150] t1 = np.linspace(tl1[0], tl1[1], 1000) # For sigma compute the density in these points tl2 = [10, 60] t2 = np.linspace(tl2[0], tl2[1], 1000) # evaluate the joint density in a grid # note that the following is not normalized, but for plotting # contours it does not matter
# Edit default plot settings (colours from colorbrewer2.org) plt.rc('font', size=14) # data y = np.array([93, 112, 122, 135, 122, 150, 118, 90, 124, 114]) # sufficient statistics n = len(y) s2 = np.var(y, ddof=1) # Here ddof=1 is used to get the sample estimate. my = np.mean(y) # Factorize the joint posterior p(mu,sigma2|y) to p(sigma2|y)p(mu|sigma2,y) # Sample from the joint posterior using this factorization # sample from p(sigma2|y) nsamp = 1000 sigma2 = sinvchi2.rvs(n - 1, s2, size=nsamp) # sample from p(mu|sigma2,y) mu = my + np.sqrt(sigma2 / n) * np.random.randn(*sigma2.shape) # display sigma instead of sigma2 sigma = np.sqrt(sigma2) # For mu compute the density in these points tl1 = [90, 150] t1 = np.linspace(tl1[0], tl1[1], 1000) # For sigma compute the density in these points tl2 = [10, 60] t2 = np.linspace(tl2[0], tl2[1], 1000) # evaluate the joint density in a grid # note that the following is not normalized, but for plotting # contours it does not matter
plt.rc('lines', color='#377eb8') plt.rc('axes', color_cycle=('#377eb8','#e41a1c','#4daf4a', '#984ea3','#ff7f00','#ffff33')) # data y = np.array([93, 112, 122, 135, 122, 150, 118, 90, 124, 114]) # sufficient statistics n = len(y) s2 = np.var(y, ddof=1) # Here ddof=1 is used to get the sample estimate. my = np.mean(y) # Factorize the joint posterior p(mu,sigma2|y) to p(sigma2|y)p(mu|sigma2,y) # Sample from the joint posterior using this factorization # sample from p(sigma2|y) sigma2 = sinvchi2.rvs(n-1, s2, size=1000) # sample from p(mu|sigma2,y) mu = my + np.sqrt(sigma2/n)*np.random.randn(*sigma2.shape) # display sigma instead of sigma2 sigma = np.sqrt(sigma2) # For mu compute the density in these points tl1 = [90, 150] t1 = np.linspace(tl1[0], tl1[1], 1000) # For sigma compute the density in these points tl2 = [10, 60] t2 = np.linspace(tl2[0], tl2[1], 1000) # evaluate the joint density in a grid # note that the following is not normalized, but for plotting # contours it does not matter