{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "hovertemplate": "Date=%{x}
#Passengers=%{y}", "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "", "orientation": "v", "showlegend": false, "type": "scatter", "x": [ "1949-01-01T00:00:00", "1949-02-01T00:00:00", "1949-03-01T00:00:00", "1949-04-01T00:00:00", "1949-05-01T00:00:00", "1949-06-01T00:00:00", "1949-07-01T00:00:00", "1949-08-01T00:00:00", "1949-09-01T00:00:00", "1949-10-01T00:00:00", "1949-11-01T00:00:00", "1949-12-01T00:00:00", "1950-01-01T00:00:00", "1950-02-01T00:00:00", "1950-03-01T00:00:00", "1950-04-01T00:00:00", "1950-05-01T00:00:00", "1950-06-01T00:00:00", "1950-07-01T00:00:00", "1950-08-01T00:00:00", "1950-09-01T00:00:00", "1950-10-01T00:00:00", "1950-11-01T00:00:00", "1950-12-01T00:00:00", "1951-01-01T00:00:00", "1951-02-01T00:00:00", "1951-03-01T00:00:00", "1951-04-01T00:00:00", "1951-05-01T00:00:00", "1951-06-01T00:00:00", "1951-07-01T00:00:00", "1951-08-01T00:00:00", "1951-09-01T00:00:00", "1951-10-01T00:00:00", "1951-11-01T00:00:00", "1951-12-01T00:00:00", "1952-01-01T00:00:00", "1952-02-01T00:00:00", "1952-03-01T00:00:00", "1952-04-01T00:00:00", "1952-05-01T00:00:00", "1952-06-01T00:00:00", "1952-07-01T00:00:00", "1952-08-01T00:00:00", "1952-09-01T00:00:00", "1952-10-01T00:00:00", "1952-11-01T00:00:00", "1952-12-01T00:00:00", "1953-01-01T00:00:00", "1953-02-01T00:00:00", "1953-03-01T00:00:00", "1953-04-01T00:00:00", "1953-05-01T00:00:00", "1953-06-01T00:00:00", "1953-07-01T00:00:00", "1953-08-01T00:00:00", "1953-09-01T00:00:00", "1953-10-01T00:00:00", "1953-11-01T00:00:00", "1953-12-01T00:00:00", "1954-01-01T00:00:00", "1954-02-01T00:00:00", "1954-03-01T00:00:00", "1954-04-01T00:00:00", "1954-05-01T00:00:00", "1954-06-01T00:00:00", "1954-07-01T00:00:00", "1954-08-01T00:00:00", "1954-09-01T00:00:00", "1954-10-01T00:00:00", "1954-11-01T00:00:00", "1954-12-01T00:00:00", "1955-01-01T00:00:00", "1955-02-01T00:00:00", "1955-03-01T00:00:00", "1955-04-01T00:00:00", "1955-05-01T00:00:00", "1955-06-01T00:00:00", "1955-07-01T00:00:00", "1955-08-01T00:00:00", "1955-09-01T00:00:00", "1955-10-01T00:00:00", "1955-11-01T00:00:00", "1955-12-01T00:00:00", "1956-01-01T00:00:00", "1956-02-01T00:00:00", "1956-03-01T00:00:00", "1956-04-01T00:00:00", "1956-05-01T00:00:00", "1956-06-01T00:00:00", "1956-07-01T00:00:00", "1956-08-01T00:00:00", "1956-09-01T00:00:00", "1956-10-01T00:00:00", "1956-11-01T00:00:00", "1956-12-01T00:00:00", "1957-01-01T00:00:00", "1957-02-01T00:00:00", "1957-03-01T00:00:00", "1957-04-01T00:00:00", "1957-05-01T00:00:00", "1957-06-01T00:00:00", "1957-07-01T00:00:00", "1957-08-01T00:00:00", "1957-09-01T00:00:00", "1957-10-01T00:00:00", "1957-11-01T00:00:00", "1957-12-01T00:00:00", "1958-01-01T00:00:00", "1958-02-01T00:00:00", "1958-03-01T00:00:00", "1958-04-01T00:00:00", "1958-05-01T00:00:00", "1958-06-01T00:00:00", "1958-07-01T00:00:00", "1958-08-01T00:00:00", "1958-09-01T00:00:00", "1958-10-01T00:00:00", "1958-11-01T00:00:00", "1958-12-01T00:00:00", "1959-01-01T00:00:00", "1959-02-01T00:00:00", "1959-03-01T00:00:00", "1959-04-01T00:00:00", "1959-05-01T00:00:00", "1959-06-01T00:00:00", "1959-07-01T00:00:00", "1959-08-01T00:00:00", "1959-09-01T00:00:00", "1959-10-01T00:00:00", "1959-11-01T00:00:00", "1959-12-01T00:00:00", "1960-01-01T00:00:00", "1960-02-01T00:00:00", "1960-03-01T00:00:00", "1960-04-01T00:00:00", "1960-05-01T00:00:00", "1960-06-01T00:00:00", "1960-07-01T00:00:00", "1960-08-01T00:00:00", "1960-09-01T00:00:00", "1960-10-01T00:00:00", "1960-11-01T00:00:00", "1960-12-01T00:00:00" ], "xaxis": "x", "y": [ 112, 118, 132, 129, 121, 135, 148, 148, 136, 119, 104, 118, 115, 126, 141, 135, 125, 149, 170, 170, 158, 133, 114, 140, 145, 150, 178, 163, 172, 178, 199, 199, 184, 162, 146, 166, 171, 180, 193, 181, 183, 218, 230, 242, 209, 191, 172, 194, 196, 196, 236, 235, 229, 243, 264, 272, 237, 211, 180, 201, 204, 188, 235, 227, 234, 264, 302, 293, 259, 229, 203, 229, 242, 233, 267, 269, 270, 315, 364, 347, 312, 274, 237, 278, 284, 277, 317, 313, 318, 374, 413, 405, 355, 306, 271, 306, 315, 301, 356, 348, 355, 422, 465, 467, 404, 347, 305, 336, 340, 318, 362, 348, 363, 435, 491, 505, 404, 359, 310, 337, 360, 342, 406, 396, 420, 472, 548, 559, 463, 407, 362, 405, 417, 391, 419, 461, 472, 535, 622, 606, 508, 461, 390, 432 ], "yaxis": "y" } ], "layout": { "font": { "size": 18 }, "height": 400, "legend": { "tracegroupgap": 0 }, "margin": { "t": 60 }, "template": { "data": { "bar": [ { "error_x": { "color": "rgb(36,36,36)" }, "error_y": { "color": "rgb(36,36,36)" }, "marker": { "line": { "color": "white", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "white", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "rgb(36,36,36)", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "rgb(36,36,36)" }, "baxis": { "endlinecolor": "rgb(36,36,36)", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "rgb(36,36,36)" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "line": { "color": "white", "width": 0.6 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "rgb(237,237,237)" }, "line": { "color": "white" } }, "header": { "fill": { "color": "rgb(217,217,217)" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "colorscale": { "diverging": [ [ 0, "rgb(103,0,31)" ], [ 0.1, "rgb(178,24,43)" ], [ 0.2, "rgb(214,96,77)" ], [ 0.3, "rgb(244,165,130)" ], [ 0.4, "rgb(253,219,199)" ], [ 0.5, "rgb(247,247,247)" ], [ 0.6, "rgb(209,229,240)" ], [ 0.7, "rgb(146,197,222)" ], [ 0.8, "rgb(67,147,195)" ], [ 0.9, "rgb(33,102,172)" ], [ 1, "rgb(5,48,97)" ] ], "sequential": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "sequentialminus": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ] }, "colorway": [ "#1F77B4", "#FF7F0E", "#2CA02C", "#D62728", "#9467BD", "#8C564B", "#E377C2", "#7F7F7F", "#BCBD22", "#17BECF" ], "font": { "color": "rgb(36,36,36)" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "white", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "white", "polar": { "angularaxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" }, "bgcolor": "white", "radialaxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" } }, "scene": { "xaxis": { "backgroundcolor": "white", "gridcolor": "rgb(232,232,232)", "gridwidth": 2, "linecolor": "rgb(36,36,36)", "showbackground": true, "showgrid": false, "showline": true, "ticks": "outside", "zeroline": false, "zerolinecolor": "rgb(36,36,36)" }, "yaxis": { "backgroundcolor": "white", "gridcolor": "rgb(232,232,232)", "gridwidth": 2, "linecolor": "rgb(36,36,36)", "showbackground": true, "showgrid": false, "showline": true, "ticks": "outside", "zeroline": false, "zerolinecolor": "rgb(36,36,36)" }, "zaxis": { "backgroundcolor": "white", "gridcolor": "rgb(232,232,232)", "gridwidth": 2, "linecolor": "rgb(36,36,36)", "showbackground": true, "showgrid": false, "showline": true, "ticks": "outside", "zeroline": false, "zerolinecolor": "rgb(36,36,36)" } }, "shapedefaults": { "fillcolor": "black", "line": { "width": 0 }, "opacity": 0.3 }, "ternary": { "aaxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" }, "baxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" }, "bgcolor": "white", "caxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside", "title": { "standoff": 15 }, "zeroline": false, "zerolinecolor": "rgb(36,36,36)" }, "yaxis": { "automargin": true, "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside", "title": { "standoff": 15 }, "zeroline": false, "zerolinecolor": "rgb(36,36,36)" } } }, "title": { "text": "Airline Passengers", "x": 0.5 }, "width": 650, "xaxis": { "anchor": "y", "domain": [ 0, 1 ], "title": { "text": "Date" } }, "yaxis": { "anchor": "x", "domain": [ 0, 1 ], "title": { "text": "#Passengers" } } } } }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Import packages\n", "import plotly.express as px\n", "import pandas as pd\n", "\n", "# Read in the data\n", "data = pd.read_csv(\"../coal-price-data/AirPassengers.csv\")\n", "data[\"Month\"] = pd.to_datetime(data[\"Month\"])\n", "\n", "\n", "def plot_passenger_volumes(df: pd.DataFrame, y: str) -> None:\n", " \"\"\"General function to plot the passenger data.\"\"\"\n", "\n", " fig = px.line(df, x=\"Month\", y=y, labels={\"Month\": \"Date\"})\n", " fig.update_layout(\n", " template=\"simple_white\",\n", " font=dict(size=18),\n", " title_text=\"Airline Passengers\",\n", " width=650,\n", " title_x=0.5,\n", " height=400,\n", " )\n", "\n", " return fig.show()\n", "\n", "\n", "# Plot the airline passenger data\n", "plot_passenger_volumes(df=data, y=\"#Passengers\")" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "hovertemplate": "Date=%{x}
Passenger_stationary=%{y}", "legendgroup": "", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "", "orientation": "v", "showlegend": false, "type": "scatter", "x": [ "1949-02-01T00:00:00", "1949-03-01T00:00:00", "1949-04-01T00:00:00", "1949-05-01T00:00:00", "1949-06-01T00:00:00", "1949-07-01T00:00:00", "1949-08-01T00:00:00", "1949-09-01T00:00:00", "1949-10-01T00:00:00", "1949-11-01T00:00:00", "1949-12-01T00:00:00", "1950-01-01T00:00:00", "1950-02-01T00:00:00", "1950-03-01T00:00:00", "1950-04-01T00:00:00", "1950-05-01T00:00:00", "1950-06-01T00:00:00", "1950-07-01T00:00:00", "1950-08-01T00:00:00", "1950-09-01T00:00:00", "1950-10-01T00:00:00", "1950-11-01T00:00:00", "1950-12-01T00:00:00", "1951-01-01T00:00:00", "1951-02-01T00:00:00", "1951-03-01T00:00:00", "1951-04-01T00:00:00", "1951-05-01T00:00:00", "1951-06-01T00:00:00", "1951-07-01T00:00:00", "1951-08-01T00:00:00", "1951-09-01T00:00:00", "1951-10-01T00:00:00", "1951-11-01T00:00:00", "1951-12-01T00:00:00", "1952-01-01T00:00:00", "1952-02-01T00:00:00", "1952-03-01T00:00:00", "1952-04-01T00:00:00", "1952-05-01T00:00:00", "1952-06-01T00:00:00", "1952-07-01T00:00:00", "1952-08-01T00:00:00", "1952-09-01T00:00:00", "1952-10-01T00:00:00", "1952-11-01T00:00:00", "1952-12-01T00:00:00", "1953-01-01T00:00:00", "1953-02-01T00:00:00", "1953-03-01T00:00:00", "1953-04-01T00:00:00", "1953-05-01T00:00:00", "1953-06-01T00:00:00", "1953-07-01T00:00:00", "1953-08-01T00:00:00", "1953-09-01T00:00:00", "1953-10-01T00:00:00", "1953-11-01T00:00:00", "1953-12-01T00:00:00", "1954-01-01T00:00:00", "1954-02-01T00:00:00", "1954-03-01T00:00:00", "1954-04-01T00:00:00", "1954-05-01T00:00:00", "1954-06-01T00:00:00", "1954-07-01T00:00:00", "1954-08-01T00:00:00", "1954-09-01T00:00:00", "1954-10-01T00:00:00", "1954-11-01T00:00:00", "1954-12-01T00:00:00", "1955-01-01T00:00:00", "1955-02-01T00:00:00", "1955-03-01T00:00:00", "1955-04-01T00:00:00", "1955-05-01T00:00:00", "1955-06-01T00:00:00", "1955-07-01T00:00:00", "1955-08-01T00:00:00", "1955-09-01T00:00:00", "1955-10-01T00:00:00", "1955-11-01T00:00:00", "1955-12-01T00:00:00", "1956-01-01T00:00:00", "1956-02-01T00:00:00", "1956-03-01T00:00:00", "1956-04-01T00:00:00", "1956-05-01T00:00:00", "1956-06-01T00:00:00", "1956-07-01T00:00:00", "1956-08-01T00:00:00", "1956-09-01T00:00:00", "1956-10-01T00:00:00", "1956-11-01T00:00:00", "1956-12-01T00:00:00", "1957-01-01T00:00:00", "1957-02-01T00:00:00", "1957-03-01T00:00:00", "1957-04-01T00:00:00", "1957-05-01T00:00:00", "1957-06-01T00:00:00", "1957-07-01T00:00:00", "1957-08-01T00:00:00", "1957-09-01T00:00:00", "1957-10-01T00:00:00", "1957-11-01T00:00:00", "1957-12-01T00:00:00", "1958-01-01T00:00:00", "1958-02-01T00:00:00", "1958-03-01T00:00:00", "1958-04-01T00:00:00", "1958-05-01T00:00:00", "1958-06-01T00:00:00", "1958-07-01T00:00:00", "1958-08-01T00:00:00", "1958-09-01T00:00:00", "1958-10-01T00:00:00", "1958-11-01T00:00:00", "1958-12-01T00:00:00", "1959-01-01T00:00:00", "1959-02-01T00:00:00", "1959-03-01T00:00:00", "1959-04-01T00:00:00", "1959-05-01T00:00:00", "1959-06-01T00:00:00", "1959-07-01T00:00:00", "1959-08-01T00:00:00", "1959-09-01T00:00:00", "1959-10-01T00:00:00", "1959-11-01T00:00:00", "1959-12-01T00:00:00", "1960-01-01T00:00:00", "1960-02-01T00:00:00", "1960-03-01T00:00:00", "1960-04-01T00:00:00", "1960-05-01T00:00:00", "1960-06-01T00:00:00", "1960-07-01T00:00:00", "1960-08-01T00:00:00", "1960-09-01T00:00:00", "1960-10-01T00:00:00", "1960-11-01T00:00:00", "1960-12-01T00:00:00" ], "xaxis": "x", "y": [ 0.10533214877024744, 0.22906917831729068, -0.047280704307330446, -0.13082386685905334, 0.2244784696572797, 0.1913324429929686, 0, -0.17606953125171287, -0.2735963512937918, -0.2706306589852927, 0.2535210217296422, -0.052080738924946246, 0.185642250774678, 0.2320545713706199, -0.09017300641216508, -0.15817470252027732, 0.36362404659302694, 0.27926257936787113, 0, -0.15571743013138484, -0.3598115442486165, -0.3143243495656405, 0.4205154982253667, 0.07311449879639298, 0.07099715810719598, 0.36391158229539755, -0.188336121147743, 0.11468709221932016, 0.07364902892842284, 0.2421364665990824, 0, -0.17057298875044768, -0.27297346147480983, -0.21913424420865013, 0.2710238065188202, 0.06338438514726263, 0.11021587767397456, 0.15118720264894403, -0.13923265287086117, 0.023741252678741276, 0.3833463964775241, 0.11937268018429847, 0.11417936297385545, -0.3268127787652144, -0.19727786068130282, -0.2262324730796399, 0.26018286274048563, 0.022385932803363318, 0, 0.4112830002241523, -0.00953054625462535, -0.05791992274930813, 0.1332174387493641, 0.18805306049600823, 0.06829664799094104, -0.31262047607052956, -0.2588214658406631, -0.3467976616555335, 0.23996485189437688, 0.03251662431449809, -0.17838566247451304, 0.492496565345359, -0.07751400473913783, 0.06794884324150097, 0.27291573799370106, 0.3100506549457691, -0.07029324135127801, -0.2833436251238606, -0.27768428771600284, -0.26698432148460327, 0.26698432148460327, 0.12392178576208934, -0.0851670757121159, 0.3083310570190996, 0.017073224209843474, 0.00849609145271124, 0.3571136051609187, 0.3424315547876091, -0.11409233187894863, -0.2507463315719889, -0.30098798398393356, -0.3294269240795007, 0.36272863459569216, 0.049195088996656366, -0.05748205294056952, 0.3132176216260518, -0.029755029816133316, 0.03714378180547406, 0.38521437134531133, 0.24016571549118915, -0.04763998308596307, -0.3173568106633713, -0.35038693178415414, -0.2808666695637889, 0.2808666695637889, 0.0677776111565791, -0.10616906573167917, 0.3954886943536682, -0.05413870475364746, 0.04742839675923349, 0.4176610075151679, 0.23913519238108982, 0.010656778652791132, -0.3561074128719248, -0.36561566339603857, -0.3037521469252429, 0.22736318524631827, 0.028021026347172295, -0.15774526003649925, 0.307021496892137, -0.09406660056420435, 0.10066635163112991, 0.4388288770686106, 0.30032501725924554, 0.0704972341094372, -0.5515435176320658, -0.28460024135062056, -0.3468020219988137, 0.1964294301331826, 0.15701923626138203, -0.12212466823251944, 0.41208812288981456, -0.06056162282001942, 0.14324733014846025, 0.28788465599652113, 0.3755436623295836, 0.050620876093619316, -0.4739900265962387, -0.3167588371437571, -0.2827032575827477, 0.27071860685840043, 0.07116580223556213, -0.1564997170838538, 0.1681906082213409, 0.23515145686182137, 0.058560825806269534, 0.314590587727519, 0.3861414459257464, -0.06740356208414688, -0.4494756237845703, -0.24241367359081778, -0.4095364409588953, 0.2492375877379338 ], "yaxis": "y" } ], "layout": { "font": { "size": 18 }, "height": 400, "legend": { "tracegroupgap": 0 }, "margin": { "t": 60 }, "template": { "data": { "bar": [ { "error_x": { "color": "rgb(36,36,36)" }, "error_y": { "color": "rgb(36,36,36)" }, "marker": { "line": { "color": "white", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "white", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "rgb(36,36,36)", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "rgb(36,36,36)" }, "baxis": { "endlinecolor": "rgb(36,36,36)", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "rgb(36,36,36)" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "line": { "color": "white", "width": 0.6 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "rgb(237,237,237)" }, "line": { "color": "white" } }, "header": { "fill": { "color": "rgb(217,217,217)" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "colorscale": { "diverging": [ [ 0, "rgb(103,0,31)" ], [ 0.1, "rgb(178,24,43)" ], [ 0.2, "rgb(214,96,77)" ], [ 0.3, "rgb(244,165,130)" ], [ 0.4, "rgb(253,219,199)" ], [ 0.5, "rgb(247,247,247)" ], [ 0.6, "rgb(209,229,240)" ], [ 0.7, "rgb(146,197,222)" ], [ 0.8, "rgb(67,147,195)" ], [ 0.9, "rgb(33,102,172)" ], [ 1, "rgb(5,48,97)" ] ], "sequential": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "sequentialminus": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ] }, "colorway": [ "#1F77B4", "#FF7F0E", "#2CA02C", "#D62728", "#9467BD", "#8C564B", "#E377C2", "#7F7F7F", "#BCBD22", "#17BECF" ], "font": { "color": "rgb(36,36,36)" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "white", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "white", "polar": { "angularaxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" }, "bgcolor": "white", "radialaxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" } }, "scene": { "xaxis": { "backgroundcolor": "white", "gridcolor": "rgb(232,232,232)", "gridwidth": 2, "linecolor": "rgb(36,36,36)", "showbackground": true, "showgrid": false, "showline": true, "ticks": "outside", "zeroline": false, "zerolinecolor": "rgb(36,36,36)" }, "yaxis": { "backgroundcolor": "white", "gridcolor": "rgb(232,232,232)", "gridwidth": 2, "linecolor": "rgb(36,36,36)", "showbackground": true, "showgrid": false, "showline": true, "ticks": "outside", "zeroline": false, "zerolinecolor": "rgb(36,36,36)" }, "zaxis": { "backgroundcolor": "white", "gridcolor": "rgb(232,232,232)", "gridwidth": 2, "linecolor": "rgb(36,36,36)", "showbackground": true, "showgrid": false, "showline": true, "ticks": "outside", "zeroline": false, "zerolinecolor": "rgb(36,36,36)" } }, "shapedefaults": { "fillcolor": "black", "line": { "width": 0 }, "opacity": 0.3 }, "ternary": { "aaxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" }, "baxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" }, "bgcolor": "white", "caxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside", "title": { "standoff": 15 }, "zeroline": false, "zerolinecolor": "rgb(36,36,36)" }, "yaxis": { "automargin": true, "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside", "title": { "standoff": 15 }, "zeroline": false, "zerolinecolor": "rgb(36,36,36)" } } }, "title": { "text": "Airline Passengers", "x": 0.5 }, "width": 650, "xaxis": { "anchor": "y", "domain": [ 0, 1 ], "title": { "text": "Date" } }, "yaxis": { "anchor": "x", "domain": [ 0, 1 ], "title": { "text": "Passenger_stationary" } } } } }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Import packages\n", "from scipy.stats import boxcox\n", "\n", "# Make the target stationary\n", "data[\"Passengers_boxcox\"], lam = boxcox(data[\"#Passengers\"])\n", "data[\"Passenger_stationary\"] = data[\"Passengers_boxcox\"].diff()\n", "data.dropna(inplace=True)\n", "\n", "# Plot the stationary airline passenger data\n", "plot_passenger_volumes(df=data, y=\"Passenger_stationary\")" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ADF Statistic: -2.871707452081052\n", "P-Value: 0.04873834333618049\n", "Critical Values:\n", "\t1%: -3.48\n", "\t5%: -2.88\n", "\t10%: -2.58\n", "None\n" ] } ], "source": [ "# Import packages\n", "from statsmodels.tsa.stattools import adfuller\n", "\n", "\n", "# ADF test for stationary\n", "def adf_test(series):\n", " \"\"\"Using an ADF test to determine if a series is stationary\"\"\"\n", " test_results = adfuller(series)\n", " print(\"ADF Statistic: \", test_results[0])\n", " print(\"P-Value: \", test_results[1])\n", " print(\"Critical Values:\")\n", " for threshold, adf_stat in test_results[4].items():\n", " print(\"\\t%s: %.2f\" % (threshold, adf_stat))\n", "\n", "\n", "print(adf_test(data[\"Passenger_stationary\"]))" ] }, { "cell_type": "code", "execution_count": 7, "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", " \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", "
Month#PassengersPassengers_boxcoxPassenger_stationary
11949-02-011186.9328210.105332
21949-03-011327.1618900.229069
31949-04-011297.114609-0.047281
41949-05-011216.983785-0.130824
51949-06-011357.2082640.224478
...............
1391960-08-0160610.684046-0.067404
1401960-09-0150810.234570-0.449476
1411960-10-014619.992156-0.242414
1421960-11-013909.582620-0.409536
1431960-12-014329.8318580.249238
\n", "

143 rows × 4 columns

\n", "
" ], "text/plain": [ " Month #Passengers Passengers_boxcox Passenger_stationary\n", "1 1949-02-01 118 6.932821 0.105332\n", "2 1949-03-01 132 7.161890 0.229069\n", "3 1949-04-01 129 7.114609 -0.047281\n", "4 1949-05-01 121 6.983785 -0.130824\n", "5 1949-06-01 135 7.208264 0.224478\n", ".. ... ... ... ...\n", "139 1960-08-01 606 10.684046 -0.067404\n", "140 1960-09-01 508 10.234570 -0.449476\n", "141 1960-10-01 461 9.992156 -0.242414\n", "142 1960-11-01 390 9.582620 -0.409536\n", "143 1960-12-01 432 9.831858 0.249238\n", "\n", "[143 rows x 4 columns]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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aw2Nwsfij+2uJo56bjKLBMDVhN1hAAC1XuFaGmXNLNi5c6e2b9/usDGLLkaZm5tb5X4qEvvvv/9u3eXjcjBN03qqRHh4uB599FENGzaszMtjjz0mScrIyCix5WloaKj1uKzkzSeffFJmXBW9jyMjI63HCxYssFlv69at2rt3b4k2kjRo0CDr8T//+c8y4/qj3r17W0/5KGv8I0eOaP369SXaXE6F20Kbpql///vfl2WMijyHv/jii3Jn2RQ+3va8njp27GhN4C1atMjmTKTMzEwtXbpUktSuXbsqrQVTGzjquemIxwYAagqSIACAWq9wF4O4uDj99ttvJcpPnz6t+++/36FjFv3QdPDgwSr3Uxj7gQMH9P3335coz87O1ogRIy7rYpKbNm1ScnKyJOnee++tUJsBAwbI19dXUvFZJNKlRErhdPrZs2eX+sFp6dKliomJKXOMit7HXbp0sc7+eP/99xUbG1uiTnp6usaPHy/p0uk6hUmcQpGRkdbtTv/73/9qyZIlNsdLTU0t9ngEBwfr7rvvliStXr1aixYtKtEmLy9PY8eOtW5v/OSTT9rs35H69eunLl26SJLefPNN6wd/W3bv3m3dIaiiCp/DX375ZamnvBw8eFBPPPFEuf0UPt72vJ48PDz08MMPS7q0M0ppawCZpqknn3zSuhjulXosqoOjnpuFj82pU6fK3PkHAGoDkiAAgFpv9OjRki59E92rVy/997//1ffff6/vv/9eM2fO1A033KC9e/eqa9euDhuzQ4cO1m9HX3zxRa1fv1779+/Xb7/9pt9++63CSYvC5IzFYtHtt9+uV199VZs2bdIPP/ygOXPm6E9/+pM2btyo7t27Oyz2PyqaxBg8eHCF2nh6euq2226TJK1fv77YegJubm7WhENCQoJuueUWffHFF9q5c6fWrFmjhx56SMOHD1e3bt3KHKNo+d/+9jdt2rRJBw4csN7HRXfTef/991WnTh3l5+frtttu06RJk/Tdd98pPj5e77//vm688Ubt3r1bkjRp0qRST3/48MMP5evrK4vFouHDh2vw4MGKiYnRjh079MMPP+jjjz/WAw88oBYtWujkyZPF2v7zn/+0rjEyduxYjRs3Tt9884127Nih6Oho3XTTTdbkzH333aeBAwdW6H52hI8//lj16tVTQUGBhg4dqjvvvFPR0dH64YcftGPHDq1evVqvvvqqunbtqvbt2+u7776rVP+Fr78TJ06oa9euWrBggX744Qdt2rRJUVFR6tixo9LS0spdbLfw8V65cqXee+89JSQkWB/ryuxyM3XqVOvpHFFRUbr33nv19ddf66efftKyZct0yy23WJ/zXbt21SOPPFKp21vbOOK5WfjYWCwWPfroo9q2bZv1sSkt8QwANZoJAEANsGHDBlOSKcl86aWXKt3+wQcftLb/48XV1dX817/+Zb700kvW60pT2fGffvppm2Nu2LDBWq+8cadNm2azH0nmxIkTzQ8++MD6e1JSUok+evXqZUoye/XqVaHYC2VnZ5v+/v6mJLN169aVart06VJrTDNnzixWlpWVZf75z3+2eZt69+5tJiQkWH//4IMPSh3jvvvus9nHH++HtWvXWm+LrcsTTzxhFhQU2LxN8fHxZrNmzcrsw9Zj8NNPP5nBwcFltrvnnnvMCxculDp2ZR7Dyj7e+/btM8PDw8u9XZLMadOmVWq8vLw8s1+/fjb78/LyMpcuXWqOGTPGlGS2aNGi1Bh37txpenh4lNrHmDFjrPWSkpLKfd4kJSWZbdq0KfN2du/e3UxNTS21fXmxFirvdVkRLVq0qNBYthT921n0705R9j43CwoKynw9A0BtwkwQAMBVYcGCBfrwww/Vs2dP+fn5ycPDQy1atND999+v77//Xv/3f//n8DFff/11vf/+++rZs6fq1atX5TUepk6dqq+//lr9+vVTYGCg6tSpo6ZNm+qee+7RunXrNHPmTAdH/j8rVqxQRkaGpIrPAil02223WRfC/OMpMd7e3vr22281ffp0RUREyMvLS/7+/urcubNmz56tb775Rj4+PuWO8dFHH+mNN95Qly5dFBAQUGznmT/q16+ffvvtNz333HP605/+JH9/f3l4eKh58+YaOXKkNm/erNmzZ5fZR8eOHbVv3z795z//0S233KJGjRrJzc1Nvr6+ioiI0COPPKLY2FiFhISUaNuhQwft27dPr732mm666SbVrVtXderUUXBwsO655x6tXLlSy5YtK7bWyZUSFhamn3/+WR9//LEGDx6s5s2by8vLS3Xq1FHjxo3Vu3dvvfDCC9qxY4emTp1aqb7d3d319ddf6z//+Y86deokb29veXl56brrrtOjjz6qn376SUOGDCm3nz/96U/aunWrhg8frubNm8vD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AAAAAHAKJEEAAAAAAIBTIAkCAAAAAACcAkkQAAAAAADgFEiCAAAAAAAAp0ASBAAAOJ2oqCgZhiHDMKo7FAAAcAWRBAEAAAAAAE6BJAgAAAAAAHAKJEEAAAAAAIBTIAkCAABQAWfPntX8+fN13333KSIiQvXq1ZOnp6datGihESNGaNu2beX2sWnTJg0aNEgNGjSQl5eXWrdureeff17nz5/XwoULZRiGQkJCSm27du1a3XPPPWratKnq1Kkjf39/tWzZUv369dPMmTOVlpbm4FsMAMDVhyQIAABABfz73//Www8/rJiYGCUmJlqvP3LkiD755BN169ZN//nPf2y2/+9//6vevXvrq6++Umpqqjw8PJScnKxXX31VXbp00blz52y2ffnllzVgwAB9/vnnOn78uNzd3WWappKSkrR+/XpNnjxZu3btcuTNBQDgqkQSBAAAoAKCg4P10ksvKT4+XtnZ2UpLS9OFCxd06NAh/d///Z8k6e9//7t27txZou3333+vp556SqZp6tZbb9W+fft07tw5ZWVlKSYmRidPntTLL79c6riHDx/WtGnTrP0fP35cWVlZyszM1Llz57R582Y9/vjj8vPzu3w3HgCAq4RbdQcAAABQGzzyyCMlrjMMQ6GhofrXv/6l/Px8vf3223r77bc1b968YvWmTp0qi8Widu3a6csvv5SHh4ckyc3NTffee6/q16+vW265pdRxt2/fLovForCwMM2aNatYWUBAgHr06KEePXo46FYCAHB1YyYIAACAA9x+++2SpLi4uGLXp6Wl6dtvv5UkTZ482ZoAKapPnz7q2bNnqf3WrVtXkpSZmamsrCwHRgwAgPMhCQIAAFBBhw4d0qRJk9SxY0fVrVtXrq6uMgxDhmHotttukyQdO3asWJudO3fKNE1JUq9evWz23bt371Kv79Klixo0aKDff/9dN910k2bPnq1ff/3V2icAAKg4TocBAACogM8//1zDhw9Xbm6u9Tp/f395enrKMAzl5eXp7NmzJWZrnD592nocHBxss/8mTZqUen3dunX1ySefaMSIEdqzZ48mTJgg6dKpMDfffLPuu+8+DR06VO7u7vbcPAAAnAIzQQAAAMqRmpqqBx54QLm5ubrlllu0ceNGZWdnKz09XSdPnlRKSopiYmLK7ccwjCqNHxkZqaSkJC1evFhjxoxRq1atlJ6eri+//FL333+/OnTooOPHj1epbwAAnAlJEAAAgHKsWrVKGRkZCgwM1JdffqlevXrJy8urWJ2UlJRS2zZs2NB6fOLECZtjlJfE8PHx0f3336+FCxdq//79OnbsmGbMmCFPT89iM0QAAIBtJEEAAADKcfToUUlS69at5e3tXWqdb775ptTrO3ToYJ0BsnHjRptjlFVWmiZNmujpp5/WxIkTJUnr16+vVHsAAJwRSRAAAIByBAQESJL279+vnJycEuU///yzPv7441Lb1qtXT3369JEkzZo1S3l5eSXqbNq0SZs3by61fdE1SEpTOCPFxYV/6wAAKA/vlgAAwKmdOXOmzMu5c+fUr18/ubi4KC0tTSNHjrSeupKXl6elS5eqX79+8vPzsznGtGnTZBiGEhISdOedd+rAgQOSpPz8fC1fvlyDBw9WYGBgqW1nzJihgQMH6sMPPyy280xubq6WLl2qN998U9L/tugFAAC2kQQBAABOrWHDhmVeevfurVatWmny5MmSpOXLl6tp06aqW7eufH19NXToUPn6+uo///mPzTF69Oiht976f+3dL0ijcRzH8c/BCW64MC1DEQwyFJZtBpuIYWAQEQwGk0GryLLpMJgEi0GwCLbZTGLSbrTYRIMwELYLx8lduOPKOdjzevXn4fukB978/nxLklxdXaVer6darWZkZCQrKyup1WpptVpJkuHh4d+e7Xa7abfb2djYyOTkZMrlcsbGxlIqlbK6uprX19fMzs5+vB8A+DMRBADgHxwcHOT09DRzc3MplUp5f3/P9PR09vb2cn9//9frb5NkZ2cn19fXWVpaSrVaTafTydTUVPb393N7e5ter5fkx5W4v9ra2srx8XHW1tbSaDRSLpc/Dmmdn5/P4eFh7u7uUqvV/tenA8DA+NL7+ccFAKBv1tfXc3Z2ls3NzZycnPR7HAAYSFaCAAD02cPDQy4uLpIki4uLfZ4GAAaXCAIA8AlarVaOjo7y+PiYbrebJHl7e8v5+XkWFhbS6XQyMzOTZrPZ30EBYIDZDgMA8AmazWYuLy+TJENDQ6lUKnl5efkIIhMTE2m322k0Gv0cEwAG2td+DwAAUAS7u7sZHx/Pzc1Nnp6e8vz8nEqlknq9nuXl5Wxvb2d0dLTfYwLAQLMSBAAAACgEZ4IAAAAAhSCCAAAAAIUgggAAAACFIIIAAAAAhSCCAAAAAIUgggAAAACFIIIAAAAAhSCCAAAAAIUgggAAAACF8B1Rj+hiA40XMQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Import packages\n", "import matplotlib.pyplot as plt\n", "from statsmodels.graphics.tsaplots import plot_pacf\n", "\n", "# Plot partial autocorrelation\n", "plt.rc(\"figure\", figsize=(11, 5))\n", "plot_pacf(data[\"Passenger_stationary\"], method=\"ywm\")\n", "plt.xlabel(\"Lags\", fontsize=18)\n", "plt.ylabel(\"Correlation\", fontsize=18)\n", "plt.xticks(fontsize=18)\n", "plt.yticks(fontsize=18)\n", "plt.title(\"Partial Autocorrelation Plot\", fontsize=20)\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/ibnu/miniconda3/envs/py311-kfp240-airflow251/lib/python3.11/site-packages/statsmodels/tsa/base/tsa_model.py:473: ValueWarning:\n", "\n", "An unsupported index was provided and will be ignored when e.g. forecasting.\n", "\n", "/home/ibnu/miniconda3/envs/py311-kfp240-airflow251/lib/python3.11/site-packages/statsmodels/tsa/base/tsa_model.py:473: ValueWarning:\n", "\n", "An unsupported index was provided and will be ignored when e.g. forecasting.\n", "\n", "/home/ibnu/miniconda3/envs/py311-kfp240-airflow251/lib/python3.11/site-packages/statsmodels/tsa/base/tsa_model.py:473: ValueWarning:\n", "\n", "An unsupported index was provided and will be ignored when e.g. forecasting.\n", "\n" ] } ], "source": [ "# Import packages\n", "from statsmodels.tsa.ar_model import AutoReg, ar_select_order\n", "\n", "# Split train and test\n", "train = data.iloc[: -int(len(data) * 0.2)]\n", "test = data.iloc[-int(len(data) * 0.2) :]\n", "\n", "# Build AR model\n", "selector = ar_select_order(train[\"Passenger_stationary\"], 15)\n", "model = AutoReg(train[\"Passenger_stationary\"], lags=selector.ar_lags).fit()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/ibnu/miniconda3/envs/py311-kfp240-airflow251/lib/python3.11/site-packages/statsmodels/tsa/base/tsa_model.py:836: ValueWarning:\n", "\n", "No supported index is available. Prediction results will be given with an integer index beginning at `start`.\n", "\n", "/home/ibnu/miniconda3/envs/py311-kfp240-airflow251/lib/python3.11/site-packages/statsmodels/tsa/base/tsa_model.py:836: FutureWarning:\n", "\n", "No supported index is available. In the next version, calling this method in a model without a supported index will result in an exception.\n", "\n" ] }, { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "name": "Train", "type": "scatter", "x": [ "1949-02-01T00:00:00", "1949-03-01T00:00:00", "1949-04-01T00:00:00", "1949-05-01T00:00:00", "1949-06-01T00:00:00", "1949-07-01T00:00:00", "1949-08-01T00:00:00", "1949-09-01T00:00:00", "1949-10-01T00:00:00", "1949-11-01T00:00:00", "1949-12-01T00:00:00", "1950-01-01T00:00:00", "1950-02-01T00:00:00", "1950-03-01T00:00:00", "1950-04-01T00:00:00", "1950-05-01T00:00:00", "1950-06-01T00:00:00", "1950-07-01T00:00:00", "1950-08-01T00:00:00", "1950-09-01T00:00:00", "1950-10-01T00:00:00", "1950-11-01T00:00:00", "1950-12-01T00:00:00", "1951-01-01T00:00:00", "1951-02-01T00:00:00", "1951-03-01T00:00:00", "1951-04-01T00:00:00", "1951-05-01T00:00:00", "1951-06-01T00:00:00", "1951-07-01T00:00:00", "1951-08-01T00:00:00", "1951-09-01T00:00:00", "1951-10-01T00:00:00", "1951-11-01T00:00:00", "1951-12-01T00:00:00", "1952-01-01T00:00:00", "1952-02-01T00:00:00", "1952-03-01T00:00:00", "1952-04-01T00:00:00", "1952-05-01T00:00:00", "1952-06-01T00:00:00", "1952-07-01T00:00:00", "1952-08-01T00:00:00", "1952-09-01T00:00:00", "1952-10-01T00:00:00", "1952-11-01T00:00:00", "1952-12-01T00:00:00", "1953-01-01T00:00:00", "1953-02-01T00:00:00", "1953-03-01T00:00:00", "1953-04-01T00:00:00", "1953-05-01T00:00:00", "1953-06-01T00:00:00", "1953-07-01T00:00:00", "1953-08-01T00:00:00", "1953-09-01T00:00:00", "1953-10-01T00:00:00", "1953-11-01T00:00:00", "1953-12-01T00:00:00", "1954-01-01T00:00:00", "1954-02-01T00:00:00", "1954-03-01T00:00:00", "1954-04-01T00:00:00", "1954-05-01T00:00:00", "1954-06-01T00:00:00", "1954-07-01T00:00:00", "1954-08-01T00:00:00", "1954-09-01T00:00:00", "1954-10-01T00:00:00", "1954-11-01T00:00:00", "1954-12-01T00:00:00", "1955-01-01T00:00:00", "1955-02-01T00:00:00", "1955-03-01T00:00:00", "1955-04-01T00:00:00", "1955-05-01T00:00:00", "1955-06-01T00:00:00", "1955-07-01T00:00:00", "1955-08-01T00:00:00", "1955-09-01T00:00:00", "1955-10-01T00:00:00", "1955-11-01T00:00:00", "1955-12-01T00:00:00", "1956-01-01T00:00:00", "1956-02-01T00:00:00", "1956-03-01T00:00:00", "1956-04-01T00:00:00", "1956-05-01T00:00:00", "1956-06-01T00:00:00", "1956-07-01T00:00:00", "1956-08-01T00:00:00", "1956-09-01T00:00:00", "1956-10-01T00:00:00", "1956-11-01T00:00:00", "1956-12-01T00:00:00", "1957-01-01T00:00:00", "1957-02-01T00:00:00", "1957-03-01T00:00:00", "1957-04-01T00:00:00", "1957-05-01T00:00:00", "1957-06-01T00:00:00", "1957-07-01T00:00:00", "1957-08-01T00:00:00", "1957-09-01T00:00:00", "1957-10-01T00:00:00", "1957-11-01T00:00:00", "1957-12-01T00:00:00", "1958-01-01T00:00:00", "1958-02-01T00:00:00", "1958-03-01T00:00:00", "1958-04-01T00:00:00", "1958-05-01T00:00:00", "1958-06-01T00:00:00", "1958-07-01T00:00:00", "1958-08-01T00:00:00" ], "y": [ 118, 132, 129, 121, 135, 148, 148, 136, 119, 104, 118, 115, 126, 141, 135, 125, 149, 170, 170, 158, 133, 114, 140, 145, 150, 178, 163, 172, 178, 199, 199, 184, 162, 146, 166, 171, 180, 193, 181, 183, 218, 230, 242, 209, 191, 172, 194, 196, 196, 236, 235, 229, 243, 264, 272, 237, 211, 180, 201, 204, 188, 235, 227, 234, 264, 302, 293, 259, 229, 203, 229, 242, 233, 267, 269, 270, 315, 364, 347, 312, 274, 237, 278, 284, 277, 317, 313, 318, 374, 413, 405, 355, 306, 271, 306, 315, 301, 356, 348, 355, 422, 465, 467, 404, 347, 305, 336, 340, 318, 362, 348, 363, 435, 491, 505 ] }, { "name": "Test", "type": "scatter", "x": [ "1958-09-01T00:00:00", "1958-10-01T00:00:00", "1958-11-01T00:00:00", "1958-12-01T00:00:00", "1959-01-01T00:00:00", "1959-02-01T00:00:00", "1959-03-01T00:00:00", "1959-04-01T00:00:00", "1959-05-01T00:00:00", "1959-06-01T00:00:00", "1959-07-01T00:00:00", "1959-08-01T00:00:00", "1959-09-01T00:00:00", "1959-10-01T00:00:00", "1959-11-01T00:00:00", "1959-12-01T00:00:00", "1960-01-01T00:00:00", "1960-02-01T00:00:00", "1960-03-01T00:00:00", "1960-04-01T00:00:00", "1960-05-01T00:00:00", "1960-06-01T00:00:00", "1960-07-01T00:00:00", "1960-08-01T00:00:00", "1960-09-01T00:00:00", "1960-10-01T00:00:00", "1960-11-01T00:00:00", "1960-12-01T00:00:00" ], "y": [ 404, 359, 310, 337, 360, 342, 406, 396, 420, 472, 548, 559, 463, 407, 362, 405, 417, 391, 419, 461, 472, 535, 622, 606, 508, 461, 390, 432 ] }, { "name": "Forecast", "type": "scatter", "x": [ "1958-09-01T00:00:00", "1958-10-01T00:00:00", "1958-11-01T00:00:00", "1958-12-01T00:00:00", "1959-01-01T00:00:00", "1959-02-01T00:00:00", "1959-03-01T00:00:00", "1959-04-01T00:00:00", "1959-05-01T00:00:00", "1959-06-01T00:00:00", "1959-07-01T00:00:00", "1959-08-01T00:00:00", "1959-09-01T00:00:00", "1959-10-01T00:00:00", "1959-11-01T00:00:00", "1959-12-01T00:00:00", "1960-01-01T00:00:00", "1960-02-01T00:00:00", "1960-03-01T00:00:00", "1960-04-01T00:00:00", "1960-05-01T00:00:00", "1960-06-01T00:00:00", "1960-07-01T00:00:00", "1960-08-01T00:00:00", "1960-09-01T00:00:00", "1960-10-01T00:00:00", "1960-11-01T00:00:00", "1960-12-01T00:00:00" ], "y": [ 444.77743608475066, 381.8873120258777, 340.1886691154696, 372.7918800299229, 377.98313989930256, 353.83929265298013, 391.42850281614335, 382.4440789534781, 403.57094412466773, 485.1731607508052, 547.5436710510495, 562.8084641826298, 503.68288099793506, 431.49642827616293, 387.59585146064313, 421.0089844156018, 425.8797154623237, 397.91156054353206, 428.3342115135971, 422.9167278834589, 450.7470651135987, 543.0033437264397, 612.1623065346537, 628.4950900118863, 569.8103029358628, 488.73510682550074, 442.0367229663809, 475.95975554441776 ] } ], "layout": { "font": { "size": 18 }, "height": 400, "template": { "data": { "bar": [ { "error_x": { "color": "rgb(36,36,36)" }, "error_y": { "color": "rgb(36,36,36)" }, "marker": { "line": { "color": "white", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "white", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "rgb(36,36,36)", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "rgb(36,36,36)" }, "baxis": { "endlinecolor": "rgb(36,36,36)", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "rgb(36,36,36)" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "line": { "color": "white", "width": 0.6 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "rgb(237,237,237)" }, "line": { "color": "white" } }, "header": { "fill": { "color": "rgb(217,217,217)" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "colorscale": { "diverging": [ [ 0, "rgb(103,0,31)" ], [ 0.1, "rgb(178,24,43)" ], [ 0.2, "rgb(214,96,77)" ], [ 0.3, "rgb(244,165,130)" ], [ 0.4, "rgb(253,219,199)" ], [ 0.5, "rgb(247,247,247)" ], [ 0.6, "rgb(209,229,240)" ], [ 0.7, "rgb(146,197,222)" ], [ 0.8, "rgb(67,147,195)" ], [ 0.9, "rgb(33,102,172)" ], [ 1, "rgb(5,48,97)" ] ], "sequential": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "sequentialminus": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ] }, "colorway": [ "#1F77B4", "#FF7F0E", "#2CA02C", "#D62728", "#9467BD", "#8C564B", "#E377C2", "#7F7F7F", "#BCBD22", "#17BECF" ], "font": { "color": "rgb(36,36,36)" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "white", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "white", "polar": { "angularaxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" }, "bgcolor": "white", "radialaxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" } }, "scene": { "xaxis": { "backgroundcolor": "white", "gridcolor": "rgb(232,232,232)", "gridwidth": 2, "linecolor": "rgb(36,36,36)", "showbackground": true, "showgrid": false, "showline": true, "ticks": "outside", "zeroline": false, "zerolinecolor": "rgb(36,36,36)" }, "yaxis": { "backgroundcolor": "white", "gridcolor": "rgb(232,232,232)", "gridwidth": 2, "linecolor": "rgb(36,36,36)", "showbackground": true, "showgrid": false, "showline": true, "ticks": "outside", "zeroline": false, "zerolinecolor": "rgb(36,36,36)" }, "zaxis": { "backgroundcolor": "white", "gridcolor": "rgb(232,232,232)", "gridwidth": 2, "linecolor": "rgb(36,36,36)", "showbackground": true, "showgrid": false, "showline": true, "ticks": "outside", "zeroline": false, "zerolinecolor": "rgb(36,36,36)" } }, "shapedefaults": { "fillcolor": "black", "line": { "width": 0 }, "opacity": 0.3 }, "ternary": { "aaxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" }, "baxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" }, "bgcolor": "white", "caxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside", "title": { "standoff": 15 }, "zeroline": false, "zerolinecolor": "rgb(36,36,36)" }, "yaxis": { "automargin": true, "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside", "title": { "standoff": 15 }, "zeroline": false, "zerolinecolor": "rgb(36,36,36)" } } }, "title": { "text": "Autoregression", "x": 0.5 }, "width": 650, "xaxis": { "title": { "text": "Date" } }, "yaxis": { "title": { "text": "Passenger Volume" } } } } }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Import packages\n", "from scipy.special import inv_boxcox\n", "import plotly.graph_objects as go\n", "\n", "# Get forecasts and convert to actual passenger volumes\n", "transformed_forecasts = list(model.forecast(steps=len(test)))\n", "boxcox_forecasts = []\n", "for idx in range(len(test)):\n", " if idx == 0:\n", " boxcox_forecast = (\n", " transformed_forecasts[idx] + train[\"Passengers_boxcox\"].iloc[-1]\n", " )\n", " else:\n", " boxcox_forecast = transformed_forecasts[idx] + boxcox_forecasts[idx - 1]\n", "\n", " boxcox_forecasts.append(boxcox_forecast)\n", "\n", "forecasts = inv_boxcox(boxcox_forecasts, lam)\n", "\n", "\n", "def plot_forecasts(forecasts: list[float], title: str) -> None:\n", " \"\"\"Function to plot the forecasts.\"\"\"\n", " fig = go.Figure()\n", " fig.add_trace(\n", " go.Scatter(x=train[\"Month\"], y=train[\"#Passengers\"], name=\"Train\")\n", " )\n", " fig.add_trace(\n", " go.Scatter(x=test[\"Month\"], y=test[\"#Passengers\"], name=\"Test\")\n", " )\n", " fig.add_trace(go.Scatter(x=test[\"Month\"], y=forecasts, name=\"Forecast\"))\n", " fig.update_layout(\n", " template=\"simple_white\",\n", " font=dict(size=18),\n", " title_text=title,\n", " width=650,\n", " title_x=0.5,\n", " height=400,\n", " xaxis_title=\"Date\",\n", " yaxis_title=\"Passenger Volume\",\n", " )\n", "\n", " return fig.show()\n", "\n", "\n", "# Plot the forecasts\n", "plot_forecasts(forecasts, \"Autoregression\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "py311-kfp240-airflow251", "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.5" } }, "nbformat": 4, "nbformat_minor": 2 }