{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Yearly Global Average CO2 Concentrations in parts per million (ppm) and Linear Regression\n", "\n", "AIM: To practice Linear Regression using Python code.\n", "DATA: The dataset includes monthly mean carbon dioxide globally averaged over marine surface sites for the span 1980-2020. \n", "\n", "Data Source: National Oceanic and Atmospheric Administration (NOAA)\n", "https://gml.noaa.gov/ccgg/trends/global.html\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "#Import necessary librarires of Python\n", "\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import math\n", "from sklearn import metrics\n", "import math\n", "import sklearn\n", "import statistics" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Yearly Global Average CO2 Concentrations in parts per million (ppm) and Linear Regression\n" ] } ], "source": [ "print(\"Yearly Global Average CO2 Concentrations in parts per million (ppm) and Linear Regression\")" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " year average_co2_concentrations\n", "0 1980 338.911667\n", "1 1981 340.105000\n", "2 1982 340.856667\n", "3 1983 342.530833\n", "4 1984 344.074167\n", "5 1985 345.544167\n", "6 1986 346.965833\n", "7 1987 348.674167\n", "8 1988 351.159167\n", "9 1989 352.782500\n", "(42, 2)\n", "['year' 'average_co2_concentrations']\n", "\n", "RangeIndex: 42 entries, 0 to 41\n", "Data columns (total 2 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 year 42 non-null int64 \n", " 1 average_co2_concentrations 42 non-null float64\n", "dtypes: float64(1), int64(1)\n", "memory usage: 800.0 bytes\n" ] } ], "source": [ "#Read the Dataset\n", "df=pd.read_csv('global-atm-co2.csv')\n", "\n", "#Know the basics of the dataset\n", "print (df.head(10)) # display first 10 entries\n", "print(df.shape) # display the dimensions of the dataset (rows and columns)\n", "print(df.columns.values) #display columns names\n", "df.info() # display data types and memory usage" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#Scatter plot : Plot the scatter plot of yearly average_co2_concentrations variable \n", "\n", "df.plot.scatter(x=\"year\",y=\"average_co2_concentrations\")\n", "plt.xlabel('Year') \n", "plt.ylabel('Global Average CO2 Concentrations (ppm)') \n", "plt.title ('Yearly Global Average CO2 Concentrations in parts per million (ppm)')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Linear Regression\n", "Let us try to fit a Line to the data. \n", "Equation of a line is y = b0 + b1*x, where b0 is Y-intercept and b1 is the slope." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# Use NumPy library to convert the DataFrame to NumPy Array which would be used in the further steps. \n", "x=[]\n", "y=[]\n", "x=df['year'].to_numpy()\n", "y=df['average_co2_concentrations'].to_numpy()\n", "n = np.size(x) # number of observations/points " ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Estimated coefficients of the line y = b0 + b1*x are:\n", "b0 = -3291.4041041406904 \n", "b1 = 1.8315106823366656\n", "RMSE VALUE is 2.1644921537661395\n", "Normalized RMSE VALUE is 0.005810202214397372\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ " # Function: Calculate Regression Coefficients : b0 is Y-intercept and b1 is slope for a Regression Line b0 + b1*x \n", "def estimate_coef(x, y): \n", " \n", " # mean of x and y vector \n", " m_x, m_y = np.mean(x), np.mean(y) \n", " \n", " # calculating cross-deviation and deviation about x \n", " SS_xy = np.sum(y*x) - n*m_y*m_x \n", " SS_xx = np.sum(x*x) - n*m_x*m_x \n", " \n", " \n", " b_1 = SS_xy / SS_xx \n", " b_0 = m_y - b_1*m_x \n", " \n", " return(b_0, b_1) \n", " \n", "# Function: Plot the scatter plot and Regression Line as per the predicted coefficients\n", "def plot_regression_line(x, y, b): \n", " # plotting the actual points as scatter plot \n", " plt.scatter(x, y, color = \"m\", \n", " marker = \"o\", s = 30) \n", " \n", " # predicted response vector \n", " y_pred = b[0] + b[1]*x \n", " \n", " # plot the regression line \n", " plt.plot(x, y_pred, color = \"g\") \n", " \n", " # prepare and render the scatter plot \n", " plt.xlabel('Year') \n", " plt.ylabel('Global Average CO2 Concentrations (ppm)') \n", " plt.title ('Yearly Global Average CO2 Concentrations in parts per million (ppm) and Linear Regression') \n", " plt.show() \n", "\n", "# Function: Calculate RMSE (Root Mean-Squared Error values) \n", "def rmse(b,y):\n", " predict=[]\n", " for i in range(0,n):\n", " predict.append(b[0]+b[1]*x[i])\n", " predict=np.array(predict) \n", " mse = sklearn.metrics.mean_squared_error(y, predict)\n", " root_mse = math.sqrt(mse) # RMSE value\n", " nrmse = root_mse/statistics.mean(y) # Normalized RMSE value\n", " return(root_mse,nrmse)\n", "\n", "# Function: Call the functions in a particular order\n", "def main(x,y): \n", " # Estimate Regression Coefficients \n", " b = estimate_coef(x, y) \n", " print(\"Estimated coefficients of the line y = b0 + b1*x are:\\nb0 = {} \\nb1 = {}\".format(b[0], b[1])) \n", " \n", " # Plot regression line \n", " residual_error = rmse(b,y)\n", " print(\"RMSE VALUE is\",residual_error[0])\n", " print(\"Normalized RMSE VALUE is\",residual_error[1])\n", " plot_regression_line(x, y, b)\n", "\n", "#Call the main function \n", "if __name__ == \"__main__\": \n", " main(x,y)\n", "\n", "#EoF\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Root Mean Square Error,RMSE, is the standard deviation of the residuals (prediction errors).\n", "Residuals are a measure of how far from the regression line data points are.\n", "RMSE is a measure of how spread out these residuals are. It tells us how concentrated the data is around the line of best fit." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 4 }