Last active
July 22, 2020 00:01
-
-
Save chandinijain/2b7f4759461d0e43009f5251938d52a7 to your computer and use it in GitHub Desktop.
Math
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"This work derives from the works of Michael Halls-Moore on [Quantstart](https://www.quantstart.com/) and [Quantopian Lecture Series](https://www.quantopian.com/lectures/). \n", | |
"\n", | |
"# Covariance and Correlation\n", | |
"\n", | |
"Covariance and correlation describe how two random variables are related.\n", | |
"\n", | |
"## Covariance\n", | |
"\n", | |
"Covariance measures the extent to which the relationship between two variables is linear. The sign of the covariance shows the trend in the linear relationship between the variables, i.e if they tend to move together or in separate directions. A positive sign indicates that the variables are directly related, i.e. when one increases the other one also increases. A negative sign indicates that the variables are inversely related, so that when one increases the other decreases. It is calculated as\n", | |
"$$Cov(X,Y) = E[XY] - E[X]E[Y] = E[(X- E[X])(Y-E[Y])]$$\n", | |
"\n", | |
"Note that\n", | |
"$$Cov(X,X) = E[X^2] - E[X]^2 = E[(X- E[X])^2] = \\sigma^2 $$\n", | |
"\n", | |
"When the two variables are identical, covariance is same as variance.\n", | |
"\n", | |
"### Covariance isn't that meaningful by itself\n", | |
"\n", | |
"Let's say we have two variables $X$ and $Y$ and we take the covariance of the two.\n", | |
"\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 46, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"0.18565571452010868" | |
] | |
}, | |
"execution_count": 46, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"import os\n", | |
"import sys\n", | |
"\n", | |
"import pandas as pd\n", | |
"import numpy as np\n", | |
"import matplotlib.pyplot as plt\n", | |
"import seaborn as sns\n", | |
"from scipy import stats\n", | |
"\n", | |
"X = np.random.rand(50)\n", | |
"Y = 2 * X + np.random.normal(0, 0.1, 50)\n", | |
"\n", | |
"np.cov(X, Y)[0, 1]" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"What does this mean? To make better sense of data, we introduce correlation\n", | |
"\n", | |
"## Correlation\n", | |
"\n", | |
"Correlation uses information about the variance of X and Y to normalize this metric. The value of correlation coeffecient is always between -1 and 1. Once we've normalized the metric to the -1 to 1 scale, we can make meaningful statements and compare correlations. \n", | |
"\n", | |
"To normalize Covariance, consider\n", | |
"\n", | |
"$$\\frac{Cov(X, Y)}{\\sqrt{Cov(X, X)}\\sqrt{Cov(Y, Y)}}$$\n", | |
"\n", | |
"$$= \\frac{Cov(X, Y)}{\\sigma(X)\\sigma(Y)} = \\rho$$ \n", | |
"\n", | |
"where \\rho is the correlation coefficient of two series $X$ and $Y$. Just like covariance, a positive coefficient indicates that the variables are directly related and a negative coefficient indicates that the variables are inversely related. The closer to 0 the correlation coefficient is, the weaker the relationship between the variables.\n", | |
"\n", | |
"Two random sets of data will have a correlation coefficient close to 0:\n", | |
"\n", | |
"### Correlation vs. Covariance\n", | |
"\n", | |
"Correlation is simply a normalized form of covariance. They are otherwise the same and are often used semi-interchangeably in everyday conversation. It is obviously important to be precise with language when discussing the two, but conceptually they are almost identical.\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 47, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Covariance of X and Y: 0.19\n", | |
"Correlation of X and Y: 0.99\n" | |
] | |
} | |
], | |
"source": [ | |
"print('Covariance of X and Y: %.2f'%np.cov(X, Y)[0, 1])\n", | |
"print('Correlation of X and Y: %.2f'%np.corrcoef(X, Y)[0, 1])" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"To get a sense of what correlated data looks like, lets plot two correlated datasets\n", | |
"\n", | |
"\n", | |
"\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 48, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\nEv8frjnfYuWtOfUAAAAASUVORK5CYII=\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0xa0e85f8>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Correlation of X and Y: 0.97\n" | |
] | |
} | |
], | |
"source": [ | |
"X = np.random.rand(50)\n", | |
"Y = X + np.random.normal(0, 0.1, 50)\n", | |
"\n", | |
"plt.scatter(X,Y)\n", | |
"plt.xlabel('X Value')\n", | |
"plt.ylabel('Y Value')\n", | |
"plt.show()\n", | |
"print('Correlation of X and Y: %.2f'%np.corrcoef(X, Y)[0, 1])" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"And here's an inverse relationship" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\nrkJggg==\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x9cfbac8>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Correlation of X and Y: -0.94\n" | |
] | |
} | |
], | |
"source": [ | |
"X = np.random.rand(50)\n", | |
"Y = -X + np.random.normal(0, .1, 50)\n", | |
"\n", | |
"plt.scatter(X,Y)\n", | |
"plt.xlabel('X Value')\n", | |
"plt.ylabel('Y Value')\n", | |
"plt.show()\n", | |
"print('Correlation of X and Y: %.2f'%np.corrcoef(X, Y)[0, 1])" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Applications in finance\n", | |
"\n", | |
"Let's look at correlation in financial datasets. We look for correlation between prices of AAPL stock and the market (SPX) as well as another stock" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 49, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Reading SPX\n", | |
"Reading AAPL\n", | |
"Reading LRCX\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0xa86a438>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Correlation coefficients\n", | |
"Correlation of AAPL and LRCX: 0.95\n", | |
"Correlation of AAPL and SPX: 0.93\n", | |
"Correlation of LRCX and SPX: 0.96\n" | |
] | |
} | |
], | |
"source": [ | |
"import auquanToolbox.dataloader as dl\n", | |
"# Pull the pricing data for our two stocks and S&P 500\n", | |
"start = '2013-01-01'\n", | |
"end = '2015-12-31'\n", | |
"exchange = 'nasdaq'\n", | |
"base = 'SPX'\n", | |
"m1 = 'AAPL'\n", | |
"m2= 'LRCX'\n", | |
"\n", | |
"data = dl.load_data_nologs(exchange, [base,m1,m2], start, end)\n", | |
"bench = data['ADJ CLOSE'][base]\n", | |
"a1= data['ADJ CLOSE'][m1]\n", | |
"a2 = data['ADJ CLOSE'][m2]\n", | |
"\n", | |
"plt.scatter(a1,a2)\n", | |
"plt.xlabel('LRCX')\n", | |
"plt.ylabel('AAPL')\n", | |
"plt.title('Stock prices from ' + start + ' to ' + end)\n", | |
"plt.show()\n", | |
"print('Correlation coefficients')\n", | |
"print('Correlation of %s and %s: %.2f'%(m1, m2, np.corrcoef(a1,a2)[0, 1]))\n", | |
"print('Correlation of %s and %s: %.2f'%(m1, base, np.corrcoef(a1, bench)[0, 1]))\n", | |
"print('Correlation of %s and %s: %.2f'%(m2, base, np.corrcoef(a2, bench)[0, 1]))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Once we've established that two series are probably related, we can use that in an effort to predict future values of the series.\n", | |
"\n", | |
"Another application is to find uncorrelated assets to produce hedged portfolios - if the assets are uncorrelated, a drawdown in one will not correspond with a drawdown in another. This leads to a very stable return stream when many uncorrelated assets are combined." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Important: Significance of Correlation\n", | |
"\n", | |
"It's hard to rigorously determine whether or not a correlation is significant, especially when, as here, we are not aware if the variables are normally distributed or not. Their correlation coefficient is close to 1, so it's pretty safe to say that the two stock prices are correlated over the time period we use, but is this indicative of future correlation? If we examine the correlation of each of them with the S&P 500, we see that it is also quite high. So, we may be led to believe that two stocks have a relationship because of their high correlation, when in fact they are both caused by a third(market)\n", | |
"\n", | |
"The problem is we may determine a good correlation by picking the right time period but it may not hold out of sample. To avoid this, one should compute the correlation of two quantities over many historical time periods and examine the distibution of the correlation coefficient. \n", | |
"\n", | |
"As an example, remember that the correlation of AAPL and LRCX from 2013-1-1 to 2015-1-1 was 0.95. Let's take the rolling 60 day correlation between the two to see how that varies." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 21, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"C:\\Users\\Chandini\\Miniconda3\\envs\\auquan\\lib\\site-packages\\ipykernel\\__main__.py:1: FutureWarning: pd.rolling_corr is deprecated for Series and will be removed in a future version, replace with \n", | |
"\tSeries.rolling(window=60).corr(other=<Series>)\n", | |
" if __name__ == '__main__':\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0xaa4ab70>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"rolling_correlation = pd.rolling_corr(a1, a2, 60)\n", | |
"plt.plot(rolling_correlation)\n", | |
"plt.xlabel('Day')\n", | |
"plt.ylabel('60-day Rolling Correlation')\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We see the correlation is not only unstable, but also reverses sign!\n", | |
"\n", | |
"Another shortcoming is that two variables may be associated in different, predictable but non-linear ways which this analysis would not pick up. For example, a variable may be related to the rate of change of another which will not be detected by correlation alone.\n", | |
"\n", | |
"Just remember to be careful not to interpret results where there are none." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Confidence Intervals" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We mentioned in the notebook on Expected Value and Standard Deviation that statistics derived from a sample (data available to us) may differ from true value (population statistic). For example, we want to measure the population mean, but we can only calculate a sample mean. We then want to use the sample mean to estimate the population mean. We use confidence intervals in an attempt to determine how accurately our sample mean estimates the population mean.\n", | |
"\n", | |
"A confidence interval gives an estimated range of values between which the variable is likely to lie. This range is calculated from a given set of data or from a probability distribution\n", | |
"The selection of a confidence level for the interval determines the probability that the confidence interval will contain the value of the variable *over many computations*(read subtelty note below).\n", | |
"So, a 95% confidence interval for a variable states that the interval will contain the true population mean 95% of the time.\n", | |
"\n", | |
"\n", | |
"For example, if you want to estimate the average height of students in a university, you might do this by measuring 100 students and estimating that the mean of that sample was close to the population. Let's try that." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 50, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"sample mean: 63.48\n" | |
] | |
} | |
], | |
"source": [ | |
"np.random.seed(100)\n", | |
"\n", | |
"# Let's define some 'true' population parameters, we'll pretend we don't know these.\n", | |
"POPULATION_MU = 64\n", | |
"POPULATION_SIGMA = 5\n", | |
"\n", | |
"# Generate our sample by drawing from the population distribution\n", | |
"sample_size = 100\n", | |
"heights = np.random.normal(POPULATION_MU, POPULATION_SIGMA, sample_size)\n", | |
"mean_height = np.mean(heights)\n", | |
"print('sample mean: %.2f'%mean_height)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Unfortunately simply reporting the sample mean doesn't do much for us, as we don't know how it relates to the population mean. To get a sense for how it might relate, we can look for how much variance there is in our sample. Higher variance indicates instability and uncertainty." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 51, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"sample standard deviation: 4.85\n" | |
] | |
} | |
], | |
"source": [ | |
"print('sample standard deviation: %.2f'%np.std(heights))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"This still doesn't help, to really get a sense of how our sample mean relates to the population mean we need to compute a standard error. The standard error is a measure of the variance of the sample mean.\n", | |
"\n", | |
"**IMPORTANT\n", | |
"Computing a standard error involves assuming that the way you sample is unbaised, and that the data are normal and independent. If these conditions are violated, your standard error will be wrong. There are ways of testing for this and correcting.**\n", | |
"\n", | |
"The formula for standard error is.\n", | |
"\n", | |
"$$SE = \\frac{\\sigma}{\\sqrt{n}}$$\n", | |
"\n", | |
"Where $\\sigma$ is the sample standard deviation and $n$ is the number of samples." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 52, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"standard error: 0.48\n" | |
] | |
} | |
], | |
"source": [ | |
"SE = np.std(heights) / np.sqrt(sample_size)\n", | |
"print('standard error: %.2f'%SE)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Assuming our data are normally distributed, we can use the standard error to compute our confidence interval. \n", | |
"\n", | |
"To do this we set the desired confidence level (say 95%) and determine 95% of data lies within a range how many standard deviations of mean for our data's distribution. \n", | |
"\n", | |
"For example, for a normal distributiom, 95% of the observations lie in a range$[-1.96*SE,1.96*SE]$ around the mean. When the samples are large enough (generally > 30 is taken as a threshold) the Central Limit Theorem applies and normality can be safely assumed; if sample sizes are smaller, a safer approach is to use a $t$-distribution with appropriately specified degrees of freedom. The actual way to compute the values is by using a [cumulative distribution function (CDF)](https://github.com/Auquan/Tutorials/blob/master/Random%20Variables.ipynb). If you need more background on Probability Distributions, CDFs and inverse CDFs, read about them [here](https://en.wikipedia.org/wiki/Probability_density_function) and [here](https://en.wikipedia.org/wiki/Cumulative_distribution_function). Look [here](https://en.wikipedia.org/wiki/Student%27s_t-distribution) for information on the $t$-distribution. We can check the 95% number using one of the Python functions. \n", | |
"\n", | |
"NOTE: Be careful when applying the Central Limit Theorem, however, as many datasets in finance are fundamentally non-normal and it is not safe to apply the theorem casually or without attention to subtlety.\n", | |
"\n", | |
"We can visualize the 95% mass bounds here." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 38, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\nAABJRU5ErkJggg==\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0xd8019e8>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"#Generate a normal distribution\n", | |
"x = np.linspace(-5,5,100)\n", | |
"y = stats.norm.pdf(x,0,1)\n", | |
"plt.plot(x,y)\n", | |
"\n", | |
"# Plot the intervals\n", | |
"plt.vlines(-1.96, 0, 1, colors='r', linestyles='dashed')\n", | |
"plt.vlines(1.96, 0, 1, colors='r', linestyles='dashed')\n", | |
"\n", | |
"fill_x = np.linspace(-1.96, 1.96, 500)\n", | |
"fill_y = stats.norm.pdf(fill_x, 0, 1)\n", | |
"plt.fill_between(fill_x, fill_y)\n", | |
"\n", | |
"plt.xlabel('$\\sigma$')\n", | |
"plt.ylabel('Normal PDF')\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Now, rather than reporting our sample mean without any sense of the probability of it being correct, we can compute an interval and be much more confident that the population mean lies in that interval. To do this we take our sample mean $\\mu$ and report $\\left(\\mu-1.96 SE , \\mu+1.96SE\\right)$.\n", | |
"\n", | |
"This works because assuming normality, that interval will contain the population mean 95% of the time.\n", | |
"\n", | |
"### SUBTLETY:\n", | |
"Note that it is incorrect to say that \"The true mean lies in a range $\\left(\\mu-1.96 SE , \\mu+1.96SE\\right)$ with 95% probability,\" but unfortunately this is a very common misinterpretation. Rather, the 95% refers instead to the fact that over many computations of a 95% confidence interval, the true value will be in the interval in 95% of the cases (assuming correct calibration of the confidence interval, which we will discuss later). \n", | |
"\n", | |
"But in fact for a single sample and the single confidence interval computed from it, we have no way of assessing the probability that the interval contains the population mean. \n", | |
"\n", | |
"In the code below, we generate 100 95% Confidence Intervals around a mean of 0. Notice how for some of them, the mean lies completely outside the interval" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 42, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0xa4c3390>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"np.random.seed(8309)\n", | |
"n = 100 # number of samples to take\n", | |
"samples = [np.random.normal(loc=0, scale=1, size=100) for _ in range(n)]\n", | |
"\n", | |
"fig, ax = plt.subplots(figsize=(10, 7))\n", | |
"for i in np.arange(1, n, 1):\n", | |
" sample_mean = np.mean(samples[i]) # calculate sample mean\n", | |
" se = stats.sem(samples[i]) # calculate sample standard error\n", | |
" sample_ci = [sample_mean - 1.96*se, sample_mean + 1.96*se]\n", | |
" if ((sample_ci[0] <= 0) and (0 <= sample_ci[1])):\n", | |
" plt.plot((sample_ci[0], sample_ci[1]), (i, i), color='blue', linewidth=1);\n", | |
" plt.plot(np.mean(samples[i]), i, 'bo');\n", | |
" else:\n", | |
" plt.plot((sample_ci[0], sample_ci[1]), (i, i), color='red', linewidth=1);\n", | |
" plt.plot(np.mean(samples[i]), i, 'ro');\n", | |
"plt.axvline(x=0, ymin=0, ymax=1, linestyle='--', label = 'Population Mean');\n", | |
"plt.legend(loc='best');\n", | |
"plt.title('100 95% Confidence Intervals for mean of 0')\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Going back to our height's example, we can manually contruct confidence intervals using t-test" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 54, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"sample mean height: 63.48\n", | |
"t-value: 2.26\n", | |
"standard error: 0.48\n", | |
"confidence interval: [62.38, 64.58]\n" | |
] | |
} | |
], | |
"source": [ | |
"# standard error SE was already calculated\n", | |
"t_val = stats.t.ppf((1+0.95)/2, 9) # d.o.f. = 10 - 1\n", | |
"print('sample mean height: %.2f'%mean_height)\n", | |
"print('t-value: %.2f'%t_val) \n", | |
"print('standard error: %.2f'%SE) \n", | |
"print('confidence interval: [%.2f, %.2f]'%(mean_height - t_val * SE, mean_height + t_val * SE)) " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"or use a built-in function in scipy.stats for computing the interval" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 60, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"('99% confidence interval: ', (61.903402665047693, 65.054938796511678))\n", | |
"('95% confidence interval: ', (62.382304452952646, 64.576037008606718))\n", | |
"('80% confidence interval: ', (62.808572945003085, 64.149768516556279))\n" | |
] | |
} | |
], | |
"source": [ | |
"print('99% confidence interval: ', stats.t.interval(0.99, df = 9,loc=mean_height, scale=SE))\n", | |
"print('95% confidence interval: ', stats.t.interval(0.95, df = 9,loc=mean_height, scale=SE))\n", | |
"print('80% confidence interval: ', stats.t.interval(0.8, df = 9, loc=mean_height, scale=SE))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Note that as your confidence increases, the interval necessarily widens." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## What does this mean?\n", | |
"\n", | |
"Confidence intervals allow us to set our desired confidence, and then report a range that will likely contain the population mean. The higher our desired confidence, the larger range we report. In general once can never report a single point value, because the probability that any given point is the true population mean is incredibly small. Let's see how our intervals tighten as we change sample size." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 61, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"(61.148817012870381, 65.80952444868899)\n", | |
"(62.52382122002232, 64.434520241537044)\n", | |
"(63.186062588148623, 63.772278873410748)\n" | |
] | |
} | |
], | |
"source": [ | |
"np.random.seed(10)\n", | |
"\n", | |
"sample_sizes = [10, 100, 1000]\n", | |
"for s in sample_sizes:\n", | |
" heights = np.random.normal(POPULATION_MU, POPULATION_SIGMA, s)\n", | |
" SE = np.std(heights) / np.sqrt(s)\n", | |
" print stats.norm.interval(0.95, loc=mean_height, scale=SE)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Visualizing Confidence Intervals\n", | |
"\n", | |
"Confidence Intervals are a very important concept, make sure you understand this well. We visualize what the intervals mean in relation to our sample data below." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 76, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"62.29,64.08\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAe0AAAFXCAYAAACP5RboAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGUlJREFUeJzt3Xl0VPXdx/HPkAmJCcEEGboQULAgVbBWBeSRgGxN1WJk\nh/QENFQkzSktTVtWAxQRKNXWoqyVUlksAcGYo6UeCAgCRroQEFHBo/gEKGUZJRthEub5w4epgSRM\nwr13/E3er78yS+798uPCOzezufx+v18AAOArr0moBwAAAMEh2gAAGIJoAwBgCKINAIAhiDYAAIYg\n2gAAGMId6gHqcupUca23JSTEyOstc3Caxoc1th9rbD/W2F6sr/U8nrhabzP2TNvtjgj1CGGPNbYf\na2w/1therK+zjI02AACNDdEGAMAQRBsAAEMQbQAADEG0AQAwBNEGAMAQRBsAAEMQbQAADEG0AQAw\nhK3RLiwsVFpaWrXr8vLyNGLECDt3CwBAWLLtvceXL1+uV199Vdddd13guvfee08bNmyQ3++3a7cA\nAIQt286027Ztq4ULFwYue71ePfPMM5o6dapduwQAIKzZdqadnJysoqIiSVJVVZWmTZumKVOmKCoq\nKuhtJCTE1Plm9HV9EgqswRrbr7Gs8cCsXEu3l/d0StD3bSxrHCqsr3Mc+WjOgwcP6ujRo5o5c6Yq\nKip05MgRzZkzR9OmTavz++r6uDePJ67Oj+7EtWON7ccaN1yw68Ya24v1tV5dPwQ5Eu3bb79dr732\nmiSpqKhIP//5z68abAAAUB0v+QIAwBC2RjsxMVE5OTlXvQ4AAFwdZ9oAABiCaAMAYAiiDQCAIYg2\nAACGINoAABiCaAMAYAiiDQCAIYg2AACGINoAABiCaAMAYAiiDQCAIYg2AACGINoAABiCaAMAYAii\nDQCAIYg2AACGINoAABiCaAMAYAiiDQCAIYg2AACGINoAABiCaAMAYAiiDQCAIYg2AACGINoAABiC\naAMAYAiiDQCAIYg2AACGINoAABiCaAMAYAiiDQCAIYg2AACGINoAABjC1mgXFhYqLS1NknTo0CGl\npqYqLS1NY8eO1enTp+3cNQAAYce2aC9fvlzTp09XRUWFJGnOnDl64okntGrVKg0YMEDLly+3a9cA\nAIQl26Ldtm1bLVy4MHD5mWee0be//W1JUlVVlaKiouzaNQAAYclt14aTk5NVVFQUuNyqVStJ0j//\n+U+tXr1aa9asueo2EhJi5HZH1Hq7xxN37YOiTqyx/VjjhqnPurHG9mJ9nWNbtGvy+uuva/HixVq2\nbJlatGhx1ft7vWW13ubxxOnUqWIrx8NlWGP7scYNF+y6scb2Yn2tV9cPQY5FOzc3V+vWrdOqVasU\nHx/v1G4BAAgbjkS7qqpKc+bM0Te+8Q395Cc/kSR17dpVEyZMcGL3AACEBVujnZiYqJycHEnSO++8\nY+euAAAIe7y5CgAAhiDaAAAYgmgDAGAIog0AgCGINgAAhiDaAAAYgmgDAGAIog0AgCGINgAAhiDa\nAAAYgmgDAGAIog0AgCGINgAAhiDaAAAYgmgDAGAIWz9PG4C50uflh3oEAJfhTBsAAEMQbQAADEG0\nAQAwBNEGAMAQRBsAAEMQbQAADEG0AQAwBNEGAMAQRBsAAEMQbQAADEG0AQAwBNEGAMAQRBsAAEMQ\nbQAADEG0AQAwBNEGAMAQtka7sLBQaWlpkqSjR49q1KhRSk1N1YwZM3Tx4kU7dw0AQNixLdrLly/X\n9OnTVVFRIUmaO3eufvazn2nt2rXy+/3aunWrXbsGACAs2Rbttm3bauHChYHLBw8eVLdu3SRJvXr1\n0u7du+3aNQAAYclt14aTk5NVVFQUuOz3++VyuSRJsbGxKi4uvuo2EhJi5HZH1Hq7xxN37YOiTqyx\nPQZm5Vq6vbynUyzdngnqc2xyHNuL9XWObdG+XJMm/z2pLy0tVfPmza/6PV5vWa23eTxxOnXq6uFH\nw7HG5miMf0/B/pk5ju3F+lqvrh+CHHv2+K233qqCggJJ0o4dO3T33Xc7tWsAAMKCY9GeNGmSFi5c\nqBEjRsjn8yk5OdmpXQMAEBZs/fV4YmKicnJyJEnt2rXT6tWr7dwdAABhjTdXAQDAEEQbAABDEG0A\nAAxBtAEAMATRBgDAEEQbAABDEG0AAAxBtAEAMATRBgDAEEQbAABDEG0AAAxBtAEAMATRBgDAEEQb\nAABDEG0AAAxBtAEAMATRBgDAEEQbAABDEG0AAAxBtAEAMATRBgDAEEQbAABDEG0AAAxBtAEAMATR\nBgDAEEQbAABDBBXtxx57TH/961/l8/nsngcAANQiqGiPGzdOO3fuVHJysmbNmqX9+/fbPRcAALiM\nO5g7de3aVV27dtX58+e1efNmTZgwQc2aNdPQoUOVmpqqpk2b2j0nAACNXlDRlqSCggLl5uZq165d\n6tWrlx544AHt2rVLGRkZeuGFF+ycEQAAKMho9+nTR4mJiRoyZIiys7MVHR0tSerWrZuGDh1q64AA\nAOALQUX7z3/+s2JjY3XDDTfo/PnzOnr0qG688UZFRERo06ZNds8IAAAU5BPRtm/frh/96EeSpDNn\nzmj8+PFat26drYMBAIDqgop2Tk6O1qxZI0lq3bq1Nm7cqNWrV9d7Zz6fT1lZWRo5cqRSU1P10Ucf\n1XsbAAA0VkFF2+fzVXuGeGRkZIN29uabb6qyslJ/+ctflJmZqd///vcN2g4AAI1RUI9p9+/fX2PG\njNH9998vSXrjjTfUt2/feu+sXbt2qqqq0sWLF1VSUiK3O+gnrwMA0Oi5/H6/P5g7bt68WXv37pXb\n7VbXrl3Vv3//eu/sxIkT+vGPf6yysjJ5vV4tWbJEd955Z633r6ysktsdUe/9AFYbmJUb6hFwmbyn\nU0I9AuC4oE91b775ZrVs2VKXGr9371517dq1XjtbuXKlevbsqaysLJ04cUJjxoxRXl6eoqKiary/\n11tW67Y8njidOlVcr/2jflhjfJUFe2xyHNuL9bWexxNX621BRXvWrFnatm2b2rRpE7jO5XLpxRdf\nrNcgzZs3Dzwefv3116uyslJVVVX12gYAAI1VUNHetWuXNm/eHHhTlYZ65JFHNHXqVKWmpsrn82ni\nxImKiYm5pm0CANBYBBXtNm3aKMiHvusUGxurZ5999pq3AwBAYxRUtK+//no9+OCD+u53v1vtpV9z\n5861bTAAAFBdUNFOSkpSUlKS3bMAAIA6BBXtQYMGqaioSEeOHFHPnj114sSJak9KAwAA9gvqHdFe\nf/11ZWRkaM6cOfr88881cuRI5ebyulUAAJwUVLSXL1+ul156KfBJX5s2bdKyZcvsng0AAHxJUNFu\n0qSJmjVrFrjcqlUrNWkS1LcCAACLBPWYdocOHbR69WpVVlbq0KFDWrt2rTp16mT3bAAA4EuCOl3O\nzs7WyZMnFRUVpalTp6pZs2aaMWOG3bMBAIAvCepMOyYmRllZWcrKyrJ7HgAAUIugot2pUye5XK5q\n13k8Hu3YscOWoQAAwJWCivb7778f+Nrn82nLli3at2+fbUMBAIAr1fsp4JGRkbr//vv19ttv2zEP\nAACoRVBn2q+88krga7/fr8OHDwc+YhMAADgjqGgXFBRUu5yQkKDf/e53tgwEAABqFlS0+TQvAABC\nL6ho9+3b94pnj0tf/Krc5XJp69atlg8GAKZLn5dv6fZWTO5r6fZgnqCiPXDgQEVGRmr48OFyu93K\ny8vTgQMHNHHiRLvnAwAA/y+oaO/cuVMbN24MXB4zZowGDx6s1q1b2zYYAACoLuiXfO3evTvw9bZt\n2xQbG2vLQAAAoGZBnWn/+te/1qRJk3T69GlJUvv27TV//nxbBwMAANUFFe3OnTvrtdde09mzZxUV\nFcVZNgAAIRDUr8ePHTumRx99VCNHjlRZWZlGjx6toqIiu2cDAABfEvRHc44dO1YxMTFq2bKlfvCD\nH2jSpEl2zwYAAL4kqGh7vV717NlTkuRyuTR8+HCVlJTYOhgAAKguqGhHR0fr3//+d+ANVv7+97+r\nadOmtg4GAACqC+qJaFOmTNHjjz+uTz/9VCkpKfr888/17LPP2j0bAAD4kqCifebMGW3YsEGffPKJ\nqqqq1L59e860AQBwWFC/Hl+wYIEiIyPVoUMHderUiWADABACQZ1pt2nTRlOmTNF3vvMdRUdHB65/\n+OGHbRsMAABUV2e0T548qa997WtKSEiQJBUWFla7nWgDAOCcOqM9fvx4bdq0SXPnztWKFSuUnp7u\n1FwAAOAydT6m7ff7A1/n5eXZPgwAAKhdndG+9LpsqXrAAQCA84J6IppUPeDXYunSpcrPz5fP59Oo\nUaM0bNgwS7YLAEC4qzPahw8fVr9+/SR98aS0S1/7/X65XC5t3bq1XjsrKCjQv/71L7300ksqLy/X\nihUrGjg2AACNT53R/tvf/mbpzt566y117NhRmZmZKikp0a9+9StLtw8AQDirM9qtW7e2dGder1fH\njx/XkiVLVFRUpIyMDG3evLnWX70nJMTI7Y6odXseT5yl8+FKNa3xwKxcS/eR93SKpdtD41Cff//h\n8n9F+rx8S7dn1b+9cFlfEwT9mLYV4uPjA2+B2r59e0VFRens2bO64YYbary/11tW67Y8njidOlVs\n16iQc2vM3yMaItjjhv8ramfFurC+1qvrh6Cg3sbUKnfddZd27twpv9+vkydPqry8XPHx8U6OAACA\nsRw90+7Tp4/27t2roUOHyu/3Kzs7WxERtf/6GwAA/Jej0ZbEk88AAGggR389DgAAGo5oAwBgCKIN\nAIAhiDYAAIYg2gAAGIJoAwBgCKINAIAhiDYAAIYg2gAAGIJoAwBgCMffxhRA+IupKNW9H+5WQqlX\n3tgE7er4PyqLig31WIDxiDYASw0vWK+h77ys63znA9c9tv0Fbeg2RDndh4VwMsB8RBuAZYYXrFfa\nrjVXXH+d73zgesINNBzRBnCFLp8eUEb+UrU5W2TpdtN2rakx6rX53xaJWtz3cR1o28XSOQBT8UQ0\nAFfI3LLY8mA3RJuzRcrcsjjUYwBfGZxpAzBS+rz8UI8AOI4zbQBXeL5/hj5tkRjqMfRpi0Q93z8j\n1GMAXxmcaQO4woG2XZT5yHP1+p6YilKtXDa22rPGL1ceGa0x41aoPCrmWkcEGiXOtAFYoiwqVhu6\nDanzPhu6DSHYwDXgTBuAZS69nOvy12mXR0bzOm3AAkQbgKVyug9T3h0P6t7Du9Wi1KuzsQna1eF/\nOMMGLEC0AViuPCpGWzr3D/UYQNjhMW0AAAxBtAEAMATRBgDAEEQbAABDEG0AAAxBtAEAMATRBgDA\nEEQbAABDEG0AAAxBtAEAMERIon3mzBn17t1bH330USh2DwCAkRyPts/nU3Z2tqKjo53eNQAARnM8\n2vPnz9fIkSPVqlUrp3cNAIDRHP2Ur40bN6pFixZKSkrSsmXLrnr/hIQYud0Rtd7u8cRZOR5q4MQa\nW72PgVm5lm4PCFfp8/It32be0ymWbxP/5Wi0X375ZblcLu3Zs0eHDh3SpEmTtHjxYnk8nhrv7/WW\n1botjydOp04V2zUq5Nwa8/cIhA/+PV+7uk5kHI32mjVrAl+npaVp5syZtQYbAABUx0u+AAAwhKNn\n2l+2atWqUO0aAAAjcaYNAIAhiDYAAIYg2gAAGIJoAwBgCKINAIAhiDYAAIYg2gAAGIJoAwBgCKIN\nAIAhiDYAAIYg2gAAGIJoAwBgCKINAIAhiDYAAIYg2gAAGIJoAwBgCHeoBwAAoDbp8/It3d6KyX0t\n3Z7TONMGAMAQRBsAAEMQbQAADEG0AQAwBNEGAMAQRBsAAEMQbQAADEG0AQAwBNEGAMAQRBsAAEMQ\nbQAADEG0AQAwBNEGAMAQRBsAAEMQbQAADEG0AQAwhNvJnfl8Pk2dOlXHjh3ThQsXlJGRoX79+jk5\nAgAAxnI02q+++qri4+O1YMECffbZZ3r44YeJNgAAQXI02t///veVnJwsSfL7/YqIiHBy9wAAGM3l\n9/v9Tu+0pKREGRkZGj58uAYOHFjr/Sorq+R2N66wD8zKtXybeU+nWLo9O2YEAFNZ/X9sXRw905ak\nEydOKDMzU6mpqXUGW5K83rJab/N44nTqVLHV44Wlhq4TawwAV2f1/5MeT1yttzka7dOnTys9PV3Z\n2dnq0aOHk7sGAMB4jr7ka8mSJTp37pwWLVqktLQ0paWl6fz5806OAACAsRw9054+fbqmT5/u5C4B\nAAgbvLkKAACGINoAABiCaAMAYAiiDQCAIYg2AACGINoAABiCaAMAYAiiDQCAIYg2AACGINoAABiC\naAMAYAiiDQCAIYg2AACGINoAABiCaAMAYAhHP0/7qyB9Xr6l21sxua+l2wMAoDacaQMAYAiiDQCA\nIYg2AACGINoAABiCaAMAYAiiDQCAIYg2AACGINoAABiCaAMAYAiiDQCAIYg2AACGINoAABiCaAMA\nYAiiDQCAIYg2AACGINoAABiCaAMAYAi3kzu7ePGiZs6cqQ8++EBNmzbVk08+qRtvvNHJEQAAMJaj\nZ9pbtmzRhQsXtG7dOmVlZWnevHlO7h4AAKM5Gu1//OMfSkpKkiTdcccdevfdd53cPQAARnP01+Ml\nJSVq1qxZ4HJERIQqKyvldtc8hscTV+f2rnZ7TfKeTqn39zjpqzZfTWv8VZsRABoLR8+0mzVrptLS\n0sDlixcv1hpsAABQnaPRvvPOO7Vjxw5J0r59+9SxY0cndw8AgNFcfr/f79TOLj17/MMPP5Tf79dT\nTz2lm2++2andAwBgNEejDQAAGo43VwEAwBBEGwAAQxjz1O1BgwYFXi6WmJio8ePHa/LkyXK5XOrQ\noYNmzJihJk34GeRaXL7GaWlpevzxx3XTTTdJkkaNGqUHHngghBOab+nSpcrPz5fP59OoUaPUrVs3\njmMLXb6+t912G8ewhTZu3KhNmzZJkioqKnTo0CGtXbtWTz31FMewQ4x4TLuiokIjRozQK6+8Erhu\n/PjxevTRR9W9e3dlZ2crKSlJAwYMCOGUZqtpjdevX6/i4mKlp6eHcLLwUVBQoD/96U9atGiRysvL\ntWLFCh08eJDj2CI1re/Xv/51jmGbzJo1S506ddK2bds4hh1kxI9D77//vsrLy5Wenq7Ro0dr3759\nOnjwoLp16yZJ6tWrl3bv3h3iKc1W0xq/++672r59u374wx9q6tSpKikpCfWYRnvrrbfUsWNHZWZm\navz48brvvvs4ji1U0/pyDNvjwIEDOnLkiEaMGMEx7DAjfj0eHR2tsWPHatiwYfrkk0/02GOPye/3\ny+VySZJiY2NVXFwc4inNVtMajxs3TsOGDVPnzp21ePFiPf/885o0aVKoRzWW1+vV8ePHtWTJEhUV\nFSkjI4Pj2EI1rS/HsD2WLl2qzMxMSeIYdpgRZ9rt2rXTQw89JJfLpXbt2ik+Pl5nzpwJ3F5aWqrm\nzZuHcELz1bTGSUlJ6ty5syRpwIABeu+990I8pdni4+PVs2dPNW3aVO3bt1dUVFS1/+A4jq9NTet7\n3333cQxb7Ny5c/r44491zz33SFK1x685hu1nRLQ3bNgQ+ESwkydPqqSkRPfee68KCgokSTt27NDd\nd98dyhGNV9MaZ2Zmav/+/ZKkPXv26LbbbgvliMa76667tHPnTvn9fp08eVLl5eXq0aMHx7FFalrf\ncePGcQxbbO/everRo0fg8q233sox7CAjnoh24cIFTZkyRcePH5fL5dIvfvELJSQk6IknnpDP51P7\n9u315JNPKiIiItSjGqumNY6KitLs2bMVGRmpli1bavbs2dU+8AX195vf/EYFBQXy+/2aOHGiEhMT\nOY4tdPn6tmjRgmPYYn/84x/ldrv1yCOPSJI+/vhjjmEHGRFtAABgyK/HAQAA0QYAwBhEGwAAQxBt\nAAAMQbQBADAE0QbCWFFRkfr27XvF9bfcckut33PgwAFNmzatzu1OnjxZGzduvOL6/fv3a8GCBfUf\nFEBQjHgbUwDO6dKli7p06dKg7z1y5Ei1dysEYC3OtIFGqqqqSnPnztWgQYP00EMPaeXKlZK++LSs\ntLQ0SdKHH36owYMHKyUlRbNnz6726U3bt2/X0KFD1adPH61bt07nzp3TH/7wB+Xn52vx4sWh+CMB\nYY8zbSDM/ec//1FKSsoV1+fk5EiSNm3apAsXLmjs2LGB9+m+ZPLkyfrpT3+q3r17a+XKlaqqqgrc\nduHCBa1fv16HDx/W6NGjNWLECE2YMEHvvPOOMjIy7P1DAY0U0QbCXKtWrZSbm1vtultuuUV79uzR\noUOH9Pbbb0uSysrK9MEHH+hb3/qWJOmzzz7TsWPH1Lt3b0nSkCFD9OKLLwa20a9fP7lcLnXo0EFe\nr9ehPw3QuBFtoJGqqqrSL3/5S33ve9+TJJ09e1YxMTEqLCyUJEVERKiudzm+9P7Slz6WEYD9eEwb\naKTuuece5eTkyOfzqbS0VKmpqYFgS1JcXJzatm2rN998U5KUl5d31W1GRESosrLStpmBxo5oA43U\nyJEjddNNN2nQoEEaMmSIBg8erO7du1e7z/z587Vo0SINGjRI+/fvV3R0dJ3bvP3221VYWKjf/va3\ndo4ONFp8yheAWj333HMaPny4WrVqpTfeeEN5eXlauHBhqMcCGi0e0wZQq29+85tKT0+X2+1W8+bN\nNWfOnFCPBDRqnGkDAGAIHtMGAMAQRBsAAEMQbQAADEG0AQAwBNEGAMAQRBsAAEP8HzHf5iRq2dSC\nAAAAAElFTkSuQmCC\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0xc9e8e48>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"sample_size = 100\n", | |
"heights = np.random.normal(POPULATION_MU, POPULATION_SIGMA, sample_size)\n", | |
"SE = np.std(heights) / np.sqrt(sample_size)\n", | |
"(l, u) = stats.norm.interval(0.95, loc=np.mean(heights), scale=SE)\n", | |
"\n", | |
"print('%.2f,%.2f'%(l, u))\n", | |
"\n", | |
"plt.hist(heights, bins=20)\n", | |
"plt.xlabel('Height')\n", | |
"plt.ylabel('Frequency')\n", | |
"\n", | |
"# Just for plotting\n", | |
"y_height = 5\n", | |
"plt.plot([l, u], [y_height, y_height], '-', color='r', linewidth=4, label='Confidence Interval')\n", | |
"plt.plot(np.mean(heights), y_height, 'o', color='r', markersize=10)\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Important: Violation of Assumptions\n", | |
"\n", | |
"The computation of a standard deviation, standard error, and confidence interval all rely on certain assumptions. If these assumptions are violated then the 95% confidence interval will not necessarily contain the population parameter 95% of the time. Here is an example." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Example: Autocorrelated Data\n", | |
"\n", | |
"If your data generating process is autocorrelated, then estimates of standard deviation will be wrong. This is because autocorrelated processes tend to produce more extreme values than normally distributed processes. In such a process, new values depend on previous values, so series that are already far from the mean are likely to stay far from the mean. \n", | |
"$$X_t = \\theta X_{t-1} + \\epsilon$$\n", | |
"$$\\epsilon \\sim \\mathcal{N}(0,1)$$" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 77, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n/w8CkkZkz892CAAAAABJRU5ErkJggg==\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0xa8bacc0>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"def generate_autocorrelated_data(theta, mu, sigma, N):\n", | |
" # Initialize the array\n", | |
" X = np.zeros((N, 1))\n", | |
" \n", | |
" for t in range(1, N):\n", | |
" # X_t = theta * X_{t-1} + epsilon\n", | |
" X[t] = theta * X[t-1] + np.random.normal(mu, sigma)\n", | |
" return X\n", | |
"\n", | |
"X = generate_autocorrelated_data(0.5, 0, 1, 100)\n", | |
"\n", | |
"plt.plot(X)\n", | |
"plt.xlabel('t')\n", | |
"plt.ylabel('X[t]')\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Now, we need to know the true population of this series. For larger sample sizes, the sample mean should still asymptotically converge to zero. This is because the process is still centered around zero, but let's check if that's true. We'll vary the number of samples draw, and look for convergence as we increase sample size." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 81, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\nFRQU6Kyzzioz/7XXXtP+/ft12223ad++fapTp44uuOACde7cudLXycsrDFnNSUmJOnjwWOAFo0BF\nbYnWtpneL9GKtjgTbXGmULalqg8HYQv1irRr107vvvuu2rRpo7Vr1+ryyy8vM/+BBx7w/3/27Nlq\n2LBhlYEOAAB+YOt36unp6fr888+Vnp6uxYsXa9y4cZKkF154QW+//badpQAAYBxbR+rx8fF66qmn\nTpt+++23nzbtrrvusqMkAACMwcVnAAAwhMuyLCvSRQAAgJpjpA4AgCEIdQAADEGoAwBgCEIdAABD\nEOoAABiCUAcAwBC2XnzGqXw+nzIyMrRr1y7FxsYqMzNTzZo1i3RZ1XbixAlNnjxZ+/btU3FxscaM\nGaOf/OQnGj16tC666CJJJ6/m16tXr8gWWk0333yzvF6vJOnCCy/UnXfeqUmTJsnlcumSSy7RI488\nopgY538eXbp0qV599VVJ0vHjx7Vjxw4tXrw46vrlo48+0hNPPKH58+dr7969FfbFkiVLlJOTI4/H\nozFjxui6666LdNkV+nFbduzYoccff1xut1uxsbGaPn26GjZsqMzMTG3dulUJCQmSpLlz5/pvROUk\nP27Lp59+WuF+FY39cs899+i7776TJO3bt0+XXnqpfv/73zu+Xyp6H7744ovtP14sWH//+9+tiRMn\nWpZlWR9++KF15513Rrii4OTm5lqZmZmWZVlWXl6edc0111hLliyx5s2bF+HKgldUVGSlpaWVmTZ6\n9Ghr48aNlmVZ1pQpU6y33norEqXVSEZGhpWTkxN1/fLcc89ZvXv3tgYOHGhZVsV9ceDAAat3797W\n8ePHraNHj/r/7zTl23Lrrbdan376qWVZlrVo0SIrKyvLsizLGjJkiPX9999HrM7qKN+WivaraO2X\nUw4fPmzddNNN1v79+y3Lcn6/VPQ+HInjxfnDHRv8+D7vbdu21fbt2yNcUXB69uyp8ePHS5Isy5Lb\n7db27dv1zjvv6NZbb9XkyZOVn58f4SqrZ+fOnfrf//6nkSNHavjw4dq2bZv+9a9/qUOHDpKkzp07\n6/33349wlcH55JNP9MUXX2jw4MFR1y9NmzbV7Nmz/Y8r6ouPP/5Yl112mWJjY5WYmKimTZtq586d\nkSq5UuXb8uSTT6pVq1aSpNLSUsXFxcnn82nv3r16+OGHNWTIEOXm5kaq3CqVb0tF+1W09ssps2fP\n1tChQ9WoUaOo6JeK3ocjcbwQ6pLy8/P9p3slye12q6SkJIIVBSchIUFer1f5+fm6++679Zvf/EZt\n2rTRAw88oL/85S9q0qRJte9PH2l169bVqFGjNG/ePD366KO67777ZFmWXC6XpJNtPXYsum7F+Oyz\nz2rs2LGSFHX90qNHD3k8P3xLV1Ff5OfnlzkNmpCQ4MgPK+Xb0qhRI0nS1q1btWDBAo0YMUKFhYUa\nOnSoZsyYoT//+c9auHChI4OwfFsq2q+itV8k6fvvv9eGDRvUr18/SYqKfqnofTgSxwuhLsnr9frv\n8y6d/I69/E7mdP/5z380fPhwpaWlqU+fPurWrZtat24tSerWrZs+/fTTCFdYPc2bN9dNN90kl8ul\n5s2bq379+vr+++/98wsKCnTWWWdFsMLgHD16VLt371bHjh0lKWr75ZQf/5bhVF+UP34KCgoc9V1n\nVd5880098sgjeu6553TOOecoPj5ew4cPV3x8vLxerzp27Oi48KhIRftVNPfLypUr1bt3b7ndbkmK\nmn4p/z4cieOFUNfJ+7yvXbtWkrRt2zalpKREuKLgfPfddxo5cqTuv/9+DRgwQJI0atQoffzxx5Kk\nDRs26Oc//3kkS6y23NxcZWdnS5L279+v/Px8derUSf/85z8lSWvXrtUvfvGLSJYYlA8++EBXXnml\n/3G09sspP/vZz07rizZt2mjLli06fvy4jh07pi+//DIqjqFly5ZpwYIFmj9/vpo0aSJJ2rNnj9LT\n01VaWqoTJ05o69atUdFHFe1X0dov0sk2dO7c2f84GvqlovfhSBwv0TUcDZNu3bpp/fr1GjJkiCzL\nUlZWVqRLCsozzzyjo0ePau7cuZo7d64kadKkScrKylKdOnXUsGFDPf744xGusnoGDBigBx98UOnp\n6XK5XMrKylKDBg00ZcoUPfnkk2rRooV69OgR6TKrbffu3brwwgv9jzMyMvT4449HXb+cMnHixNP6\nwu12a9iwYbrllltkWZbuuecexcXFRbrUKpWWlmrq1Kn6yU9+4r/Nc/v27XX33XcrLS1NgwYNUp06\ndZSWlqZLLrkkwtUGVtF+5fV6o65fTtm9e7f/g5YkJScnO75fKnof/u1vf6vMzExbjxfu0gYAgCE4\n/Q4AgCEIdQAADEGoAwBgCEIdAABDEOoAABiCP2kDotzKlSv13HPPqaSkRJZlKS0tTb/85S/D9npL\nly7Vpk2b/NcTCOTo0aN69NFH9dlnn0k6eSW3KVOm6KKLLtLbb7+t7du3+y+vCaBmCHUgiu3fv1/T\np0/X0qURjZ9eAAAEpUlEQVRL1aBBAxUUFGjYsGFq3ry5unbtGunyJEkzZ85USkqKZs6cKUlasWKF\n7rnnHr366qvq2rWrY+oETECoA1EsLy9PJ06cUFFRkaST15HOzs72X8zib3/7m1544QUVFRXp+PHj\nyszMVPv27TVs2DC1atVKGzZsUFFRkR566CHNnz9fX3zxhUaMGKERI0Zo9uzZ2rNnj7766isdPnxY\ngwcPPu0MwMcff6xp06apqKhIDRo00KOPPlrmoiHSySttnXvuufL5fIqJiVGvXr1Ur149ST+M+seN\nG+e/Pr508uIj48eP14gRI/S73/1OmzZtUmlpqfr166cRI0aEcYsC0Y1QB6JYy5Yt1bVrV11//fVq\n1aqVrrjiCvXp00fNmjWTz+dTTk6OnnnmGZ1zzjnKzc3VvHnz1L59e//zly9frqefflqZmZl6/fXX\ndejQIfXt29cfnJ999plycnLk8/nUr1+/Mpe8LS4u1kMPPaRnnnlGjRs31nvvvacpU6boxRdfLFPj\nmDFjNHbsWC1cuFAdO3ZUp06ddNNNN5VZ5sILL9SyZcskSW+99ZaeffZZDR06VEuWLJEkvfrqqyou\nLtaoUaPUunXrqLpUMGAnQh2Ico8++qh+/etfa926dVq3bp0GDRqkJ554Qt27d9ecOXO0evVq7d69\nW5s2bSpzg4lT19Zu3LixLr30UsXHx+uCCy7Q0aNH/cv07t1bCQkJkqQuXbpo48aNatCggaST1+P+\n+uuvNWbMGP/yFd1tqnXr1nr77be1detWvf/++3r++eeVk5OjxYsXn7bszp07NX36dM2fP19xcXHa\nsGGDduzYoY0bN0o6ebeuXbt2EepAJQh1IIq98847KiwsVK9evdS/f3/1799fS5YsUW5urjp16qT+\n/fsrLS1N7du3109/+lP95S9/8T+3Tp06/v9XdlfCU3fJkk7evbD84x+PsEtLS/Xdd9+Veb5lWcrI\nyNDkyZPVoUMHdejQQWPHjlWPHj1Ou0PdoUOHdPfddysrK0uNGzf2r/P+++9X9+7d/cucOnUP4HT8\nSRsQxerWrauZM2fqm2++kXQyRL/44gu1atVKe/bsUUxMjO6880517NhRa9euVWlpaVDrX7VqlYqL\ni3XkyBGtWbNGV199tX9eixYtdOTIEW3evFmS9Morr+i+++4r83yXy6Uvv/xS8+bNk8/nkyQdOHBA\nJSUlatq0qX+5EydOaPz48Ro2bJiuuOIK//SOHTtqyZIlOnHihAoKCnTLLbfoo48+Cm4jAbUII3Ug\ninXs2FHjxo3TnXfeqRMnTkiSUlNTNXbsWLndbrVq1Uo33HCD6tatq/bt2+vbb78Nav1xcXG65ZZb\nlJ+fr9GjR+viiy/23+IzNjZWf/jDHzR16lQdP35cXq9X06dPP20dTz75pKZNm6auXbsqPj5eiYmJ\nmjlzpurXr+9fZuXKlfrwww/1v//9T6+88oosy9JVV12le++9V3v37tXNN9+skpIS9evXr0zoAyiL\nu7QBqNDs2bMlyX9rUgDOx+l3AAAMwUgdAABDMFIHAMAQhDoAAIYg1AEAMAShDgCAIQh1AAAMQagD\nAGCI/wOQSr31wI/u4gAAAABJRU5ErkJggg==\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0xf0e8cc0>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"sample_means = np.zeros(200-1)\n", | |
"for i in range(1, 200):\n", | |
" X = generate_autocorrelated_data(0.5, 0, 1, i * 10)\n", | |
" sample_means[i-1] = np.mean(X)\n", | |
" \n", | |
"plt.bar(range(1, 200), sample_means);\n", | |
"plt.xlabel('Sample Size')\n", | |
"plt.ylabel('Sample Mean')\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Definitely looks like there's some convergence, we can also check what the mean of the sample means is." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 82, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"-0.0027245570485071994" | |
] | |
}, | |
"execution_count": 82, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"np.mean(sample_means)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Pretty close to zero. We could also derive symbolically that the mean is zero, but let's assume that we've convinced ourselves that the true population mean is 0. Now that we know the population mean, we can check the calibration of confidence intervals. Let's first compute an interval using our earlier process and then check whether the interval actually contains the true mean, 0." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 83, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"def compute_unadjusted_interval(X):\n", | |
" T = len(X)\n", | |
" # Compute mu and sigma MLE\n", | |
" mu = np.mean(X)\n", | |
" sigma = np.std(X)\n", | |
" SE = sigma / np.sqrt(T)\n", | |
" # Compute the bounds\n", | |
" return stats.norm.interval(0.95, loc=mu, scale=SE)\n", | |
"\n", | |
"# We'll make a function that returns true when the computed bounds contain 0\n", | |
"def check_unadjusted_coverage(X):\n", | |
" l, u = compute_unadjusted_interval(X)\n", | |
" # Check to make sure l <= 0 <= u\n", | |
" if l <= 0 and u >= 0:\n", | |
" return True\n", | |
" else:\n", | |
" return False" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Now we'll run many trials, in each we'll sample some data, compute a confidence interval, and then check if the confidence interval contains the population mean. Over many runs, we should expect to see 95% of the trials succeed if the intervals are computed correctly." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 84, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Empirical Coverage: 0.764\n", | |
"Expected Coverage: 0.95\n" | |
] | |
} | |
], | |
"source": [ | |
"T = 100\n", | |
"trials = 500\n", | |
"times_correct = 0\n", | |
"for i in range(trials):\n", | |
" X = generate_autocorrelated_data(0.5, 0, 1, T)\n", | |
" if check_unadjusted_coverage(X):\n", | |
" times_correct += 1\n", | |
" \n", | |
"print 'Empirical Coverage: ', times_correct/float(trials)\n", | |
"print 'Expected Coverage: ', 0.95" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": true | |
}, | |
"source": [ | |
"Clearly the coverage is wrong. In this case we'd need to do what's known as a [Newey-West correction](https://en.wikipedia.org/wiki/Newey%E2%80%93West_estimator) on our standard error estimate to account for the autocorrelation. " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"In practice it's important to check for the assumptions you make. It is quick and easy to check if your data are stationary (which implies not autocorrelated), and it can save you a lot of pain and suffering to do so. A normality test such as `Jarque Bera` will also be a good idea, as it may detect certain distribution properties which may violate assumptions of many following statistical analyses." | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 2", | |
"language": "python", | |
"name": "python2" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 2 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython2", | |
"version": "2.7.13" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 0 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment