small.csv X1,X2,Y S,-0.1,19.19 S,2.53,22.74 S,4.86,23.91 M,0.26,7.07 M,2.55,7.93 M,4.87,8.93 L,0.08,20.63 L,2.62,23.46 L,5.09,25.75 __MACOSX/._small.csv part2.csv Month,Year,sales January,2012,...

1 answer below »

View more »
Answered Same DayMay 26, 2021

Answer To: small.csv X1,X2,Y S,-0.1,19.19 S,2.53,22.74 S,4.86,23.91 M,0.26,7.07 M,2.55,7.93 M,4.87,8.93...

Kshitij answered on May 28 2021
138 Votes
day-6archive-qu3zg0my-gk010hyi/.ipynb_checkpoints/Day6-checkpoint.ipynb
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# importing libraires \n",
"import pandas as pd\n",
"import numpy as np\n",
"from matplotlib import pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Example 1"
]
},
{
"cell_type": "code",
"execution_count": 2,
"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",
"
X1X2Y
0S-0.1019.19
1S2.5322.74
2S4.8623.91
3M0.267.07
4M2.557.93
\n",
"
"
],
"text/plain": [
" X1 X2 Y\n",
"0 S -0.10 19.19\n",
"1 S 2.53 22.74\n",
"2 S 4.86 23.91\n",
"3 M 0.26 7.07\n",
"4 M 2.55 7.93"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#loading small data\n",
"df = pd.read_csv('small.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 93,
"metadata": {},
"outputs": [],
"source": [
"# loading the statsmodel library \n",
"import statsmodels.formula.api as smf\n",
"import statsmodels.api as sm\n",
"from sklearn.preprocessing import LabelEncoder"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"# sklearn's label encoder\n",
"labelencoder = LabelEncoder()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"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",
"
X1X2Y
02-0.1019.19
122.5322.74
224.8623.91
310.267.07
412.557.93
514.878.93
600.0820.63
702.6223.46
805.0925.75
\n",
"
"
],
"text/plain": [
" X1 X2 Y\n",
"0 2 -0.10 19.19\n",
"1 2 2.53 22.74\n",
"2 2 4.86 23.91\n",
"3 1 0.26 7.07\n",
"4 1 2.55 7.93\n",
"5 1 4.87 8.93\n",
"6 0 0.08 20.63\n",
"7 0 2.62 23.46\n",
"8 0 5.09 25.75"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# encoding of labels\n",
"df['X1'] = labelencoder.fit_transform(df['X1'])\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"X = df[['X1', 'X2']] \n",
"y = df['Y']"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"c:\\users\\kaush\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\numpy\\core\\fromnumeric.py:2542: FutureWarning: Method .ptp is deprecated and will be removed in a future version. Use numpy.ptp instead.\n",
" return ptp(axis=axis, out=out, **kwargs)\n",
"c:\\users\\kaush\\appdata\\local\\programs\\python\\python36\\lib\\site-packages\\scipy\\stats\\stats.py:1535: UserWarning: kurtosistest only valid for n>=20 ... continuing anyway, n=9\n",
" \"anyway, n=%i\" % int(n))\n"
]
},
{
"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",
"
OLS Regression Results
Dep. Variable: Y R-squared: 0.053
Model: OLS Adj. R-squared: -0.263
Method: Least Squares F-statistic: 0.1665
Date: Thu, 28 May 2020 Prob (F-statistic): 0.850
Time: 05:12:53 Log-Likelihood: -30.212
No. Observations: 9 AIC: 66.42
Df Residuals: 6 BIC: 67.02
Df Model: 2
Covariance Type:nonrobust
\n",
"\n",
"\n",
" \n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"
coefstd errtP>|t|[0.0250.975]
const 16.3716 5.831 2.808 0.031 2.104 30.639
X1 -0.6019 3.474 -0.173 0.868 -9.103 7.899
X2 0.7769 1.428 0.544 0.606 -2.716 4.270
\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"
Omnibus: 3.603 Durbin-Watson: 0.961
Prob(Omnibus): 0.165 Jarque-Bera (JB): 1.553
Skew:-0.704 Prob(JB): 0.460
Kurtosis: 1.530 Cond. No. 7.65


Warnings:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified."
],
"text/plain": [
"\n",
"\"\"\"\n",
" OLS Regression Results \n",
"==============================================================================\n",
"Dep. Variable: Y R-squared: 0.053\n",
"Model: OLS Adj. R-squared: -0.263\n",
"Method: Least Squares F-statistic: 0.1665\n",
"Date: Thu, 28 May 2020 Prob (F-statistic): 0.850\n",
"Time: 05:12:53 Log-Likelihood: -30.212\n",
"No. Observations: 9 AIC: 66.42\n",
"Df Residuals: 6 BIC: 67.02\n",
"Df Model: 2 \n",
"Covariance Type: nonrobust \n",
"==============================================================================\n",
" coef std err t P>|t| [0.025 0.975]\n",
"------------------------------------------------------------------------------\n",
"const 16.3716 5.831 2.808 0.031 2.104 30.639\n",
"X1 -0.6019 3.474 -0.173 0.868 -9.103 7.899\n",
"X2 0.7769 1.428 0.544 0.606 -2.716 4.270\n",
"==============================================================================\n",
"Omnibus: 3.603 Durbin-Watson: 0.961\n",
"Prob(Omnibus): 0.165 Jarque-Bera (JB): 1.553\n",
"Skew: -0.704 Prob(JB): 0.460\n",
"Kurtosis: 1.530 Cond. No. 7.65\n",
"==============================================================================\n",
"\n",
"Warnings:\n",
"[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n",
"\"\"\""
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# fitting our model and printing the summery.\n",
"X = sm.add_constant(X)\n",
"model = sm.OLS(y, X).fit()\n",
"model.summary()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# part 2"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"# one hot coding for our labels\n",
"df = pd.concat([df,pd.get_dummies(df['X1'], prefix='X1',drop_first=True)],axis=1).drop(['X1'],axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"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",
"
X2YX1_1X1_2
0-0.1019.1901
12.5322.7401
24.8623.9101
30.267.0710
42.557.9310
54.878.9310
60.0820.6300
72.6223.4600
85.0925.7500
\n",
"
"
],
"text/plain": [
" X2 Y X1_1 X1_2\n",
"0 -0.10 19.19 0 1\n",
"1 2.53 22.74 0 1\n",
"2 4.86 23.91 0 1\n",
"3 0.26 7.07 1 0\n",
"4 2.55 7.93 1 0\n",
"5 4.87 8.93 1 0\n",
"6 0.08 20.63 0 0\n",
"7 2.62 23.46 0 0\n",
"8 5.09 25.75 0 0"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"X = df[['X1_1', 'X1_2','X2']] \n",
"y = df['Y']"
]
},
{
"cell_type": "code",
"execution_count": 11,
"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",
"
OLS Regression Results
Dep. Variable: Y R-squared: 0.993
Model: OLS Adj. R-squared: 0.988
Method: Least Squares F-statistic: 225.0
Date: Thu, 28 May 2020 Prob (F-statistic): 9.42e-06
Time: 05:12:53 Log-Likelihood: -8.3472
No. Observations: 9 AIC: 24.69
Df Residuals: 5 BIC: 25.48
Df Model: 3
Covariance Type:nonrobust
\n",
"\n",
"\n",
" \n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"
coefstd errtP>|t|[0.0250.975]
const 21.1624 0.594 35.645 0.000 19.636 22.689
X1_1 -15.2734 0.670 -22.792 0.000 -16.996 -13.551
X1_2 -1.1974 0.671 -1.786 0.134 -2.921 0.526
X2 0.8155 0.138 5.920 0.002 0.461 1.170
\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"
Omnibus: 0.672 Durbin-Watson: 1.798
Prob(Omnibus): 0.715 Jarque-Bera (JB): 0.529
Skew: 0.003 Prob(JB): 0.768
Kurtosis: 1.812 Cond. No. 11.4


Warnings:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified."
],
"text/plain": [
"\n",
"\"\"\"\n",
" OLS Regression Results \n",
"==============================================================================\n",
"Dep. Variable: Y R-squared: 0.993\n",
"Model: OLS Adj. R-squared: 0.988\n",
"Method: Least Squares F-statistic: 225.0\n",
"Date: Thu, 28 May 2020 Prob (F-statistic): 9.42e-06\n",
"Time: 05:12:53 Log-Likelihood: -8.3472\n",
"No. Observations: 9 AIC: 24.69\n",
"Df Residuals: 5 BIC: 25.48\n",
"Df Model: 3 \n",
"Covariance Type: nonrobust \n",
"==============================================================================\n",
" coef std err t P>|t| [0.025 0.975]\n",
"------------------------------------------------------------------------------\n",
"const 21.1624 0.594 35.645 0.000 19.636 22.689\n",
"X1_1 -15.2734 0.670 -22.792 0.000 -16.996 -13.551\n",
"X1_2 -1.1974 0.671 -1.786 0.134 -2.921 0.526\n",
"X2 0.8155 0.138 5.920 0.002 0.461 1.170\n",
"==============================================================================\n",
"Omnibus: 0.672 Durbin-Watson: 1.798\n",
"Prob(Omnibus): 0.715 Jarque-Bera (JB): 0.529\n",
"Skew: 0.003 Prob(JB): 0.768\n",
"Kurtosis: 1.812 Cond. No. 11.4\n",
"==============================================================================\n",
"\n",
"Warnings:\n",
"[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n",
"\"\"\""
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# again fiting data but with one hot coded labels\n",
"X = sm.add_constant(X)\n",
"model2 = sm.OLS(y, X).fit()\n",
"model2.summary()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Example 2"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"scrolled": true
},
"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",
"
MonthYearsales
0January2012NaN
1February2012NaN
2March2012NaN
3April2012NaN
4May2012NaN
\n",
"
"
],
"text/plain": [
" Month Year sales\n",
"0 January 2012 NaN\n",
"1 February 2012 NaN\n",
"2 March 2012 NaN\n",
"3 April 2012 NaN\n",
"4 May 2012 NaN"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# loading data for second part\n",
"df = pd.read_csv('part2.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {},
"outputs": [],
"source": [
"# gnearting period data \n",
"k=list(range(1, len(df.Month)+1))"
]
},
{
"cell_type": "code",
"execution_count": 64,
"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",
"
MonthYearsalesPeriod
0January2012NaN1
1February2012NaN2
2March2012NaN3
3April2012NaN4
4May2012NaN5
\n",
"
"
],
"text/plain": [
" Month Year sales Period\n",
"0 January 2012 NaN 1\n",
"1 February 2012 NaN 2\n",
"2 March 2012 NaN 3\n",
"3 April 2012 NaN 4\n",
"4 May 2012 NaN 5"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[\"Period\"]=k\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {},
"outputs": [],
"source": [
"# formulating our model based on data frame column names \n",
"mod = smf.ols(formula='sales ~ Period', data=df)"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [],
"source": [
"# fitting our model\n",
"res = mod.fit()"
]
},
{
"cell_type": "code",
"execution_count": 67,
"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",
"
OLS Regression Results
Dep. Variable:sales R-squared: 0.044
Model: OLS Adj. R-squared: 0.023
Method: Least Squares F-statistic: 2.121
Date: Thu, 28 May 2020 Prob (F-statistic): 0.152
Time: 05:32:38 Log-Likelihood: -42.960
No. Observations: 48 AIC: 89.92
Df Residuals: 46 BIC: 93.66
Df Model: 1
Covariance Type:nonrobust
\n",
"\n",
"\n",
" \n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"
coefstd errtP>|t|[0.0250.975]
Intercept 2.1355 0.223 9.590 0.000 1.687 2.584
Period 0.0092 0.006 1.456 0.152 -0.004 0.022
\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"
Omnibus:34.103 Durbin-Watson: 1.733
Prob(Omnibus): 0.000 Jarque-Bera (JB): 71.518
Skew: 2.147 Prob(JB): 2.95e-16
Kurtosis: 7.161 Cond. No. 90.2


Warnings:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified."
],
"text/plain": [
"\n",
"\"\"\"\n",
" OLS Regression Results \n",
"==============================================================================\n",
"Dep. Variable: sales R-squared: 0.044\n",
"Model: OLS Adj. R-squared: 0.023\n",
"Method: Least Squares F-statistic: 2.121\n",
"Date: Thu, 28 May 2020 Prob (F-statistic): 0.152\n",
"Time: 05:32:38 Log-Likelihood: -42.960\n",
"No. Observations: 48 AIC: 89.92\n",
"Df Residuals: 46 BIC: 93.66\n",
"Df Model: 1 \n",
"Covariance Type: nonrobust \n",
"==============================================================================\n",
" coef std err t P>|t| [0.025 0.975]\n",
"------------------------------------------------------------------------------\n",
"Intercept 2.1355 0.223 9.590 0.000 1.687 2.584\n",
"Period 0.0092 0.006 1.456 0.152 -0.004 0.022\n",
"==============================================================================\n",
"Omnibus: 34.103 Durbin-Watson: 1.733\n",
"Prob(Omnibus): 0.000 Jarque-Bera (JB): 71.518\n",
"Skew: 2.147 Prob(JB): 2.95e-16\n",
"Kurtosis: 7.161 Cond. No. 90.2\n",
"==============================================================================\n",
"\n",
"Warnings:\n",
"[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n",
"\"\"\""
]
},
"execution_count": 67,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# summery\n",
"res.summary()"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [],
"source": [
"# predicting our sales based on period\n",
"prediction = res.predict(df['Period'])\n",
"df['Prediction']=prediction"
]
},
{
"cell_type": "code",
"execution_count": 72,
"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",
"
MonthYearsalesPeriodPrediction
0January2012NaN12.144635
1February2012NaN22.153814
2March2012NaN32.162992
3April2012NaN42.172170
4May2012NaN52.181348
\n",
"
"
],
"text/plain": [
" Month Year sales Period Prediction\n",
"0 January 2012 NaN 1 2.144635\n",
"1 February 2012 NaN 2 2.153814\n",
"2 March 2012 NaN 3 2.162992\n",
"3 April 2012 NaN 4 2.172170\n",
"4 May 2012 NaN 5 2.181348"
]
},
"execution_count": 72,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 74,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# ploting the prediction and sales with respect to year. \n",
"df.plot(x='Year', y=['sales', 'Prediction'], figsize=(10,5))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# model using year and period "
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [],
"source": [
"# now formulating our model on period and year as predictors and sales as target\n",
"mod = smf.ols(formula='sales ~ Period + Year', data=df)"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [],
"source": [
"# fitting our model\n",
"res = mod.fit()"
]
},
{
"cell_type": "code",
"execution_count": 78,
"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",
"
OLS Regression Results
Dep. Variable:sales R-squared: 0.343
Model: OLS Adj. R-squared: 0.314
Method: Least Squares F-statistic: 11.75
Date: Thu, 28 May 2020 Prob (F-statistic): 7.86e-05
Time: 05:42:34 Log-Likelihood: -33.960
No. Observations: 48 AIC: 73.92
Df Residuals: 45 BIC: 79.53
Df Model: 2
Covariance Type:nonrobust
\n",
"\n",
"\n",
" \n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"
coefstd errtP>|t|[0.0250.975]
Intercept 2325.9544 513.588 4.529 0.000 1291.534 3360.374
Period 0.1075 0.022 4.807 0.000 0.062 0.153
Year -1.1553 0.255 -4.525 0.000 -1.670 -0.641
\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"
Omnibus:12.873 Durbin-Watson: 1.313
Prob(Omnibus): 0.002 Jarque-Bera (JB): 13.627
Skew: 1.076 Prob(JB): 0.00110
Kurtosis: 4.478 Cond. No. 1.41e+07


Warnings:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 1.41e+07. This might indicate that there are
strong multicollinearity or other numerical problems."
],
"text/plain": [
"\n",
"\"\"\"\n",
" OLS Regression Results \n",
"==============================================================================\n",
"Dep. Variable: sales R-squared: 0.343\n",
"Model: OLS Adj. R-squared: 0.314\n",
"Method: Least Squares F-statistic: 11.75\n",
"Date: Thu, 28 May 2020 Prob (F-statistic): 7.86e-05\n",
"Time: 05:42:34 Log-Likelihood: -33.960\n",
"No. Observations: 48 AIC: 73.92\n",
"Df Residuals: 45 BIC: 79.53\n",
"Df Model: 2 \n",
"Covariance Type: nonrobust \n",
"==============================================================================\n",
" coef std err t P>|t| [0.025 0.975]\n",
"------------------------------------------------------------------------------\n",
"Intercept 2325.9544 513.588 4.529 0.000 1291.534 3360.374\n",
"Period 0.1075 0.022 4.807 0.000 0.062 0.153\n",
"Year -1.1553 0.255 -4.525 0.000 -1.670 -0.641\n",
"==============================================================================\n",
"Omnibus: 12.873 Durbin-Watson: 1.313\n",
"Prob(Omnibus): 0.002 Jarque-Bera (JB): 13.627\n",
"Skew: 1.076 Prob(JB): 0.00110\n",
"Kurtosis: 4.478 Cond. No. 1.41e+07\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, 1.41e+07. This might indicate that there are\n",
"strong multicollinearity or other numerical problems.\n",
"\"\"\""
]
},
"execution_count": 78,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# summery\n",
"res.summary()"
]
},
{
"cell_type": "code",
"execution_count": 82,
"metadata": {},
"outputs": [],
"source": [
"# predicting the sales based on period and year. \n",
"prediction2 = res.predict(df[['Period','Year']])\n",
"df['Prediction2']=prediction2"
]
},
{
"cell_type": "code",
"execution_count": 83,
"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",
"
MonthYearsalesPeriodPredictionPrediction2
0January2012NaN12.1446351.550586
1February2012NaN22.1538141.658089
2March2012NaN32.1629921.765593
3April2012NaN42.1721701.873097
4May2012NaN52.1813481.980600
\n",
"
"
],
"text/plain": [
" Month Year sales Period Prediction Prediction2\n",
"0 January 2012 NaN 1 2.144635 1.550586\n",
"1 February 2012 NaN 2 2.153814 1.658089\n",
"2 March 2012 NaN 3 2.162992 1.765593\n",
"3 April 2012 NaN 4 2.172170 1.873097\n",
"4 May 2012 NaN 5 2.181348 1.980600"
]
},
"execution_count": 83,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 84,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png":...
SOLUTION.PDF

Answer To This Question Is Available To Download

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here
April
January
February
March
April
May
June
July
August
September
October
November
December
2025
2025
2026
2027
SunMonTueWedThuFriSat
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
00:00
00:30
01:00
01:30
02:00
02:30
03:00
03:30
04:00
04:30
05:00
05:30
06:00
06:30
07:00
07:30
08:00
08:30
09:00
09:30
10:00
10:30
11:00
11:30
12:00
12:30
13:00
13:30
14:00
14:30
15:00
15:30
16:00
16:30
17:00
17:30
18:00
18:30
19:00
19:30
20:00
20:30
21:00
21:30
22:00
22:30
23:00
23:30