{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Matplotlib Exercise: Visualizing Correlated Gaussian Random Variables" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we know how to generate correlated random variables, let's visualize them.\n", "\n", "### Exercise\n", "\n", "Make the following plots. All plots must have x and y labels, titles, and legends if there is more than one dataset in the same axes.\n", "\n", "1. Overlaid histograms of your samples of uncorrelated random variables with 30 bins (use `histtype='step'`)\n", "2. A scatterplot of $X_2$ vs $X_1$ with marker size equal to 2. Overlay the the theoretical line ($y=x$) in a black, dashed line.\n", "3. Overlaid histograms of your samples of correlated random variables with 30 bins (use `histtype='step'`)\n", "\n", "### Hints\n", "\n", "- In the arrays of random variables, each row `i` corresponds to a *sample* of random variable `i` (just FYI).\n", "- Google is your friend :)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import matplotlib.pyplot as plt # need to import matplotlib, of course\n", "import numpy as np # import any needed modules here" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "n_real = int(1E6) # number of realizations\n", "n_vars = 3 # number of random variables we want to correlate\n", "cov = np.array([[ 1. , 0.2, 0.4], [ 0.2, 0.8, 0.3], [ 0.4, 0.3, 1.1]]) # covariance matrix" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "unc_vars = np.random.randn(n_vars, n_real) # create [n_vars x n_real] array of uncorrelated (unc) normal random variables" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "chol_mat = np.linalg.cholesky(cov) # calculate the cholesky decomposition of the covariance matrix" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "cor_vars = chol_mat @ unc_vars # [n_vars x n_real] array of correlated (cor) random variables" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "cor_vars.var(axis=1) # calculate variances of each sample of random variables" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "np.corrcoef(cor_vars[0, :], cor_vars[1, :]) # calculate the correlation coefficient between the first and second random samples" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Plot 1: Histogram of Uncorrelated Variables" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Make a plot with overlaid histograms of your samples of uncorrelated random variables with 30 bins (use histtype='step')." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ " # insert code here" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Plot 2: Scatterplot of X2 vs. X1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Make a scatterplot of $X_2$ vs $X_1$ with marker size equal to 2. Overlay the the theoretical line ($y=x$) in a black, dashed line." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ " # insert code here" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Plot 3: Histogram of Correlated Variables" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Make a plot with overlaid histograms of your samples of uncorrelated random variables with 30 bins (use histtype='step')." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ " # insert code here" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.1" } }, "nbformat": 4, "nbformat_minor": 2 }