ISE 529 Predictive Analytics Midterm Exam Submit by Oct 8, 5:30 p.m. PST SCE is a power utilities participant in the California deregulated energy market (called the CAISO), meaning that everyday SCE...

1 answer below »
See attached files


ISE 529 Predictive Analytics Midterm Exam Submit by Oct 8, 5:30 p.m. PST SCE is a power utilities participant in the California deregulated energy market (called the CAISO), meaning that everyday SCE buys and sells energy in the market in order to meet the demand of its customers. Having accurate load forecasts for SCE. Most of the forecasted load is bought 14 hours before the start of the “flow date” in the “day- ahead” energy market. The flow date is defined as the day the energy is consumed by our customers. The rest of the load is bought in the “real time” energy market in order to hit real time fluxes of demand. The load forecast accuracy is crucial for SCE in order to keep costs down for SCE customers and to be able to balance supply and demand on the grid. SCE aims to predict the Load with a model yielding a mean absolute percentage error (MAPE) of under 4% for our 14-hour forecast in order to accurately purchase gas in the “day-ahead” market. The sce.xlsx file contains the load (measured in MWhs) in hour intervals for every day from 2014 to 2019. Consider using the following steps. Run the following function right after opening the libraries (numpy, pandas, and any other of your choice) def mean_absolute_percentage_error(y,y_pred): y = np.array(y) y_pred = np.array(y_pred) return 100*np.mean(np.abs((y-y_pred)/y)) Read the datafile into a dataframe df. 1. (10 pts.) Use df[’year’] = df[’Date’].dt.year to create a column for the year. Repeat this step to create columns for the month, day, and hour. Also, use df[’day of week’] = df[’Date’].dt.dayofweek to create a column for the day of the week. Fit a multiple regression model with all predictors (new created columns) and with month, day, hour, day of week as categorical variables. Report the MAPE and r-square. 2. (10 pts.) Plot of Load as a function of time (once you let Date be the DataFrame index). 3. (20 pts.) Construct a scatterplot of Load vs temp with the x-axis displaying the temp. Add a quadratic least squares (red) line on the plot. This plot should suggest that the square of temp is a good predictor of the Load and that it should be included in the following models. 4. (10 pts.) Fit a multiple regression model by adding to the first model temp, and the temperature squared, the interaction of temperature and hour, and, the interaction of squared temperature and hour. Report the MAPE and r-square. 5. (10 pts.) Use df[’lag24’] = df[’Load’].shift(24) to add the Load shifted 24 hours as an additional predictor. Fit the MLR model and report the MAPE and r-square. 6. (10 pts.) Use sm.graphics.tsa.plot_pacf(load, lags = 60) to plot partial autocorrelations (adjust the argument lags = 60 as needed). Lags with a large partial autocorrelations (+ or -) should be good predictors. Fit a MLR model with the additional lags found and report the MAPE and r-square. 7. (20 pts.) Split the data into a test set (2019 values) and a train set (all other years). Fit the best model found and report the MAPE and r-square for the test set. 8. (10 pts.) Plot the cumulative load by year and month. This is called a seasonal chart (see below). It is useful to display the seasonality of the data. Adjust the x-axis with your choice. Submit your report with your name and USC ID as a pdf file online (no screen captures). ISE 529 Predictive Analytics Midterm Exam Submit by Oct 8, 5:30 p.m. PST Date,Load,temp 1/1/2014 0:00,9891,59.4685 1/1/2014 1:00,9553,61.403 1/1/2014 2:00,9222,55.031 1/1/2014 3:00,9024,53.1878 1/1/2014 4:00,8987,51.9944 1/1/2014 5:00,9028,50.045 1/1/2014 6:00,9136,48.5402 1/1/2014 7:00,8882,47.8121 1/1/2014 8:00,9020,46.7744 1/1/2014 9:00,9180,46.0895 1/1/2014 10:00,9330,46.4684 1/1/2014 11:00,9361,45.0743 1/1/2014 12:00,9376,43.5353 1/1/2014 13:00,9371,42.4067 1/1/2014 14:00,9402,42.0575 1/1/2014 15:00,9523,40.2881 1/1/2014 16:00,9952,44.2085 1/1/2014 17:00,11444,50.5211 1/1/2014 18:00,11766,57.8012 1/1/2014 19:00,11678,63.599 1/1/2014 20:00,11451,66.9929 1/1/2014 21:00,11116,68.9351 1/1/2014 22:00,10408,67.7426 1/1/2014 23:00,9653,68.5652 1/2/2014 0:00,9191,68 1/2/2014 1:00,8860,61.5641 1/2/2014 2:00,8682,57.2234 1/2/2014 3:00,8676,54.9374 1/2/2014 4:00,8917,54.9734 1/2/2014 5:00,9553,53.7971 1/2/2014 6:00,10236,53.0726 1/2/2014 7:00,10666,50.6543 1/2/2014 8:00,11157,52.0916 1/2/2014 9:00,11458,52.1429 1/2/2014 10:00,11673,51.3779 1/2/2014 11:00,11712,51.5453 1/2/2014 12:00,11772,51.1187 1/2/2014 13:00,11710,49.6157 1/2/2014 14:00,11708,47.1191 1/2/2014 15:00,11699,47.5241 1/2/2014 16:00,11893,51.7937 1/2/2014 17:00,13016,61.7459 1/2/2014 18:00,13142,68.6147 1/2/2014 19:00,12868,73.7573 1/2/2014 20:00,12526,74.1119 1/2/2014 21:00,11983,74.7374 1/2/2014 22:00,11091,74.7302 1/2/2014 23:00,10246,73.0967 1/3/2014 0:00,9592,71.1401 1/3/2014 1:00,9179,66.407 1/3/2014 2:00,8934,62.6225 1/3/2014 3:00,8845,58.5662 1/3/2014 4:00,9057,58.037 1/3/2014 5:00,9525,55.895 1/3/2014 6:00,10423,54.4388 1/3/2014 7:00,10820,52.6919 1/3/2014 8:00,11201,50.945 1/3/2014 9:00,11534,49.0217 1/3/2014 10:00,11694,47.912 1/3/2014 11:00,11674,46.5701 1/3/2014 12:00,11626,45.1067 1/3/2014 13:00,11611,44.0636 1/3/2014 14:00,11557,43.8935 1/3/2014 15:00,11510,44.1869 1/3/2014 16:00,11693,47.7023 1/3/2014 17:00,12869,54.4118 1/3/2014 18:00,12956,60.6884 1/3/2014 19:00,12803,66.2648 1/3/2014 20:00,12489,66.9848 1/3/2014 21:00,12076,68.7821 1/3/2014 22:00,11276,67.1711 1/3/2014 23:00,10390,66.6527 1/4/2014 0:00,9718,64.049 1/4/2014 1:00,9306,58.5032 1/4/2014 2:00,9061,54.7934 1/4/2014 3:00,8943,53.8484 1/4/2014 4:00,8994,53.6576 1/4/2014 5:00,9251,53.2643 1/4/2014 6:00,9657,52.3346 1/4/2014 7:00,9741,51.5975 1/4/2014 8:00,10032,50.8685 1/4/2014 9:00,10267,49.7948 1/4/2014 10:00,10334,50.1755 1/4/2014 11:00,10283,48.0164 1/4/2014 12:00,10205,48.3458 1/4/2014 13:00,10089,48.6221 1/4/2014 14:00,10044,48.3341 1/4/2014 15:00,10078,46.5467 1/4/2014 16:00,10305,48.2288 1/4/2014 17:00,11686,52.9106 1/4/2014 18:00,11962,59.0693 1/4/2014 19:00,11846,63.0734 1/4/2014 20:00,11593,65.3684 1/4/2014 21:00,11151,66.4646 1/4/2014 22:00,10478,67.5446 1/4/2014 23:00,9746,66.1901 1/5/2014 0:00,9250,65.1704 1/5/2014 1:00,8858,60.1592 1/5/2014 2:00,8602,56.0426 1/5/2014 3:00,8462,53.7224 1/5/2014 4:00,8467,52.6478 1/5/2014 5:00,8653,51.9962 1/5/2014 6:00,8991,49.7165 1/5/2014 7:00,9026,48.7535 1/5/2014 8:00,9289,47.8715 1/5/2014 9:00,9506,46.6376 1/5/2014 10:00,9656,46.7744 1/5/2014 11:00,9722,47.4962 1/5/2014 12:00,9775,47.9363 1/5/2014 13:00,9786,47.7185 1/5/2014 14:00,9794,45.9374 1/5/2014 15:00,9872,47.7608 1/5/2014 16:00,10215,51.7028 1/5/2014 17:00,11634,59.3897 1/5/2014 18:00,12019,66.038 1/5/2014 19:00,11892,69.3905 1/5/2014 20:00,11644,71.3336 1/5/2014 21:00,11126,73.4765 1/5/2014 22:00,10362,72.5117 1/5/2014 23:00,9695,71.6936 1/6/2014 0:00,9261,69.746 1/6/2014 1:00,8972,64.4126 1/6/2014 2:00,8813,59.603 1/6/2014 3:00,8867,57.8498 1/6/2014 4:00,9170,57.0245 1/6/2014 5:00,9698,53.4209 1/6/2014 6:00,10606,54.86 1/6/2014 7:00,11128,52.5794 1/6/2014 8:00,11436,51.5831 1/6/2014 9:00,11612,53.4092 1/6/2014 10:00,11733,52.295 1/6/2014 11:00,11786,50.0792 1/6/2014 12:00,11773,47.6042 1/6/2014 13:00,11824,48.8759 1/6/2014 14:00,11794,46.7114 1/6/2014 15:00,11732,48.9398 1/6/2014 16:00,11787,51.7793 1/6/2014 17:00,12872,59.747 1/6/2014 18:00,13126,66.7112 1/6/2014 19:00,12865,70.1591 1/6/2014 20:00,12535,72.9887 1/6/2014 21:00,11879,74.9615 1/6/2014 22:00,10909,73.877 1/6/2014 23:00,9995,72.9833 1/7/2014 0:00,9351,70.2194 1/7/2014 1:00,9008,64.5116 1/7/2014 2:00,8815,59.9207 1/7/2014 3:00,8755,57.5924 1/7/2014 4:00,8990,57.7571 1/7/2014 5:00,9705,55.3595 1/7/2014 6:00,10899,54.4982 1/7/2014 7:00,11512,53.3669 1/7/2014 8:00,11738,52.1636 1/7/2014 9:00,11860,50.1863 1/7/2014 10:00,11950,48.1082 1/7/2014 11:00,11998,47.8463 1/7/2014 12:00,11968,44.6 1/7/2014 13:00,11954,45.8663 1/7/2014 14:00,11885,43.4147 1/7/2014 15:00,11848,45.7061 1/7/2014 16:00,12103,48.1658 1/7/2014 17:00,13222,56.1326 1/7/2014 18:00,13378,60.2321 1/7/2014 19:00,13129,64.5917 1/7/2014 20:00,12743,65.8436 1/7/2014 21:00,12121,67.0217 1/7/2014 22:00,11156,66.1568 1/7/2014 23:00,10180,65.4962 1/8/2014 0:00,9531,64.0373 1/8/2014 1:00,9261,61.1816 1/8/2014 2:00,9143,58.5185 1/8/2014 3:00,9097,57.7022 1/8/2014 4:00,9184,57.3026 1/8/2014 5:00,9907,54.4811 1/8/2014 6:00,10994,53.5055 1/8/2014 7:00,11645,52.0889 1/8/2014 8:00,11925,49.8083 1/8/2014 9:00,12054,48.452 1/8/2014 10:00,12072,46.8131 1/8/2014 11:00,11860,46.6079 1/8/2014 12:00,11761,44.5145 1/8/2014 13:00,11821,45.833 1/8/2014 14:00,11789,44.7017 1/8/2014 15:00,11715,44.6792 1/8/2014 16:00,12126,48.2207 1/8/2014 17:00,13479,51.449 1/8/2014 18:00,13799,56.6168 1/8/2014 19:00,13587,60.9755 1/8/2014 20:00,13233,63.4226 1/8/2014 21:00,12603,66.1631 1/8/2014 22:00,11544,66.2387 1/8/2014 23:00,10639,64.9841 1/9/2014 0:00,10046,63.0617 1/9/2014 1:00,9854,59.6282 1/9/2014 2:00,9629,55.7276 1/9/2014 3:00,9635,53.8052 1/9/2014 4:00,9689,52.9916 1/9/2014 5:00,10246,52.052 1/9/2014 6:00,11422,51.4868 1/9/2014 7:00,11908,50.7308 1/9/2014 8:00,12121,49.9802 1/9/2014 9:00,12298,50.8109 1/9/2014 10:00,12387,50.279 1/9/2014 11:00,12305,48.6815 1/9/2014 12:00,12217,48.2783 1/9/2014 13:00,12219,48.0587 1/9/2014 14:00,12250,45.7862 1/9/2014 15:00,12212,44.7242 1/9/2014 16:00,12250,47.9048 1/9/2014 17:00,13370,53.7944 1/9/2014 18:00,13660,55.9427 1/9/2014 19:00,13502,59.4482 1/9/2014 20:00,13142,60.9629 1/9/2014 21:00,12509,61.8584 1/9/2014 22:00,11652,62.0573 1/9/2014 23:00,10734,61.5326 1/10/2014 0:00,10179,61.4642 1/10/2014 1:00,10000,57.6635 1/10/2014 2:00,9750,54.7187 1/10/2014 3:00,9631,52.5344 1/10/2014 4:00,9832,51.2285 1/10/2014 5:00,10237,51.2285 1/10/2014 6:00,11249,50.1044 1/10/2014 7:00,11830,50.0657 1/10/2014 8:00,12009,47.2838 1/10/2014 9:00,12096,47.165 1/10/2014 10:00,12187,46.6826 1/10/2014 11:00,12140,44.1995 1/10/2014 12:00,12070,44.1122 1/10/2014 13:00,12056,44.8448 1/10/2014 14:00,12001,44.6801 1/10/2014 15:00,11918,43.6892 1/10/2014 16:00,11922,46.4918 1/10/2014 17:00,12859,53.7872 1/10/2014 18:00,13065,60.2546 1/10/2014 19:00,12780,63.6818 1/10/2014 20:00,12382,66.785 1/10/2014 21:00,11917,68.639 1/10/2014 22:00,11144,68.8388 1/10/2014 23:00,10415,67.9856 1/11/2014 0:00,9846,67.4024 1/11/2014 1:00,9445,62.9006 1/11/2014 2:00,9299,57.8372 1/11/2014 3:00,9176,55.3343 1/11/2014 4:00,9220,54.6053 1/11/2014 5:00,9362,53.4083 1/11/2014 6:00,9772,52.8467 1/11/2014 7:00,9918,52.6775 1/11/2014 8:00,10228,49.5626 1/11/2014 9:00,10449,48.4826 1/11/2014 10:00,10574,46.1399 1/11/2014 11:00,10628,44.9816 1/11/2014 12:00,10581,44.1329 1/11/2014 13:00,10514,44.4407 1/11/2014 14:00,10487,43.4183 1/11/2014 15:00,10476,43.6559 1/11/2014 16:00,10672,47.3558 1/11/2014 17:00,11862,54.3506 1/11/2014 18:00,12131,60.8369 1/11/2014 19:00,11989,65.2271 1/11/2014 20:00,11770,68.6219 1/11/2014 21:00,11367,70.0799 1/11/2014 22:00,10694,70.2158 1/11/2014 23:00,10017,68.1521 1/12/2014 0:00,9553,66.1469 1/12/2014
Answered 1 days AfterOct 13, 2021

