Exercise 11.1: Plotting a function
Plot the functionf(x) = sin^2 (x − 2) e ^(−x2) over the interval [0,2]. Add proper axis labels, a title, etc.
import numpy as np from matplotlib import pyplot as plt # 11.1 x = np.linspace(0, 2, 100) y = np.power(np.sin(x - 1), 2) * np.exp(-np.power(x, 2)) plt.plot(x, y) plt.title('Exercise 11.1: Plotting a function', fontsize = 24) plt.xlabel('x', fontsize = 14) plt.ylabel('f(x)', fontsize = 14) plt.tick_params(axis = 'both', labelsize = 14) plt.show()
Exercise 11.2: Data
Create a data matrix X with 20 observations of 10 variables. Generate a vector b with parameters Then generate the response vector y = Xb+z where z is a vector with standard normally distributed variables. Now (by only using y and X), find an estimator for b, by solvingb^ = arg min(b) || Xb − y || 2
Plot the true parameters b and estimated parameters ˆ b. See Figure 1 for an example plot.
import numpy as np import matplotlib.pyplot as plt from numpy import random as rd from numpy import linalg as lna X = rd.randn(20, 10) b = rd.randn(10, 1) z = rd.randn(20, 1) y = np.dot(X, b) + z b_ = np.dot(np.dot(lna.inv(np.dot(X.T, X)), X.T), y) x = np.linspace(0, 9, 10) plt.scatter(x, b, c = 'blue', label = 'origin b') plt.scatter(x, b_, c = 'red', label = 'estimated b^') plt.title('Exercise 11.2: Data') plt.xlabel('x') plt.ylabel('value') plt.legend() plt.show()
Exercise 11.3: Histogram and density estimation
Generate a vector z of 10000 observations from your favorite exotic distribution. Then make a plot that shows a histogram of z (with 25 bins), along with an estimate for the density, using a Gaussian kernel density estimator (see scipy.stats). See Figure 2 for an example plot.
import numpy as np import matplotlib.pyplot as plt from scipy.stats import gaussian_kde from numpy import random as rd z = rd.normal(200, 100, 1000) k = gaussian_kde(z) x = np.linspace(-200, 600, 1000) plt.hist(z, bins = 25, rwidth = 0.5, color = 'blue', density = True) plt.plot(x, k.evaluate(x), c = 'red') plt.title('Exercise 11.3: Histogram and density estimation') plt.xlabel('x') plt.ylabel('y') plt.show()