Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
{
"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
}