Answer To: ISE 529 Predictive Analytics Midterm Exam Submit by Oct 8, 5:30 p.m. PST SCE is a power utilities...

Pritam Kumar answered on Oct 15 2021
116 Votes
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import statsmodels.api as sm"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"def mean_absolute_percentage_error(y,y_pred):\n",
" y = np.array(y)\n",
" y_pred = np.array(y_pred)\n",
" return 100*np.mean(np.abs((y-y_pred)/y))"
]
},
{
"cell_type": "code",
"execution_count": 111,
"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",
"
DateLoadtemp
01/1/2014 0:009891.059.4685
11/1/2014 1:009553.061.4030
21/1/2014 2:009222.055.0310
31/1/2014 3:009024.053.1878
41/1/2014 4:008987.051.9944
\n",
"
"
],
"text/plain": [
" Date Load temp\n",
"0 1/1/2014 0:00 9891.0 59.4685\n",
"1 1/1/2014 1:00 9553.0 61.4030\n",
"2 1/1/2014 2:00 9222.0 55.0310\n",
"3 1/1/2014 3:00 9024.0 53.1878\n",
"4 1/1/2014 4:00 8987.0 51.9944"
]
},
"execution_count": 111,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv(\"D:\\\\New\\\\sce-tsa.csv\")\n",
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Question 1"
]
},
{
"cell_type": "code",
"execution_count": 112,
"metadata": {},
"outputs": [],
"source": [
"df['Date'] = pd.to_datetime(df['Date'])\n",
"\n",
"df['year'] = df['Date'].dt.year\n",
"df['month'] = df['Date'].dt.month\n",
"df['day'] = df['Date'].dt.day\n",
"df['hour'] = df['Date'].dt.hour"
]
},
{
"cell_type": "code",
"execution_count": 114,
"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",
"
DateLoadtempyearmonthdayhour
02014-01-01 00:00:009891.059.46852014110
12014-01-01 01:00:009553.061.40302014111
22014-01-01 02:00:009222.055.03102014112
32014-01-01 03:00:009024.053.18782014113
42014-01-01 04:00:008987.051.99442014114
\n",
"
"
],
"text/plain": [
" Date Load temp year month day hour\n",
"0 2014-01-01 00:00:00 9891.0 59.4685 2014 1 1 0\n",
"1 2014-01-01 01:00:00 9553.0 61.4030 2014 1 1 1\n",
"2 2014-01-01 02:00:00 9222.0 55.0310 2014 1 1 2\n",
"3 2014-01-01 03:00:00 9024.0 53.1878 2014 1 1 3\n",
"4 2014-01-01 04:00:00 8987.0 51.9944 2014 1 1 4"
]
},
"execution_count": 114,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 115,
"metadata": {},
"outputs": [],
"source": [
"df['day of week'] = df['Date'].dt.dayofweek"
]
},
{
"cell_type": "code",
"execution_count": 116,
"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",
"
DateLoadtempyearmonthdayhourday of week
02014-01-01 00:00:009891.059.468520141102
12014-01-01 01:00:009553.061.403020141112
22014-01-01 02:00:009222.055.031020141122
32014-01-01 03:00:009024.053.187820141132
42014-01-01 04:00:008987.051.994420141142
\n",
"
"
],
"text/plain": [
" Date Load temp year month day hour day of week\n",
"0 2014-01-01 00:00:00 9891.0 59.4685 2014 1 1 0 2\n",
"1 2014-01-01 01:00:00 9553.0 61.4030 2014 1 1 1 2\n",
"2 2014-01-01 02:00:00 9222.0 55.0310 2014 1 1 2 2\n",
"3 2014-01-01 03:00:00 9024.0 53.1878 2014 1 1 3 2\n",
"4 2014-01-01 04:00:00 8987.0 51.9944 2014 1 1 4 2"
]
},
"execution_count": 116,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split\n",
"\n",
"X = df.iloc[:,4:8]\n",
"y = df['Load']\n",
"\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=12)"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [],
"source": [
"X_train = sm.add_constant(X_train)\n",
"\n",
"mul_reg_model = sm.OLS(y_train, X_train)\n",
"\n",
"result = mul_reg_model.fit()"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" OLS Regression Results \n",
"==============================================================================\n",
"Dep. Variable: Load R-squared: 0.288\n",
"Model: OLS Adj. R-squared: 0.288\n",
"Method: Least Squares F-statistic: 4012.\n",
"Date: Thu, 14 Oct 2021 Prob (F-statistic): 0.00\n",
"Time: 22:35:08 Log-Likelihood: -3.6212e+05\n",
"No. Observations: 39744 AIC: 7.243e+05\n",
"Df Residuals: 39739 BIC: 7.243e+05\n",
"Df Model: 4 \n",
"Covariance Type: nonrobust \n",
"===============================================================================\n",
" coef std err t P>|t| [0.025 0.975]\n",
"-------------------------------------------------------------------------------\n",
"const 9441.8700 38.975 242.253 0.000 9365.478 9518.262\n",
"month 166.7774 3.238 51.512 0.000 160.432 173.123\n",
"day 5.0505 1.249 4.044 0.000 2.603 7.498\n",
"hour 171.9127 1.588 108.230 0.000 168.799 175.026\n",
"day of week -221.4897 5.501 -40.261 0.000 -232.272 -210.707\n",
"==============================================================================\n",
"Omnibus: 9065.934 Durbin-Watson: 2.011\n",
"Prob(Omnibus): 0.000 Jarque-Bera (JB): 21043.958\n",
"Skew: 1.288 Prob(JB): 0.00\n",
"Kurtosis: 5.463 Cond. No. 78.8\n",
"==============================================================================\n",
"\n",
"Warnings:\n",
"[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n"
]
}
],
"source": [
"print(result.summary())"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [],
"source": [
"y_pred = result.predict(sm.add_constant(X_test[['month', 'day', 'hour', 'day of week']]))"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"12.618"
]
},
"execution_count": 70,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mean_absolute_percentage_error(y_test,y_pred).round(3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The MAPE value is 12.618 and the r-squared value is 0.288"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Question 2"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAnoAAAGKCAYAAACb0OyIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdd5xcVf3/8dcHAgmk0SMJmBCkxChoiDQLa/va4IuIfn+CitgAFRXL169KSahSxILU0EtAepDeh2IgEEhCCCmk9952N9ndZPf8/rh3sndnp+7euffOzPv5eMxjZu655TN3Z+987rnnnGvOOURERESk+mwXdwAiIiIiUh5K9ERERESqlBI9ERERkSqlRE9ERESkSinRExEREalSSvREREREqpQSPRGJjJnVmZkzs33ijqUczGy+mZ0TwXYuMbMV/r48tdzbi4r/eb4bdxwi1USJnoiEwv+RzveYD4wH9gaWxhTj7mZ2lZnNM7NmM1tlZq+Y2UkhbeITwN9CWldWZnYE8EfgNLx9eW/I66/qZFyk1vSIOwARqRp7B14fDjziPy/yp7U651qA5VEHFvAgsAtwOjAT2AM4Ati9Oys1sx2dcy3OuVXdD7GgA4A259wj3VlJOuaQYhKRhFKNnoiEwjm3PP0A1vqTVwWmr8qsLQq8/6qZvWZmm83sLTMb7j9eNbNNZvaGmX04uD0zO8zMnjGzBr9m7iEzG5wrPjPbBTgGOMc594xzboFz7i3n3LXOuasz5v2Fmc0wsyYze9/MzjazHoHy+WZ2kZlda2ZrgP8Epp8TmK+HmY32axCbzGyamZ2esa0fm9l0v3yNmb2cqzbNzG4D7gS2S9eU+tPNzH5nZnPNrMXM5pjZWRnLZo25VGa2g5ldamZL/G29Z2YnZ8zzKzOb7P9tlpvZv8xs74x5Pmtm7/if+x0z+2xX4hGR/JToiUgSXAycDRwGtAD3ANcBowLTbk3P7Cd9LwGvASOBzwGtwLNm1ivHNhqAeuB4M+udKxAzGw38Du/y6DDgV3g1gKMyZv0lsBI4Cvh+jtXdBHzDX34YcAFwmZn9yN/WYcD1wJ+Bg4A64I5csfmxnIX3WfemvRb1Z8CFwKXAcOAK4NL0dkqMuZBLgJ/4cXwEuAu4y8w+nzHf74CPAicAHwT+lS4ws4HAY8BbwAjgt8A/uhiPiOTjnNNDDz30CPUBfApwwJCM6XX+9H0y3n89MM+3/GknBqad4E/r47+/DfhXxrp7ApuC68oS1wnAarzEcSJecvG5QPnO/jq+nLHcKcD6wPv5wPNZ1j8fr8YQYD+gDTg4Y57zgMmBeDYA/UrYt6cCWzOmLQIuz5j2N2BuoZizrL/D3yijbGegGfhZxvSHgRfyrPPj/joH+e8vAhYAPQLzHOvP8924v7966FFND9XoiUgSTAm8TrfheyfLtL38508AJ/iXBhvMrAFYA/TCa8OWlXPuYWAQ8GW89nofBp43s2v8WYYDOwEPZqz7BqC/me0ZWN0bBT7TSMCAiRnr+lMgxmeBucA8//LmaWa2R4H1dmBm/YB9gJczil4ChpjZziXEXMiHgB1zbGt4IKY6M3vazBaZWT3wql+UvrT+YeAN59zWwDpeRURCp84YIpIEWwKvXZ5p2wWe78S7VJlpTb4NOeeagRf8x5/9NnUXmtkVgfV/C5iVZfG1gdeN+bYTWNfReLWEHcLwY2kws5HAJ4EvAGcAl5vZ551zbxVYfyaX8d6yzFMo5u5sK91e8IPAE3h/nwvwalD3AZ7DSxI7zJ9nnSISAiV6IlKJJgKHAHOcc91NEKb7z3sC04AmYKhz7olurjedqH3QOfdYrpmcc614NWQvm9ko4D3g5MDyeTnnNprZYryOJo8Hij4DzHPOZSaZ3TEb79LtMXj7Krit9PtP4NWKnuWc2wzb2iIGTQO+Z2bb+58fvMv9IhIyJXoiUokuwbsMeZeZ/QNYBQwBvg78wzk3N3MBM9sd73LtrXiXitfjdSb4MzAPr93cFjO7BLjEzMC7tNoDr1PBx51z/1dsgM652WZ2C3Cjmf0er+NIb7zOJXs65y4zs+OBoXiJ3iq/bF+8ZK8UfwauNLP3gRRe55SfAj8vcT1BH85yGXkWcBVeDegqYDJe7efxwBf9ed7Hq537rZmNBQ7Fa5cYdB3wG2CMmf0FGIjXIUdEQqZET0QqjnNuupkdjdeo/2m8tnlL8C7Hrs+xWAPegM0/x2trthOwDHgGuNg5t8Vf94VmthT4BfAXYDNegnNbF0I9Da9H6dl4Cd1GvNqs9HAu64Dj8Nrt9cXrVHERcEuJ27kOL4n8E3Ctv54/OOdu7kLMaU9nmXYU3mdpA/6OVws6G68DxfMAzrl3zOwXwB/8ed/C66H7ZHolzrklZnacv47JeMnhL4HnuxGviGRh3b/qISIiIiJJpF63IiIiIlUqkkTPzHqa2c1mtsDM6s1skpl9xS8b4o/w3hB4nBtY1szsMn/E+DVmdrn5jWcCy79o3uj5M8zsCxnbPtnfbqOZjTOz3aL4zCIiIiJxi6pGrwdem5FjgP7AucB9ZjYkMM8uzrk+/uPCwPTT8BpYH4rXy+5YvFHm0+4BJuHdq/Js4IH0WFdmNhxv/KvvAQPwhji4NuwPJyIiIpJEsbXRM7N3gPPxGurOA3bIGDwzPd944Dbn3Bj//Y+AnzjnjjSzA4GpwB7OuXq//BVgrHPuer/33BDn3Ml+2f54Qynsnp5fREREpFrF0kbPzAYAB9JxHKYFZrbYzG7N6NI/nI6j5k+hfQT24Xi3+KnPU75tWefcHLxbHx0YygcRERERSbDIh1cxsx2AscDtzrkZZtYHb4DNyXiXX6/xy7/kL9IH716QaRuAPn47vcyydPmgHMumy/tmies0vMvE7LTTToftu+++Xfp8pWhra2O77dQfppy0j6Oh/Vx+2sfR0H4uP+3j8M2aNWu1c27PbGWRJnpmlr5tUQtwJni3AMIb5R5ghZmdCSwzs37OuY14Y1/1C6ymH9DgnHP+fSODZenydA1fofJt/EvDYwBGjhzpJk6cmDlL6FKpFHV1dWXfTi3TPo6G9nP5aR9HQ/u5/LSPw2dmC3KVRZZS+zVwN+N1ijgxPThpFulGg+metdPwOmKkHUr7Jd9pwFAz65unfNuyZjYU6En2e1iKiIiIVJUo606vA4YBx6XvfwhgZkeY2UFmtp1/i6KrgJRzLn3J9Q7gN2Y2yMwG4o0yfxuAc24W3iXfUWbWy8xOwOuZ+6C/7FjgODP7tJn1xrvB9kPqiCEiIiK1IJJLt2Y2GG9IlGZgeWAYvNPxbqVzCbAX3u2BngVOCix+A96tg6b672/yp6V9Gy/xWwcsBL7pnFsF4JybZmZn4CV8uwPPAT8I99OJiIiIJFMkiZ5zbgHtl2KzuSfPsg74vf/IVj4fqMuz/N3A3cXEKSIiIlJNIu91W8na2tpYvXo169evp7W1tdvr69+/P9OnTw8hsvj16tWLffbZhx122CHuUERERMSnRK8EixcvxswYMmQIO+ywA4FL0F1SX19P376dRnqpOM451qxZw+LFi9lvv/3iDkdERER8GsimBI2NjQwaNIgdd9yx20leNTEzdt99d5qamuIORURERAKU6JVIgzxmp8RXREQkeZS1iIiIiFQpJXpStNGjR/Pd73437jBERESkSEr0qsiQIUN47rnn4g5DREREEkKJnoiIJEvjamhcE3cUIlVBiV6Va25u5qyzzmLgwIEMHDiQs846i+bmZgDWrVvHsccey5577smuu+7Ksccey+LFi7ctO2/ePI455hj69u3LF7/4RVavXh3XxxCRWnLF/nDF0LijEKkKGkevO578AyyfWni+HHZq3QrbF/gTfOCj8JVLu7yNiy++mNdff53JkydjZhx//PFcdNFFXHjhhbS1tfGDH/yA++67j9bWVn74wx9y5plnMm7cOABOPvlkjjrqKJ555hkmTJjA1772NY4//vguxyIiIiHbtBae+F847u/Qs/LHZZXwqUavyo0dO5bzzjuPvfbaiz333JNRo0Zx5513ArD77rtz4oknsvPOO9O3b1/OPvtsXnrpJQAWLlzIm2++yYUXXkjPnj35zGc+w3HHHRfnRxERkUwvXwHvPgBv3xF3JJJQqtHrjm7UtAFsjuDOGEuXLmXw4MHb3g8ePJilS5cCsGnTJn7961/z1FNPsW7dOsC7W0draytLly5l1113pXfv3h2WXbRoUVnjFZEat2xK3BGIVBXV6FW5gQMHsmDBgm3vFy5cyMCBAwG48sormTlzJhMmTGDjxo28/PLLgHdLs7333pt169bR2NjYYVkRkbKa+WTcEYhUFSV6VWbLli00NTVte5x00klcdNFFrFq1itWrV3PBBRdsGwuvvr6enXbaiV122YW1a9dy/vnnb1vP4MGDGTlyJKNGjaKlpYVXX32VRx99NK6PJSK1onVL3BGIVBUlelXmq1/9KjvttNO2R1NTEyNHjuSQQw7hox/9KCNGjOCcc84B4KyzzmLz5s3sscceHHnkkXz5y1/usK67776bCRMmsNtuu3H++edzyimnxPGRRKSWvPKXuCMQqSpqo1dF5s+fn7Psqquu6jRt4MCBpFKpDtNOP/30ba+HDh3KK6+8ElZ4IiJSLs7FHYEklGr0REREKpbFHYAknBI9ERERkSqlRE9EasP7z0FLY+H5RCqKLtlKfkr0RKT6rZoFY0+Ex34ddyQi5WGBS7ij+8NdJ8YXiySKEr0StbW1xR1CIjk1BJYka97oPa+ZHW8c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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.rc('font', size=12)\n",
"fig, ax = plt.subplots(figsize=(10, 6))\n",
"\n",
"ax.plot(df.Date, df.Load, color='tab:orange', label='Load')\n",
"\n",
"ax.set_xlabel('Time')\n",
"ax.set_ylabel('Load')\n",
"ax.set_title('Time Series for Load')\n",
"ax.grid(True)\n",
"ax.legend(loc='upper left');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Question 3"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0, 0.5, 'Load')"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"x = df[['temp']]\n",
"y = df['Load']\n",
"\n",
"from sklearn.preprocessing import PolynomialFeatures\n",
"polynomial_features= PolynomialFeatures(degree=2)\n",
"xp = polynomial_features.fit_transform(x)\n",
"\n",
"import statsmodels.api as sm\n",
"\n",
"model = sm.OLS(y, xp).fit()\n",
"ypred = model.predict(xp)\n",
"\n",
"plt.scatter(x,y)\n",
"plt.plot(x,ypred, color='red')\n",
"plt.xlabel('temp^2')\n",
"plt.ylabel('Load')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Question 4"
]
},
{
"cell_type": "code",
"execution_count": 117,
"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",
"
Loadtempmonthdayhourday of weektemp_sqrtemp_hrtemp_sqr_hrYear
09891.059.468511023536.5024920.00000.0000002014
19553.061.403011123770.32840961.40303770.3284092014
29222.055.031011223028.410961110.06206056.8219222014
39024.053.187811322828.942069159.56348486.8262072014
48987.051.994411422703.417631207.977610813.6705252014
\n",
"
"
],
"text/plain": [
" Load temp month day hour day of week temp_sqr temp_hr \\\n",
"0 9891.0 59.4685 1 1 0 2 3536.502492 0.0000 \n",
"1 9553.0 61.4030 1 1 1 2 3770.328409 61.4030 \n",
"2 9222.0 55.0310 1 1 2 2 3028.410961 110.0620 \n",
"3 9024.0 53.1878 1 1 3 2 2828.942069 159.5634 \n",
"4 8987.0 51.9944 1 1 4 2 2703.417631 207.9776 \n",
"\n",
" temp_sqr_hr Year \n",
"0 0.000000 2014 \n",
"1 3770.328409 2014 \n",
"2 6056.821922 2014 \n",
"3 8486.826207 2014 \n",
"4 10813.670525 2014 "
]
},
"execution_count": 117,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y = df['Load']\n",
"\n",
"data = pd.DataFrame(y)\n",
"data['temp'] = df['temp']\n",
"data['month'] = df['month']\n",
"data['day'] = df['day']\n",
"data['hour'] = df['hour']\n",
"data['day of week'] = df['day of week']\n",
"data['temp_sqr'] = df['temp'] * df['temp']\n",
"data['temp_hr'] = df['temp'] * df['hour']\n",
"data['temp_sqr_hr'] = data['temp_sqr'] * df['hour']\n",
"data['Year'] = df['year']\n",
"\n",
"data.head()"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split\n",
"\n",
"X = data.iloc[:,1:9]\n",
"y = data['Load']\n",
"\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=12)"
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {},
"outputs": [],
"source": [
"X_train = sm.add_constant(X_train)\n",
"\n",
"mul_reg_model = sm.OLS(y_train, X_train)\n",
"\n",
"result = mul_reg_model.fit()"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" OLS Regression Results \n",
"==============================================================================\n",
"Dep. Variable: Load R-squared: 0.431\n",
"Model: OLS Adj. R-squared: 0.431\n",
"Method: Least Squares F-statistic: 3763.\n",
"Date: Thu, 14 Oct 2021 Prob (F-statistic): 0.00\n",
"Time: 22:55:02 Log-Likelihood: -3.5765e+05\n",
"No. Observations: 39744 AIC: 7.153e+05\n",
"Df Residuals: 39735 BIC: 7.154e+05\n",
"Df Model: 8 \n",
"Covariance Type: nonrobust \n",
"===============================================================================\n",
" coef std err t P>|t| [0.025 0.975]\n",
"-------------------------------------------------------------------------------\n",
"const 1.662e+04 799.562 20.785 0.000 1.51e+04 1.82e+04\n",
"temp -285.3890 23.290 -12.254 0.000 -331.037 -239.741\n",
"month 98.0698 2.984 32.868 0.000 92.222 103.918\n",
"day 1.9388 1.117 1.736 0.083 -0.250 4.127\n",
"hour -10.0946 58.769 -0.172 0.864 -125.283 105.093\n",
"day of week -224.4396 4.917 -45.645 0.000 -234.077 -214.802\n",
"temp_sqr 2.7815 0.168 16.580 0.000 2.453 3.110\n",
"temp_hr 4.6042 1.670 2.756 0.006 1.330 7.878\n",
"temp_sqr_hr -0.0345 0.012 -2.943 0.003 -0.058 -0.012\n",
"==============================================================================\n",
"Omnibus: 7751.254 Durbin-Watson: 2.013\n",
"Prob(Omnibus): 0.000 Jarque-Bera (JB): 18275.104\n",
"Skew: 1.102 Prob(JB): 0.00\n",
"Kurtosis: 5.486 Cond. No. 5.80e+06\n",
"==============================================================================\n",
"\n",
"Warnings:\n",
"[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n",
"[2] The condition number is large, 5.8e+06. This might indicate that there are\n",
"strong multicollinearity or other numerical problems.\n"
]
}
],
"source": [
"print(result.summary())"
]
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {},
"outputs": [],
"source": [
"y_pred = result.predict(sm.add_constant(X_test[['temp', 'month', 'day', 'hour', 'day of week', 'temp_sqr',\n",
" 'temp_hr', 'temp_sqr_hr']]))"
]
},
{
"cell_type": "code",
"execution_count": 89,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"11.331"
]
},
"execution_count": 89,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mean_absolute_percentage_error(y_test,y_pred).round(3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The MAPE value is 11.331 and the r-squared value is 0.431"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Question 5"
]
},
{
"cell_type": "code",
"execution_count": 118,
"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",
"
Loadtempmonthdayhourday of weektemp_sqrtemp_hrtemp_sqr_hrYearlag24
249191.068.000012034624.0000000.00000.00000020149891.0
258860.061.564112133790.13840961.56413790.13840920149553.0
268682.057.223412233274.517508114.44686549.03501520149222.0
278676.054.937412333018.117919164.81229054.35375620149024.0
288917.054.973412433022.074708219.893612088.29883020148987.0
\n",
"
"
],
"text/plain": [
" Load temp month day hour day of week temp_sqr temp_hr \\\n",
"24 9191.0 68.0000 1 2 0 3 4624.000000 0.0000 \n",
"25 8860.0 61.5641 1 2 1 3 3790.138409 61.5641 \n",
"26 8682.0 57.2234 1 2 2 3 3274.517508 114.4468 \n",
"27 8676.0 54.9374 1 2 3 3 3018.117919 164.8122 \n",
"28 8917.0 54.9734 1 2 4 3 3022.074708 219.8936 \n",
"\n",
" temp_sqr_hr Year lag24 \n",
"24 0.000000 2014 9891.0 \n",
"25 3790.138409 2014 9553.0 \n",
"26 6549.035015 2014 9222.0 \n",
"27 9054.353756 2014 9024.0 \n",
"28 12088.298830 2014 8987.0 "
]
},
"execution_count": 118,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = data\n",
"df['lag24'] = df['Load'].shift(24)\n",
"df = df[df['lag24'].notna()]\n",
"\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 119,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split\n",
"\n",
"X = df.iloc[:,1:9]\n",
"X['lag24'] = df['lag24']\n",
"y = df['Load']\n",
"\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=12)"
]
},
{
"cell_type": "code",
"execution_count": 120,
"metadata": {},
"outputs": [],
"source": [
"X_train = sm.add_constant(X_train)\n",
"\n",
"mul_reg_model = sm.OLS(y_train, X_train)\n",
"\n",
"result = mul_reg_model.fit()"
]
},
{
"cell_type": "code",
"execution_count": 121,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" OLS Regression Results \n",
"==============================================================================\n",
"Dep. Variable: Load R-squared: 0.908\n",
"Model: OLS Adj. R-squared: 0.908\n",
"Method: Least Squares F-statistic: 4.376e+04\n",
"Date: Thu, 14 Oct 2021 Prob (F-statistic): 0.00\n",
"Time: 23:23:20 Log-Likelihood: -3.2100e+05\n",
"No. Observations: 39724 AIC: 6.420e+05\n",
"Df Residuals: 39714 BIC: 6.421e+05\n",
"Df Model: 9 \n",
"Covariance Type: nonrobust \n",
"===============================================================================\n",
" coef std err t P>|t| [0.025 0.975]\n",
"-------------------------------------------------------------------------------\n",
"const 3441.8243 319.582 10.770 0.000 2815.436 4068.213\n",
"temp -59.3490 9.278 -6.397 0.000 -77.534 -41.164\n",
"month 5.3829 1.208 4.455 0.000 3.014 7.751\n",
"day 0.4194 0.446 0.941 0.347 -0.454 1.293\n",
"hour 23.6466 23.448 1.008 0.313 -22.312 69.605\n",
"day of week -265.9732 1.966 -135.301 0.000 -269.826 -262.120\n",
"temp_sqr 0.5342 0.067 7.990 0.000 0.403 0.665\n",
"temp_hr -0.2487 0.666 -0.373 0.709 -1.555 1.057\n",
"temp_sqr_hr 0.0015 0.005 0.329 0.742 -0.008 0.011\n",
"lag24 0.8882 0.002 455.789 0.000 0.884 0.892\n",
"==============================================================================\n",
"Omnibus: 6345.617 Durbin-Watson: 1.984\n",
"Prob(Omnibus): 0.000 Jarque-Bera (JB): 28825.590\n",
"Skew: 0.717 Prob(JB): 0.00\n",
"Kurtosis: 6.919 Cond. No. 5.85e+06\n",
"==============================================================================\n",
"\n",
"Warnings:\n",
"[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n",
"[2] The condition number is large, 5.85e+06. This might indicate that there are\n",
"strong multicollinearity or other numerical problems.\n"
]
}
],
"source": [
"print(result.summary())"
]
},
{
"cell_type": "code",
"execution_count": 122,
"metadata": {},
"outputs": [],
"source": [
"y_pred = result.predict(sm.add_constant(X_test[['temp', 'month', 'day', 'hour', 'day of week', 'temp_sqr',\n",
" 'temp_hr', 'temp_sqr_hr', 'lag24']]))"
]
},
{
"cell_type": "code",
"execution_count": 123,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"4.589"
]
},
"execution_count": 123,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mean_absolute_percentage_error(y_test,y_pred).round(3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The MAPE value is 4.589 and the r-squared value is 0.908"
...
SOLUTION.PDF

Answer To This Question Is Available To Download

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here