diff --git a/Machine Learning for Economics and Finance/python-exercises/python-exercises.ipynb b/Machine Learning for Economics and Finance/python-exercises/python-exercises.ipynb new file mode 100755 index 0000000..009f8ea --- /dev/null +++ b/Machine Learning for Economics and Finance/python-exercises/python-exercises.ipynb @@ -0,0 +1,425 @@ +{ + "cells": [ + { + "cell_type": "raw", + "id": "6cbef61b-0897-42bf-b456-c0a409b87c41", + "metadata": {}, + "source": [ + "\\vspace{-4cm}\n", + "\\begin{center}\n", + " \\LARGE{Machine Learning for Economics and Finance}\\\\[0.5cm]\n", + " \\Large{\\textbf{Python Exercises}}\\\\[1.0cm]\n", + " \\large{Ole Wilms}\\\\[0.5cm]\n", + " \\large{April 24, 2024}\\\\\n", + "\\end{center}" + ] + }, + { + "cell_type": "raw", + "id": "13be77f3-44f0-4983-b4cb-bd3e4b5dba8b", + "metadata": {}, + "source": [ + "\\setcounter{secnumdepth}{0}" + ] + }, + { + "cell_type": "raw", + "id": "a4c564a3-8712-4601-84b4-72b51df8bbbf", + "metadata": {}, + "source": [ + "\\tableofcontents" + ] + }, + { + "cell_type": "markdown", + "id": "040dc2a4-910e-4cf5-9d1e-62fe7d0a8efd", + "metadata": {}, + "source": [ + "## Important Instructions\n", + " - The purpose of these exercises is to get to know Python by solving some basic programming exercises\n", + " - In case you struggle with some problems, please post your questions on the OpenOlat Forum.\n", + " - Particularly difficult questions are marked by $\\color{red}{\\text{(D)}}$. Don’t worry if you cannot solve these questions right away. Throughout the course, these programming concepts will become easier to understand.\n", + " - Sample solutions to the exercises will be provided next week. However, I strongly encourage all students to work on the exercises beforehand." + ] + }, + { + "cell_type": "raw", + "id": "d1a6cda1-d74f-4a81-8c17-cdd83a0dae17", + "metadata": {}, + "source": [ + "\\newpage" + ] + }, + { + "cell_type": "markdown", + "id": "87902d82-5336-456b-bec8-403530c75f00", + "metadata": { + "tags": [] + }, + "source": [ + "## Task 1: Constructing a dataset\n", + "\n", + "1. Create different kinds of vectors with $6$ entries each:\n", + " - vector $a$: a vector with only ones (hint: you can use the `np.repeat()` function)\n", + " - vector $b$: a vector of integers that goes from $1$ to $6$ (hint: you can use the `np.arange()` function)\n", + " - vector $c$: a vector where each entry is drawn from a normal distribution with mean $2$ standard deviation $5$.\n", + " - vector $d$: a vector where each entry consists of one of the words in \"*Machine Learning for Economics and Finance*\"." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f1cf1749-9e5b-434a-8f45-5d63db20ee2a", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "73330b81-0e43-43ac-911f-4086a9f9788f", + "metadata": {}, + "source": [ + "2. Stack vector $b$ into a matrix $M1$ of dimension $2$ x $3$ where you fill in by column. Stack the same vector into a matrix $M2$ of dimension $3$ x $2$ where you fill in by row." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4c658a6a-1c6a-4350-9c4f-6afdd4dbaa7c", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "80e4160e-374a-43e1-a159-45077703658e", + "metadata": { + "tags": [] + }, + "source": [ + "3. Add the two matrices. You will obtain an error message. What’s going wrong? Solve the problem using the transpose function `np.transpose()`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cb851b64-3518-406d-be06-46721a6eda01", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "03d19235-25ee-4c3b-b7bf-97cdf27d41b2", + "metadata": {}, + "source": [ + "4. Create a vector *train_sample* with $4$ entries by randomly sampling $4$ values from vector $b$ without replacement (that is, you cannot draw the same number twice). For this you can use the function `np.random.choice()`. Run the code that creates the vector multiple times. Explain what’s happening. Fix the issue by using the function `np.random.seed()`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "81aff077-3d61-468c-a872-9006f75af9e6", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "79732a93-d610-4d49-9bf0-a03b3f4edf22", + "metadata": {}, + "source": [ + "5. Put vectors $a$, $b$, $c$ and $d$ together in a dataframe called *df*." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "849fa290-26b8-44de-815e-59095fc3dd61", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "919dde6d-4ff0-481a-a0d8-9413abe8f56a", + "metadata": {}, + "source": [ + "6. Name the columns of *df* *’Ones’*, *’Seq’*, *’Normal’* and *’Coursename’* respectively (hint: you can use the function `pd.DataFrame()`). Provide a summary of the dataframe using the `describe()`function." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "55cc73a2-17c7-4e5c-80c3-f9badf83bfce", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "ada39fc4-a156-40e6-9281-9754302d2ae7", + "metadata": { + "tags": [] + }, + "source": [ + "7. $\\color{red}{\\text{(D)}}$ Add a column called *’Int’* to the dataframe which checks whether column *’Normal’* is larger than $0$. If that is the case *’Int’* should contain a *TRUE*, if that is not the case *’Int’* should contain a FALSE. Proceed as follows:\n", + " - Create a new column named *'Int'* in the DataFrame, initializing all elements to True. Use a loop to iterate through each row of the DataFrame. For each row, check if the corresponding value in the *'Normal'* column is greater than $0$. If it is, retain the *TRUE* value in the *'Int'* column; otherwise, replace it with *FALSE*.\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "59650599-11ed-4be4-8e21-4737642634db", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "b9f909ae-9a0e-4a69-a5f5-5f1eacb6bc2e", + "metadata": {}, + "source": [ + "8. $\\color{red}{\\text{(D)}}$ Can you think of an easier way to construct the column *’Int’* instead of the loop described above? If yes, add this column and call it *’Int2’*" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a37153ee-cee2-4591-84a0-d57292ec4610", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "20e52fac-725f-4b85-a6dd-6d70ea890928", + "metadata": {}, + "source": [ + "9. $\\color{red}{\\text{(D)}}$ Now we use our vector *train_sample* to construct two distinct datasets from *df*. The numbers in *train_sample* refer to the rows of our dataframe *df* that we want to use for the first dataset while all other rows can be used for the second dataset. Construct a new dataframe called *df_train* that only contains the rows in *train_sample*. Note that you can simply use square brackets to extract rows from a dataframe. Make sure that you extract all columns but only the rows that are in *train_sample*. Your object *df_train* should have $4$ rows and as many columns as *df*." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dcb74cc8-21d7-4321-acf3-c2ea7ef5356e", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "27a77f7f-437c-4d16-b34d-07dda30e2ac7", + "metadata": {}, + "source": [ + "10. $\\color{red}{\\text{(D)}}$ Construct another dataframe called *df_test* which contains the other two rows of *df* that are not in *df_train*. Note that you can use `~df.index.isin()` to select all rows that are *NOT* in *train_sample*." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d519d6f8-ebe6-47e7-b135-7c74c0b1f4f5", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "raw", + "id": "3ba17c73-a83f-43fa-8f29-3b773e25887b", + "metadata": { + "tags": [] + }, + "source": [ + "\\newpage" + ] + }, + { + "cell_type": "markdown", + "id": "df4f7f10-2779-43ab-a7b0-3bd1b3f15b0c", + "metadata": {}, + "source": [ + "## Task 2: Working data from the *ISLR2* library\n", + "\n", + "1. Install and load the library *ISLP*." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "551285b4-ef00-4be0-8000-ceac1ca7742e", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "45467793-413b-4441-8c43-3e4a613451c9", + "metadata": {}, + "source": [ + "2. Load the dataset *Auto* and save it into an object called *Auto*. Use the help function to obtain information about the variables in *Auto*." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f55378d0-ff39-4533-89ec-59582fdace34", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "f3d8420f-8986-4b9e-ac8b-bfd42cd9cd8a", + "metadata": {}, + "source": [ + "3. Provide a summary of *Auto* using the `describe()` function. Do you think all the variables in *Auto* could be readily used for a linear regression model?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "abe5c34d-9f95-49bb-b9bb-0f1c0745a7f1", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "7870bbb9-e5cd-4fcc-bb2d-d33e80b2c8d2", + "metadata": {}, + "source": [ + "4. The goal of the following exercises is to understand the relation between the variable *’mpg’* and *’horsepower’*:\n", + " - Provide a histogram of *’mpg’* using the function `hist()`. Hint: For creating plots and visualizations, the `matplotlib` package is a common choice.\n", + " - Compute the pearson correlation between *’mpg’* and *’horsepower’*. For this, first select the two respective columns using `Auto[\"mpg\",\"horsepower\"]` and then use the function `corr()`. Is there a positive or negative relationship between the two variables?\n", + " - Provide a plot with *’horsepower’* on the x-axis and *’mpg’* on the y-axis. Do you think a linear regression model is well suited to predict *’mpg’* using *’horsepower’* ?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4934957d-d920-4191-aa41-71fbadbe4b62", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "raw", + "id": "b7289365-b358-470b-b10a-f5ba082a8ab2", + "metadata": { + "tags": [] + }, + "source": [ + "\\newpage" + ] + }, + { + "cell_type": "markdown", + "id": "02902876-5944-4612-973d-512bbb27fd4e", + "metadata": {}, + "source": [ + "## Task 3: Working with external data\n", + "\n", + "1. Load the dataset `’return_data.csv’` which contains historical returns of Apple (*’ret_apple’*), the index return of the *S\\&P500* which is a broad portfolio of stocks in the US (*’ret_index’*), as well as the return of a riskless investment in government bonds (*’rf’*). Make sure that you set the right working director when you try to load in the data. In the dataset, a number of $0.1$ corresponds to a return of $10\\%$." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "db6354dd-52e3-462a-bac3-d4cc08d541ca", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "039801c1-3a1d-4870-94ba-662f23f762fe", + "metadata": {}, + "source": [ + "2. To get to know the data, construct three plots each having the date on the x-axis and the respective return time series on the y-axis." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f0f01a54-1571-409f-bf7b-080f749f874c", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "7b3745c5-4b7b-4118-abec-6d2b87af06d0", + "metadata": {}, + "source": [ + "3. Compute the means and the standard deviations of the three time series and interpret the results." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "36dde5ec-bc8c-4280-8385-420a06b97d1f", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "c91066a0-28a6-45fe-b036-03fdd2c79362", + "metadata": {}, + "source": [ + "4. What was the maximum loss in a single month when holding Apple stocks? What are the maximum losses for the *S\\&P500* and the risk-free rate? Interpret." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4c4ba196-b0d3-4841-95f9-995f4e127c33", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "30404916-65d2-40e3-be36-b0edb762db49", + "metadata": {}, + "source": [ + "5. Compute the pearson correlation between *’ret_apple’* and *’ret_index’* using the function `cor()`. Interpret the result." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5b0de57e-72cb-46cf-99cf-dd348f59ba55", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "date": " ", + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.11.8" + }, + "title": " ", + "toc-autonumbering": false, + "toc-showcode": false, + "toc-showmarkdowntxt": false, + "toc-showtags": false + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Machine Learning for Economics and Finance/python-exercises/python-exercises.pdf b/Machine Learning for Economics and Finance/python-exercises/python-exercises.pdf new file mode 100755 index 0000000..c1893b3 Binary files /dev/null and b/Machine Learning for Economics and Finance/python-exercises/python-exercises.pdf differ diff --git a/Machine Learning for Economics and Finance/python-exercises/python-exercises_solution.ipynb b/Machine Learning for Economics and Finance/python-exercises/python-exercises_solution.ipynb new file mode 100755 index 0000000..f5a1e16 --- /dev/null +++ b/Machine Learning for Economics and Finance/python-exercises/python-exercises_solution.ipynb @@ -0,0 +1,1001 @@ +{ + "cells": [ + { + "cell_type": "raw", + "id": "6cbef61b-0897-42bf-b456-c0a409b87c41", + "metadata": {}, + "source": [ + "\\vspace{-4cm}\n", + "\\begin{center}\n", + " \\LARGE{Machine Learning for Economics and Finance}\\\\[0.5cm]\n", + " \\Large{\\textbf{Python Exercises}}\\\\[1.0cm]\n", + " \\large{Ole Wilms}\\\\[0.5cm]\n", + " \\large{April 24, 2024}\\\\\n", + "\\end{center}" + ] + }, + { + "cell_type": "raw", + "id": "13be77f3-44f0-4983-b4cb-bd3e4b5dba8b", + "metadata": {}, + "source": [ + "\\setcounter{secnumdepth}{0}" + ] + }, + { + "cell_type": "raw", + "id": "a4c564a3-8712-4601-84b4-72b51df8bbbf", + "metadata": {}, + "source": [ + "\\tableofcontents" + ] + }, + { + "cell_type": "markdown", + "id": "040dc2a4-910e-4cf5-9d1e-62fe7d0a8efd", + "metadata": {}, + "source": [ + "## Important Instructions\n", + " - The purpose of these exercises is to get to know Python by solving some basic programming exercises\n", + " - In case you struggle with some problems, please post your questions on the OpenOlat Forum.\n", + " - Particularly difficult questions are marked by $\\color{red}{\\text{(D)}}$. Don’t worry if you cannot solve these questions right away. Throughout the course, these programming concepts will become easier to understand.\n", + " - Sample solutions to the exercises will be provided next week. However, I strongly encourage all students to work on the exercises beforehand." + ] + }, + { + "cell_type": "raw", + "id": "d1a6cda1-d74f-4a81-8c17-cdd83a0dae17", + "metadata": {}, + "source": [ + "\\newpage" + ] + }, + { + "cell_type": "markdown", + "id": "87902d82-5336-456b-bec8-403530c75f00", + "metadata": { + "tags": [] + }, + "source": [ + "## Task 1: Constructing a dataset\n", + "\n", + "1. Create different kinds of vectors with $6$ entries each:\n", + " - vector $a$: a vector with only ones (hint: you can use the `np.repeat()` function)\n", + " - vector $b$: a vector of integers that goes from $1$ to $6$ (hint: you can use the `np.arange()` function)\n", + " - vector $c$: a vector where each entry is drawn from a normal distribution with mean $2$ standard deviation $5$.\n", + " - vector $d$: a vector where each entry consists of one of the words in \"*Machine Learning for Economics and Finance*\"." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "c70000b1-141e-411c-b3db-f0e1cf4347bc", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "n = 6\n", + "a = np.repeat(1, 6)\n", + "b = np.arange(1, n+1)\n", + "c = np.random.normal(2, 5, size=6)\n", + "d = [\"Machine\", \"Learning\", \"for\", \"Economics\", \"and\", \"Finance\"]" + ] + }, + { + "cell_type": "markdown", + "id": "73330b81-0e43-43ac-911f-4086a9f9788f", + "metadata": {}, + "source": [ + "2. Stack vector $b$ into a matrix $M1$ of dimension $2$ x $3$ where you fill in by column. Stack the same vector into a matrix $M2$ of dimension $3$ x $2$ where you fill in by row." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "fb48e266-0ede-44a9-a2b0-8240532cdcb6", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "M1 = np.reshape(b, (2, 3))\n", + "M2 = np.reshape(b, (3, 2))" + ] + }, + { + "cell_type": "markdown", + "id": "80e4160e-374a-43e1-a159-45077703658e", + "metadata": { + "tags": [] + }, + "source": [ + "3. Add the two matrices. You will obtain an error message. What’s going wrong? Solve the problem using the transpose function `np.transpose()`." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "79739200-7176-437f-bae3-c0a20cc92592", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 2 6]\n", + " [ 5 9]\n", + " [ 8 12]]\n" + ] + } + ], + "source": [ + "#result = M1 + M2 # Both matrices have different dimensions,\n", + "result = np.transpose(M1) + M2 # so we need to reshape (transpose) them.\n", + "print(result)" + ] + }, + { + "cell_type": "markdown", + "id": "03d19235-25ee-4c3b-b7bf-97cdf27d41b2", + "metadata": {}, + "source": [ + "4. Create a vector *train_sample* with $4$ entries by randomly sampling $4$ values from vector $b$ without replacement (that is, you cannot draw the same number twice). For this you can use the function `np.random.choice()`. Run the code that creates the vector multiple times. Explain what’s happening. Fix the issue by using the function `np.random.seed()`." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "82c763e5-3805-4026-a720-60b08b16ad8e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[5 2 4 3]\n" + ] + } + ], + "source": [ + "# Set the random seed for reproducibility\n", + "np.random.seed(2)\n", + "\n", + "# Randomly sample 4 values from vector b without replacement\n", + "sample_train = np.random.choice(b, size=4, replace=False)\n", + "print(sample_train)" + ] + }, + { + "cell_type": "markdown", + "id": "79732a93-d610-4d49-9bf0-a03b3f4edf22", + "metadata": {}, + "source": [ + "5. Put vectors $a$, $b$, $c$ and $d$ together in a dataframe called *df*." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "6ac3c43b-a83b-4b14-95c7-9a43aabb903b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " a b c d\n", + "0 1 1 8.862468 Machine\n", + "1 1 2 -0.197492 Learning\n", + "2 1 3 -1.343464 for\n", + "3 1 4 -4.886340 Economics\n", + "4 1 5 3.894487 and\n", + "5 1 6 1.273152 Finance\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "# Combine arrays into a DataFrame\n", + "df = pd.DataFrame({'a': a, 'b': b, 'c': c, 'd': d})\n", + "print(df)" + ] + }, + { + "cell_type": "markdown", + "id": "919dde6d-4ff0-481a-a0d8-9413abe8f56a", + "metadata": {}, + "source": [ + "6. Name the columns of *df* *’Ones’*, *’Seq’*, *’Normal’* and *’Coursename’* respectively (hint: you can use the function `pd.DataFrame()`). Provide a summary of the dataframe using the `describe()`function." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "560888ef-cee7-4345-88ac-09bfd29bd4d1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Ones Seq Normal Coursename\n", + "0 1 1 8.862468 Machine\n", + "1 1 2 -0.197492 Learning\n", + "2 1 3 -1.343464 for\n", + "3 1 4 -4.886340 Economics\n", + "4 1 5 3.894487 and\n", + "5 1 6 1.273152 Finance\n" + ] + } + ], + "source": [ + "# Combine arrays into a DataFrame with named columns\n", + "df = pd.DataFrame({'Ones': a, 'Seq': b, 'Normal': c, 'Coursename': d})\n", + "print(df)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "7540a079-49e0-4f0d-8cfb-675a61529428", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Ones Seq Normal\n", + "count 6.0 6.000000 6.000000\n", + "mean 1.0 3.500000 1.267135\n", + "std 0.0 1.870829 4.720545\n", + "min 1.0 1.000000 -4.886340\n", + "25% 1.0 2.250000 -1.056971\n", + "50% 1.0 3.500000 0.537830\n", + "75% 1.0 4.750000 3.239153\n", + "max 1.0 6.000000 8.862468\n" + ] + } + ], + "source": [ + "# Provide a summary of the DataFrame\n", + "summary = df.describe()\n", + "# Alternative: summary = df.describe(include='all')\n", + "# Note: Coursename is a object (string) column\n", + "print(summary) " + ] + }, + { + "cell_type": "markdown", + "id": "ada39fc4-a156-40e6-9281-9754302d2ae7", + "metadata": { + "tags": [] + }, + "source": [ + "7. $\\color{red}{\\text{(D)}}$ Add a column called *’Int’* to the dataframe which checks whether column *’Normal’* is larger than $0$. If that is the case *’Int’* should contain a *TRUE*, if that is not the case *’Int’* should contain a FALSE. Proceed as follows:\n", + " - Create a new column named *'Int'* in the DataFrame, initializing all elements to True. Use a loop to iterate through each row of the DataFrame. For each row, check if the corresponding value in the *'Normal'* column is greater than $0$. If it is, retain the *TRUE* value in the *'Int'* column; otherwise, replace it with *FALSE*.\"" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "6016022a-ae89-4111-9ec5-f8468aba2400", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Ones Seq Normal Coursename Int\n", + "0 1 1 8.862468 Machine True\n", + "1 1 2 -0.197492 Learning False\n", + "2 1 3 -1.343464 for False\n", + "3 1 4 -4.886340 Economics False\n", + "4 1 5 3.894487 and True\n", + "5 1 6 1.273152 Finance True\n" + ] + } + ], + "source": [ + "# Add a column 'Int' to the DataFrame with all elements set to True\n", + "df['Int'] = True\n", + "\n", + "# Write a loop to iterate through each row of the DataFrame\n", + "for index, row in df.iterrows():\n", + " # Check if the value in the 'Normal' column for the current row is \n", + " # larger than 0\n", + " if row['Normal'] > 0:\n", + " # If yes, set the corresponding value in the 'Int' column to True\n", + " df.at[index, 'Int'] = True\n", + " else:\n", + " # If no, set the corresponding value in the 'Int' column to False\n", + " df.at[index, 'Int'] = False\n", + "\n", + "print(df)" + ] + }, + { + "cell_type": "markdown", + "id": "b9f909ae-9a0e-4a69-a5f5-5f1eacb6bc2e", + "metadata": {}, + "source": [ + "8. $\\color{red}{\\text{(D)}}$ Can you think of an easier way to construct the column *’Int’* instead of the loop described above? If yes, add this column and call it *’Int2’*" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "63a9f3b8-b8c3-42a4-8746-940bfe3c451a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Ones Seq Normal Coursename Int Int2\n", + "0 1 1 8.862468 Machine True True\n", + "1 1 2 -0.197492 Learning False False\n", + "2 1 3 -1.343464 for False False\n", + "3 1 4 -4.886340 Economics False False\n", + "4 1 5 3.894487 and True True\n", + "5 1 6 1.273152 Finance True True\n" + ] + } + ], + "source": [ + "# Add a column 'Int2' to the DataFrame based on the condition\n", + "df['Int2'] = df['Normal'] > 0\n", + "print(df)" + ] + }, + { + "cell_type": "markdown", + "id": "20e52fac-725f-4b85-a6dd-6d70ea890928", + "metadata": {}, + "source": [ + "9. $\\color{red}{\\text{(D)}}$ Now we use our vector *train_sample* to construct two distinct datasets from *df*. The numbers in *train_sample* refer to the rows of our dataframe *df* that we want to use for the first dataset while all other rows can be used for the second dataset. Construct a new dataframe called *df_train* that only contains the rows in *train_sample*. Note that you can simply use square brackets to extract rows from a dataframe. Make sure that you extract all columns but only the rows that are in *train_sample*. Your object *df_train* should have $4$ rows and as many columns as *df*." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "dd221bd8-b79d-4bb2-938a-7ba29ddeef98", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Ones Seq Normal Coursename Int Int2\n", + "5 1 6 1.273152 Finance True True\n", + "2 1 3 -1.343464 for False False\n", + "4 1 5 3.894487 and True True\n", + "3 1 4 -4.886340 Economics False False\n" + ] + } + ], + "source": [ + "df_train = df.loc[sample_train]\n", + "print(df_train)" + ] + }, + { + "cell_type": "markdown", + "id": "27a77f7f-437c-4d16-b34d-07dda30e2ac7", + "metadata": {}, + "source": [ + "10. $\\color{red}{\\text{(D)}}$ Construct another dataframe called *df_test* which contains the other two rows of *df* that are not in *df_train*. Note that you can use `~df.index.isin()` to select all rows that are *NOT* in *train_sample*." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "5ab811a2-58b5-472a-821b-c6ece5c3498e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Ones Seq Normal Coursename Int Int2\n", + "0 1 1 8.862468 Machine True True\n", + "1 1 2 -0.197492 Learning False False\n" + ] + } + ], + "source": [ + "df_test = df.loc[~df.index.isin(sample_train)]\n", + "print(df_test)" + ] + }, + { + "cell_type": "raw", + "id": "3ba17c73-a83f-43fa-8f29-3b773e25887b", + "metadata": { + "tags": [] + }, + "source": [ + "\\newpage" + ] + }, + { + "cell_type": "markdown", + "id": "df4f7f10-2779-43ab-a7b0-3bd1b3f15b0c", + "metadata": {}, + "source": [ + "## Task 2: Working data from the *ISLR2* library\n", + "\n", + "1. Install and load the library *ISLP*." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "886c7cee-2850-4f96-a6ec-74cea1e79ba8", + "metadata": {}, + "outputs": [], + "source": [ + "# Note: There are different options based on your OS!\n", + "# https://islp.readthedocs.io/en/latest/installation.html\n", + "\n", + "#pip install ISLP" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "0fcb50e3-3e49-4ec3-b94a-b727bbede4c2", + "metadata": {}, + "outputs": [], + "source": [ + "import ISLP" + ] + }, + { + "cell_type": "markdown", + "id": "45467793-413b-4441-8c43-3e4a613451c9", + "metadata": {}, + "source": [ + "2. Load the dataset *Auto* and save it into an object called *Auto*. Use the help function to obtain information about the variables in *Auto*." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "a18ccbf9-18ee-4794-872f-822145732f4d", + "metadata": {}, + "outputs": [], + "source": [ + "from ISLP import load_data\n", + "\n", + "# Load the Auto dataset\n", + "Auto = load_data('Auto')\n", + "\n", + "# Obtain information about the variables in Auto\n", + "#help(Auto)" + ] + }, + { + "cell_type": "markdown", + "id": "f3d8420f-8986-4b9e-ac8b-bfd42cd9cd8a", + "metadata": {}, + "source": [ + "3. Provide a summary of *Auto* using the `describe()` function. Do you think all the variables in *Auto* could be readily used for a linear regression model?" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "ad016dfc-06a3-4128-a6ad-439fc10f5c84", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " count mean std min 25% 50% \\\n", + "mpg 392.0 23.445918 7.805007 9.0 17.000 22.75 \n", + "cylinders 392.0 5.471939 1.705783 3.0 4.000 4.00 \n", + "displacement 392.0 194.411990 104.644004 68.0 105.000 151.00 \n", + "horsepower 392.0 104.469388 38.491160 46.0 75.000 93.50 \n", + "weight 392.0 2977.584184 849.402560 1613.0 2225.250 2803.50 \n", + "acceleration 392.0 15.541327 2.758864 8.0 13.775 15.50 \n", + "year 392.0 75.979592 3.683737 70.0 73.000 76.00 \n", + "origin 392.0 1.576531 0.805518 1.0 1.000 1.00 \n", + "\n", + " 75% max \n", + "mpg 29.000 46.6 \n", + "cylinders 8.000 8.0 \n", + "displacement 275.750 455.0 \n", + "horsepower 126.000 230.0 \n", + "weight 3614.750 5140.0 \n", + "acceleration 17.025 24.8 \n", + "year 79.000 82.0 \n", + "origin 2.000 3.0 \n" + ] + } + ], + "source": [ + "# Note: You can transpose '.T' the output to optain a horizontal output.\n", + "print(Auto.describe().T)" + ] + }, + { + "cell_type": "markdown", + "id": "7870bbb9-e5cd-4fcc-bb2d-d33e80b2c8d2", + "metadata": {}, + "source": [ + "4. The goal of the following exercises is to understand the relation between the variable *’mpg’* and *’horsepower’*:\n", + " - Provide a histogram of *’mpg’* using the function `hist()`. Hint: For creating plots and visualizations, the `matplotlib` package is a common choice.\n", + " - Compute the pearson correlation between *’mpg’* and *’horsepower’*. For this, first select the two respective columns using `Auto[\"mpg\",\"horsepower\"]` and then use the function `corr()`. Is there a positive or negative relationship between the two variables?\n", + " - Provide a plot with *’horsepower’* on the x-axis and *’mpg’* on the y-axis. Do you think a linear regression model is well suited to predict *’mpg’* using *’horsepower’* ?" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "2f762fc4-67f2-403f-b205-35b7ba15b4be", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "# Histogram of 'mpg'\n", + "plt.figure(figsize=(6, 4))\n", + "plt.hist(Auto['mpg'], bins=20, color='lightgray', edgecolor='black')\n", + "plt.xlabel('mpg')\n", + "plt.ylabel('Frequency')\n", + "plt.title('Histogram of mpg')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "56b4720d-8f63-47f9-9e35-b08c8a06abc1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Pearson correlation between mpg and horsepower: -0.7784267838977761\n", + "Pearson correlation between mpg and horsepower: -0.778\n" + ] + } + ], + "source": [ + "# Pearson correlation between 'mpg' and 'horsepower'\n", + "pearson_corr = Auto[['mpg', 'horsepower']].corr().loc['mpg', 'horsepower']\n", + "\n", + "print(f\"Pearson correlation between mpg and horsepower: {pearson_corr}\")\n", + "print(f\"Pearson correlation between mpg and horsepower: {pearson_corr:.3f}\")\n", + "# Note: The f prefix before the string indicates that it's an f-string.\n", + "# Inside the string, you can embed Python expressions by enclosing them \n", + "# in curly braces {}.\n", + "# Inside the expression you can call a variable and formats the value as \n", + "# a floating-point number with e.g. 3 decimal places.\n", + "\n", + "# So, in the given example:\n", + "# {pearson_corr} embeds the value of the variable pearson_corr into the string.\n", + "# :.3f formats the embedded value as a floating-point number with 3 decimal places." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "60e9f6ba-3132-4662-a659-e893ad02b94f", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Plot of 'horsepower' vs 'mpg'\n", + "plt.figure(figsize=(6, 4))\n", + "plt.scatter(Auto['horsepower'], Auto['mpg'], color='gray')\n", + "plt.xlabel('horsepower')\n", + "plt.ylabel('mpg')\n", + "plt.title('Scatter Plot of horsepower vs mpg')\n", + "plt.show()" + ] + }, + { + "cell_type": "raw", + "id": "b7289365-b358-470b-b10a-f5ba082a8ab2", + "metadata": { + "tags": [] + }, + "source": [ + "\\newpage" + ] + }, + { + "cell_type": "markdown", + "id": "02902876-5944-4612-973d-512bbb27fd4e", + "metadata": {}, + "source": [ + "## Task 3: Working with external data\n", + "\n", + "1. Load the dataset `’return_data.csv’` which contains historical returns of Apple (*’ret_apple’*), the index return of the *S\\&P500* which is a broad portfolio of stocks in the US (*’ret_index’*), as well as the return of a riskless investment in government bonds (*’rf’*). Make sure that you set the right working director when you try to load in the data. In the dataset, a number of $0.1$ corresponds to a return of $10\\%$." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "674ef366-5a54-4a48-81bc-62fdbcb19258", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "# Get the directory of the current Jupyter notebook file\n", + "notebook_dir = os.path.dirname(os.path.abspath('__file__'))\n", + "\n", + "# Set the working directory to the directory of the Jupyter notebook file\n", + "os.chdir(notebook_dir)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "18c5820a-0271-4053-a7d5-3f7f16e610a6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
dateret_appleret_indexrf
019810130-0.170018-0.0400870.0104
119810227-0.0616740.0155210.0107
219810331-0.0751170.0461840.0121
3198104300.157360-0.0112680.0108
4198105290.1644740.0135500.0115
\n", + "
" + ], + "text/plain": [ + " date ret_apple ret_index rf\n", + "0 19810130 -0.170018 -0.040087 0.0104\n", + "1 19810227 -0.061674 0.015521 0.0107\n", + "2 19810331 -0.075117 0.046184 0.0121\n", + "3 19810430 0.157360 -0.011268 0.0108\n", + "4 19810529 0.164474 0.013550 0.0115" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Load the dataset\n", + "df = pd.read_csv('return_data.csv')\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "id": "039801c1-3a1d-4870-94ba-662f23f762fe", + "metadata": {}, + "source": [ + "2. To get to know the data, construct three plots each having the date on the x-axis and the respective return time series on the y-axis." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "c5a2dd6b-9589-446e-bcda-442e28122b8c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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z55873vf47LLLgPgueee47nnnqNfv37079+fmTNnMnv27Mh188rocfTRRwMwYMAAPvnkEwD22Wcffvvb33LjjTdSV1dHs2b508tNwzcMo2h4Al813nIYwQRp4oVg6dKlTJgwgffffx8RYcOGDYgI11xzDdDYQz2dx3rydlVl9913Z9KkSYFl+M1vfsPvfvc7nnjiCU466STmzp2LqnLhhRdyxhlnNEjrCWmPZs2afTfMADSaPrfJJps0+N+yZUsAmjZtyvr16wGn+Q8fPpzx48ez11578cILL7DLLrsEljsMpuEbhlE0TMM3MvHYY49x0kkn8emnn/LJJ58wf/58evTo8Z3GPnnyZD7++GM2btzII488wr777gvAxo0bv/PGf+ihh77b7tGzZ0++/PLL7wT+unXrmD59esayHH300QwcOJAxY8ZwyCGHcPfdd7Ny5UoAPvvsMxYvXky7du0ajLF369aNDz74gG+//Zbly5fz4osvRr4Gc+fOpXfv3px//vkMHDgw55kKfmIV+CIyTERmicgcEbkgQ7o9RGSDiBxTzPIZhpFfTOAbmRg7dixHHXVUg20//OEPeeihhwAYNGgQF1xwAb169aJHjx7fpd1kk02YPn06AwYMYMKECVxyySUN8mjRogWPPfYY559/Pn379qWmpobXXnstsDyXXHIJ1113HQcffDDHHXccgwYNonfv3hxzzDGsWLGCDh06sM8++9CrVy/OO+88tt12W370ox/Rp08fjj/+ePr16xf5Gtxwww306tWLvn370rp1aw499NDIeaRDNCbbmog0BT4EhgALgDeBUar6QYp0zwNrgLtVNXBS5cCBA3XKlCn5L7RhGDlx2mkwejSccQbcfnvcpTGSmTFjBrvuumvcxUhJbW0t1157Lc8880yjfW3btv1O+64GUt0nEZmqqgMzHRenhr8nMEdVP1LVtcDDwBEp0p0NPA4sLmbhDMPIPzaGbxjxEafA3waY7/u/ILHtO0RkG+AowHQBw6gAzKRvZMvgwYNTavdAVWn3uRCnl34q98rkfv8NwPmquiEofrCInA6cDtCpU6fA+ZCGUa2MG9eFLl1W079/XdHP/emnewGtWLhwIbW1Hxb9/EZm2rdvn9dAL0ZhWLNmTVYyLk6BvwDY1ve/K7AwKc1A4OGEsN8SOExE1qvqv5MzU9U7gTvBjeEPHjy4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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Plot for Apple returns\n", + "plt.figure(figsize=(8, 4))\n", + "plt.plot(df['date'], df['ret_apple'], color='blue', label='Apple Returns')\n", + "plt.xlabel('Date')\n", + "plt.ylabel('Return')\n", + "plt.title('Apple Returns Over Time')\n", + "plt.xticks(rotation=45)\n", + "plt.legend()\n", + "plt.grid(axis='y')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "428d77c6-c60b-41d2-8b9a-f5e76cd40551", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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RnZ2NrVq1aJcuXIA1KpViwYNGgCQlpbGjh07yM3NpWLFitStWzdgPf3792fdunW22/3iiy+4+uqrERF69erF/v37yc7OZv78+bRs2ZLmzZuTlpbGZZddxhdfBI8Lz8jI4J577qFHjx60bt2a2bNnA3D06FEuu+wyOnbsyKWXXsrRo0c9+0ydOpXevXvTpUsXLrnkEnJycti8eTOtWrVi9+7dFBQU0K9fP6ZOnRq07d69e7N161YAdu3axUUXXUT37t3p3r07c+bMYdOmTYwfP57nn3+eTp06MXv2bEaPHs3kyZM9dVSqVAmwlIYzzzyTyy+/nA4dOjBz5kwyMjK4+OKLadu2LVdccQXGGADuvfde2rVrR8eOHfnb3/5m+7jbIVZJhxRFURTg9u9uJ3N7ZkTr7FSvEy+c9ULA7UOHDuWRRx6hdevWDB48mEsvvZQBAwYAVnK2gwcPMnr0aD744IOggWlff/01HTp08Lvt/vvv55FHHmHQoEE8+eSTlCtXjq1bt3osEACNGjVi69atfn93uy2CkZeXx/z585kyZQrjxo1j2rRpvPbaa1SsWJGlS5eydOlSunTpAsDu3bt57LHHmDZtGunp6Tz11FM899xzPPjgg9xzzz2MHTuWnj170q5dO4YOHRq03e+++47zzz8fgNtuu4077riDM844gz/++INhw4axatUqxo4dS6VKlTwP7bfeeitgffPnz2f58uU0a9aMmTNnsmTJElasWEGDBg3o27cvc+bMoV27dnz++ef8/vvviAj79+8PeXycoJYBRVGUBKNSpUosWrSICRMmULt2bS699FImTpwIwMUXX8z06dOpWLEid9xxBwA33ngj33zzjWf/M888k06dOnHw4EHuu+++IvX/3//9H7///jsLFixg7969PPXUUwCeN1xvRCTg76G48MILAejatSubNm0CYNasWVx55ZUAdOzYkY4dOwIwb948Vq5cSd++fenUqRPvvPOOx+//l7/8hUOHDjF+/PigMQlnnnkmderUYdq0aVx++eUATJs2jZtvvplOnTpx7rnncvDgQQ4dOhRSdm969OhRKD9Ajx49aNSoEUlJSXTq1IlNmzZRpUoVypcvz1/+8hf++9//UrFiRUdthEItA4qiKDEk2Bt8NElOTiYjI4OMjAw6dOjAO++8w/Dhw9m9ezdt2rTh9ddf56KLLmLcuHEsXLiQf/3rX559Z8yYQa1atQLWXb9+fQDKlSvHtdde63nANmrUiC1btnjKZWVl0aBBA06cOOH391C43RzJycnk5eV5fvenSBhjGDJkCB999FGRbUeOHCErKwuAnJwcKleu7Le9GTNmkJ6ezujRo3nwwQd57rnnKCgoYO7cuVSoUCGorCkpKRQUFHhkOXHihGdbenq633559y0lJYX58+czffp0Pv74Y1555RV+/PHHoG06QS0DiqIoCcbq1atZu3at53tmZiZNmjShdu3aGGOYMWMGycnJTJgwgRdffJEuXboUeWAFIzs7G7Aeev/73/9o3749AOeeey7vvvsuxhjmzZtH1apVqV+/Pt27d2ft2rVs3LiREydO8PHHH3PuueeG1bf+/fvzwQcfALB8+XKWLl0KQK9evZgzZ44nxuHIkSOsWbMGgHvuuYcrrriCRx55hL/+9a9B669QoQIvvPAC7777Lnv37mXo0KG88sornu3umROVK1cuZCFo2rQpixYtAqzYidzcXEf9ysnJ4cCBAwwfPpwXXnjB006kUMuAoihKgpGTk8Mtt9zC/v37SUlJoWXLlkyYMAER4bPPPuPWW2/lyJEjVKxYkVdeeYWnn36ayZMnc/HFF9uq/4orrmDXrl0YY+jUqRPjx48HYPjw4UyZMoWWLVtSsWJF3n77bcB6a37llVcYNmwY+fn5XHfddZx22mlh9e2GG27g2muv9UyZ7NGjBwC1a9dm4sSJjBo1iuPHjwPw2GOPkZ2dzYIFC5gzZw7Jycl89tlnvP3221x77bUB26hfvz6jRo3i1Vdf5aWXXuKmm26iY8eO5OXl0b9/f8aPH8/IkSO5+OKL+eKLL3j55Zf561//ynnnnUePHj0YNGiQI+UK4NChQ5x33nkcO3YMYwzPP/98WMcnEOLPV1NW6datm4nEfFPFotqT1Thw/ADmocS5hhQlEqxatYpTTz011mIoZQx/15WILDLGdAu1r1oGlLDZfPtmjucfj7UYiqIoSjFRZUAJm6rlq8ZaBEVRFCUCaAChoihKDEgkF60SfYp7PakyoCiKUsKUL1+ePXv2qEKgRARjDHv27KF8+fJh16FuAkVRlBKmUaNGZGVlsWvXrliLopQRypcvT6NGjcLeX5UBRVGUEiY1NbVQxjlFiTXqJlAURVGUBEeVAUVRFEVJcFQZUBRFUZQEJ6EyEIrILmBziGK1gN0lIE5JUxb7pX2KD8pin6Bs9kv7FB846VMTY0ztUIUSShmwg4gstJO6Md4oi/3SPsUHZbFPUDb7pX2KD6LRJ3UTKIqiKEqCo8qAoiiKoiQ4qgwUZUKsBYgSZbFf2qf4oCz2Ccpmv7RP8UHE+6QxA4qiKIqS4KhlQFEURVESHFUGFEVRFCXBUWVAURRFURIcVQYURYkpIiKxliESiEjFWMsQbfRcxQfhnCcNIExQRKQBcNAYkxNrWZTAlMXzJCK9gXTgsDFmruu3JGNMQWwlCx8ROQvoDLxgjDkaa3kihZ6r+CAS50mXMA6BiAwDzgFWAsuMMT+LiJg41qJEZARwI3AdUCYeMnqe4gPXQPwyMB2oLSJHjTFXGmMK4vUhIyJnA08Ct/k+XOL5GtRzFR9E6jypmyAIItIP6yCvBioC74jIZcYYE6/mMtfN8H/AE8aYHbGWJxLoeYoPRCQJuBKrT2OBq4D6IvIVgGvwiqvzJSKnAq8C440xM0Wkpoi0E5FOAPF4DYqFnqs4IJLnSS0DwWkAfGuMeQVARBYB/3UpkJ/EVjTniEhd4HbgJ2PMHBGpBowCjgDrjDFzYihecdDzFAe4BqbfcL2EGGOOAINEZJqITDTGjI7DN7MUYApgXJacO7EWkKkmIpuNMWPisE/uc5UJiOt7WThXScA3QEFZOVeRvKfUMhCcnYBntSdjzEzgQuAREekVK6HCxfWG+T5wUET+AcwA2rv+xovIwFjKVwz2Yq3iBZSZ8/QxZeQ8iUglr68rgb+LSGuv3y4GKopIh5KVLHxEpDKAMWYZMB5oA7wEfGqMuRQYDTQRkYwYiRg2Xg+P9cDdItLKa3PcnSs3xpgVwNtAa+BF4vhc+QRAriYC50mVAR9EpKuIDBKRFsaYGUANEXnfvd31oHkXaBErGZ3i6tMQEWlmjHkPWAWcCbxljLnJGHM38B5WUE1cICKniEgLAGPMD0AVEfnIvT1Oz9Mp7hvaGPM2sBQYTHyfp3OBt0TkExEZDnwPPAPMFpE2AMaY/UA+UDVmgjrA1ac3RWSSq09bgeeAvxljxgMYY7KBbVj9igtEJMPVNwCMMZ9jPTxnuZW3ODxXvn1aDLwD3BWv58pl1Rjvuv76GmO+BCZSzPOkbgIvROQ8YBywDjgiImOMMWeJyHzXg+ZqY0wuVtTm6cAHMRTXFj59yhGRO4wx74vIcuA3r6JVYiJgGIjIBcA9wF4RWQzMNsaMFJHZcXyevPu0CFhojPnEZQJc7VU0ns5Ta+A14E9AN6A/MBT4B2CAz0XkNaAa0AlrQC7V+OlTP6w+veB6eLrLXYhlydkSCzmdIiKDgc+AAyJSwxgzEcAY87SIFGC53cYD1YmfcxWoT0tFZKVXubg5V2IFCz4DXI/1onCXiPxujHlSRPIpznkyxuifZRVrAMwBTnV9nwxkeG3/FPgI681sJdAu1jKH2af+QHmfcqOAxUCbWMtso0/1gdlYpr4KwN+AucBFru2fYz384+k8+evTHOC6eD1PLnk7Ap94fe8CPIT1Fp2M9RAdC7wOnBZreYvRp3+6+tTI9dtoYCHQPtbyOujXPVizVroCmcBon+3nuM7VhDg6VwH7hBULIcC1wKJ4OFeuseEt4HKv3z7Aski5v48I956KeQdLyx9wCjAPaOY66Guwgk3eA65xlekOjARaxlreYvbpP1hTawAygJ/i6AZ396mJ63t94CvXxd/L9VufOD1Pvn16BTjb9dvgeDpPLpnTXAPtjV6/dQWeBQbGWr4I9+lpd5+wrAUtYi2rw36lAHVcnwe7Hp7XeW0X7//x8BeqT17nLm7OFdAcy/Sf4vr+D+BhP+UcnydNOuSFiIwDzse64d/FGrRGYAWj/cMYU+rNSL4E6dO5wD+NMVkiUtfE0fQ1EXkcqAO8idWXRliKTrox5p+xlC1cgvSpnDFmnKtMHWPMzthJGRoR6QGkYg1GP4uV/+Ey4HtjzMeuMvcCbY0xo2MnqX3KYp+gUL8KjCtRjde2IcC/gPuBPKAeVvBxgSnFDw2HfaprjHm35KV0hqtPacAJY8x8n22XAqcbY/7hcnfkANOw4kAdnaeEDiAUkbNE5B8i8rDLp/QQ1hvlLOALY8wJY/kBa2CZ3Es9DvpUB+uNlNKuCHj16SHXNLu3gE1Y5vTGxpjrXL91FpHysZPUPg761F1E0gHiQBEYBnyJpcy8JyJjgd+xkqGcJSK3uopudZUvFxNBHVAW+wRF+vWBiNzsniEBnqDcq7BmtXwMzDfG5JdyRcBpnxbERFAH+PTpE1efvGfnJANJInIJVl6S9caY8BS2WJs9YmhuyQCWYb0hP4llQjrDtW0MVpBQM2A4MB9rgI653Anep6ewfLF9XdvKc9J8ORprvndarGVOtD5h+V7LYUU0/8n1W2esN5SbsawcA4ElWHErm7HeZmIueyL1KUi/OgE/YCmiFb3KXoYVVFeq424StE/prt+GAbuAmcXtU8w7HcODPQ64z+v7F1h+29Ox3pifdX3/OR5u8gTq05euPnRyfU8CbgKWAx1jLW+i9skl9z3AY0Al1/f2WDkSrnd9T8Wa6lkn1rImcp8C9Os04EfgJtf3JKzAyHiKUUnEPrXCerEodp8S2U2wDSgnVrY3sKK0d2ElENlljLkLK3HDucaY3wLUUdpIhD4twkoGNUFEKhor73YmcLExZmmMZHRKWewTWHkRagItRCTFGLMc6y3m7yLS1RiTa4xZb0q5u8OHstgnKNqvFcDdwJ0i0tlYpuZHXb/HC4nWp07ABqBPJPqUyMrAL1jTgp4Qkc+ALsaYkVhvY4MAjDFZxpi9MZTRKYnSp3OxHpbuPs0xxvweOxEdUxb7hDHmW6wAptuA9iJSyRizCPiOOEno4ktZ7BOE7FepjQsIRgL2SYwVx3EoEm0l1GwCEUk2xuSLWEnrxcpgVx8rmG6KMeaYiLwCTDVWVqdSj/ZJ+xQLRKQlVrKg5caYYz7bngYqA8ew/LN3YcVEbCphMR1RFvsEZbNf2qfI9ykhlAERaW2MWeP6nGyM8avRi8gYrCVjLzLGrC9JGZ2ifdI+xQoROQd4AtgDbAceN8YsF5FUY2V+RETOxErQ0xp41RizMmCFpYCy2Ccom/3SPkWpT8UNOijtf1iZs44AH3r9luxTJgUrCOi/uIK4SvOf9kn7FMM+9cGaWtfZ9f3fwH+8tif59i/WMidin8pqv7RP0etTmY4ZcM3PvhlrOdgT4lpwyFjmWu91GdKN9TZ2hTEms8QFdYD2SftUCnjSGLPE9fkhrMW8yoFnSdXurjcdiB+/elnsE5TNfmmfokCZVgaMMYexclN/iBUBXN5rUM4DEJHTgatFpJwx5mjMhLWJ9kn7FGN+xbJiICLJWHOhm+BaQElEGgFtsXInYFyvMqWcstgnKJv90j5FqU9lWhkAMMZsM8bkGGN2Y630VME9KItIR6Al1sIjx2MppxO0T/FBGe1TvjHmoOurAPuBvcaYXSJyJXAH8D9jzPZYyeiUstgnKJv90j5Fj4QIIPRGRGph5afug6UM9TfWetZxi/YpPiiLfQIQkYlANtYqhNea+MqN4Jey2Ccom/3SPkWGlNBFyhbGmN0ishQ4GxhSFgZj7VN8UNb6JCKClYGvn+v/IGPM2thKVTzKYp+gbPZL+xRZEk4ZEJHqWLn5hxpjlsVankigfYoPylqfXL7LEyLyKLAg3gdiKJt9grLZL+1TZEk4NwGAiJQ3Pkkd4h3tU3xQRvskcRKoZZuy2Ccom/3SPkWozTJ2DBVFURRFcUiZn02gKIqiKEpwVBlQFEVRlARHlQFFURRFKYWIyH9EZKeILLdR9nkRyXT9rRGR/Y7a0pgBRVHCQUTygWVYU6DygHeAF4wxBUH2aYq1/vqHJSKkosQxItIfawnjd40x7R3sdwvWWgfX2d1HLQOKooTLUWNMJ2PMacAQrGmTD4XYpylwebQFU5SygDFmFrDX+zcRaSEi34nIIhGZLSJt/ew6CvjISVuqDCiKUmyMMTuBMcDNYtHUNVAtdv31cRV9EujnMmXeISLJIvIvEVkgIktF5PrY9UJR4oIJwC3GmK5Y657823ujiDQBmgE/Oqk04ZIOKYoSHYwxG0QkCagD7MTKsnhMRFphvaV0A+4F/maMOQdARMYAB4wx3V2rtM0RkanGmI0x6oailFpEpBJWOvNPrWSFgLWwkTeXAZONMY5WN1RlQFGUSOIeoVKBV0SkE9aSq60DlB8KdBSRi13fqwKtAFUGFKUoScB+Y0ynIGUuA25yWrEqA4qiRAQRaY714N+JFTuwAzgdawALlHVRsEye35eIkIoSxxhjDorIRhG5xBjzqWstg47GmN8ARKQNUB2Y67RujRlQFKXYiEhtYDzwiiuNalUg2zWz4Cog2VX0EFDZa9fvgRtEJNVVT2sRSS85yRWl9CIiH2E92NuISJaI/Bm4AviziPwGrADO89plFPBxOKmMdWqhoihh4Wdq4XvAc8aYAlecwGfAEWAG1tt/JddD/zugFjAReBF4DBiJZSXYBZxvjDlQwt1RlIRGlQFFURRFSXDUTaAoiqIoCY4qA4qiKIqS4KgyoCiKoigJjioDiqIoipLgqDKgKIqiKAmOKgOKoiiKkuCoMqAoiqIoCY4qA4qiKIqS4Pw/9waTfLMifSkAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Plot for S&P 500 index returns\n", + "plt.figure(figsize=(8, 4))\n", + "plt.plot(df['date'], df['ret_index'], color='green', label='S&P 500 Index Returns')\n", + "plt.xlabel('Date')\n", + "plt.ylabel('Return')\n", + "plt.title('S&P 500 Index Returns Over Time')\n", + "plt.xticks(rotation=45)\n", + "plt.legend()\n", + "plt.grid(axis='y')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "bb85d1d5-bc44-45d5-8b89-d5178a543081", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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nj07YfqaBAGZyGdNKQgQEZGs23nnnZk7dy6w7p3+1KlT2XHHHenduze9evVi+vTp6+w3c+ZM+vTpw/vvv5/SecrKyrjwwgvZc889ufnmm5k0aRJ77rknffv2Zf/992f+/NAB7YsvvmDgwIH07duX3Xffnc8++yzhcTfddFO23nrrX/Z/6KGHfsn3qaeeytq1azn//PNZvnw5vXv35phjjlmvRuP666/nkksuqTKfZWVljBgxgh133JGuXbvy5ptvpvT91FZWGwaKiEge+MMfYPLkzB6zd2+46aaUkq5du5ZXXnmFU6qoQR01ahS///3vOeaYY1i1ahVr167lm2++AWDatGkcddRR3HvvvfTu3bvKY5933nlcfvnlADz44IMALF68mNdff53Vq1ez55578swzz7DZZpsxevRoLrroIu655x6GDRvGqFGjKC0t5d133+X000/n1VdfrbYMX3/9NStWrKBXr158+umnjB49mvHjx9OoUSNOP/10Hn74Ya6++mpuvfVWJkff9Zdffpnwe4nlE+DZZ59lzZo1vPfee4wdO5ZLL72U//73v1V+P5mkIEBERLIidlf85Zdf0rdvXwYMGLBemp133pkrrriCOXPmcNhhh1FaWgrAt99+y5AhQ3jyySfp0aNHtee47rrr1mtfcOSRRwIhiPj4449/Oe/atWtp164dP/30E2+//TaHH374L/usXLmyyuOPHj2a1157jWnTpnHnnXfStGlTXnnlFSZNmsQOO+zwSznbtGlT5f6JxPIZc9hhhwHQt2/fXwKI6r6fTFEQICJS7FK8Y8+0WJuAH3/8kcGDBzNy5Mj1ntsfffTR7LTTTjz//PPsv//+3HXXXXTp0oUWLVrQsWNHxo8f/0sQcNJJJ/G///2P9u3bM3bs2KpOCUDz5s2B0I++R48eTJgwYZ3tS5YsoWXLlr/csSdy5JFHcuuttzJhwgQOPPBABg0ahLtzwgkncNVVVyXct2HDhpSXl//yufLATbF8xjRp0gQIDSpj7QSq+n723nvvpPlOldoEiIhIVrVo0YJbbrmF66+/ntWrV6+zbebMmXTp0oWzzz6bgw8+mClTpgDQuHFjnn76aR544AEeeeQRAO69914mT56cMACI161bN7799ttfgoDVq1czdepUNt54Yzp37szjjz8OhGDhww8Tz0m38847c9xxx3HzzTez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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Plot for risk-free returns\n", + "plt.figure(figsize=(8, 4))\n", + "plt.plot(df['date'], df['rf'], color='red', label='Risk-Free Returns')\n", + "plt.xlabel('Date')\n", + "plt.ylabel('Return')\n", + "plt.title('Risk-Free Returns Over Time')\n", + "plt.xticks(rotation=45)\n", + "plt.legend()\n", + "plt.grid(axis='y')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "7b3745c5-4b7b-4118-abec-6d2b87af06d0", + "metadata": {}, + "source": [ + "3. Compute the means and the standard deviations of the three time series and interpret the results." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "a2df0652-4f1a-46b2-becf-581c70734b9b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean Returns:\n", + "ret_apple 0.022536\n", + "ret_index 0.009536\n", + "rf 0.003318\n", + "dtype: float64\n", + "\n", + "Standard Deviations:\n", + "ret_apple 0.131109\n", + "ret_index 0.043376\n", + "rf 0.002795\n", + "dtype: float64\n" + ] + } + ], + "source": [ + "# Compute means and standard deviations\n", + "mean_returns = df[['ret_apple', 'ret_index', 'rf']].mean()\n", + "std_returns = df[['ret_apple', 'ret_index', 'rf']].std()\n", + "\n", + "print(\"Mean Returns:\")\n", + "print(mean_returns)\n", + "print(\"\\nStandard Deviations:\")\n", + "print(std_returns)" + ] + }, + { + "cell_type": "markdown", + "id": "c91066a0-28a6-45fe-b036-03fdd2c79362", + "metadata": {}, + "source": [ + "4. What was the maximum loss in a single month when holding Apple stocks? What are the maximum losses for the *S\\&P500* and the risk-free rate? Interpret." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "ff0669f7-d362-41f0-872d-085e17022ef0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Maximum Loss for Apple stocks: -0.577\n", + "Maximum Loss for S&P 500 index: -0.225\n", + "Maximum Loss for Risk-Free rate: 0.000\n" + ] + } + ], + "source": [ + "# Compute maximum losses\n", + "max_loss_apple = df['ret_apple'].min()\n", + "max_loss_sp500 = df['ret_index'].min()\n", + "max_loss_rf = df['rf'].min()\n", + "\n", + "print(f\"Maximum Loss for Apple stocks: {max_loss_apple:.3f}\")\n", + "print(f\"Maximum Loss for S&P 500 index: {max_loss_sp500:.3f}\")\n", + "print(f\"Maximum Loss for Risk-Free rate: {max_loss_rf:.3f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "30404916-65d2-40e3-be36-b0edb762db49", + "metadata": {}, + "source": [ + "5. Compute the pearson correlation between *’ret_apple’* and *’ret_index’* using the function `cor()`. Interpret the result." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "f832d26d-f2b1-4a99-b0a1-b2af7f664fe2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Pearson correlation between ret_apple and ret_index: 0.466\n" + ] + } + ], + "source": [ + "# Compute Pearson correlation between 'ret_apple' and 'ret_index'\n", + "pearson_corr = df['ret_apple'].corr(df['ret_index'])\n", + "\n", + "print(f\"Pearson correlation between ret_apple and ret_index: {pearson_corr:.3f}\")" + ] + } + ], + "metadata": { + "date": " ", + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.11.8" + }, + "title": " ", + "toc-autonumbering": false, + "toc-showcode": false, + "toc-showmarkdowntxt": false, + "toc-showtags": false + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Machine Learning for Economics and Finance/python-exercises/python-exercises_solution.pdf b/Machine Learning for Economics and Finance/python-exercises/python-exercises_solution.pdf new file mode 100755 index 0000000..f33583a Binary files /dev/null and b/Machine Learning for Economics and Finance/python-exercises/python-exercises_solution.pdf differ diff --git a/Machine Learning for Economics and Finance/python-exercises/randomly_split_train_test_NOTE.txt b/Machine Learning for Economics and Finance/python-exercises/randomly_split_train_test_NOTE.txt new file mode 100755 index 0000000..ce42af9 --- /dev/null +++ b/Machine Learning for Economics and Finance/python-exercises/randomly_split_train_test_NOTE.txt @@ -0,0 +1,21 @@ +import numpy as np + +# set seed +np.random.seed(1) + +# Number of observations in the dataset +n = len(default_data) + +# Randomly shuffle the indices of the dataset +indices = np.random.permutation(n) + +# Compute training and validation sample sizes +nT = int(0.7 * n) # Training sample size + +# Split the dataset based on shuffled indices +n_train = indices[:nT] # First 70% for training +n_test = indices[nT:] # Remaining 30% for validation + +# Create training and validation datasets +train_data = default_data.iloc[n_train] +test_data = default_data.iloc[n_test]