In [2]:
import pandas as pa
#Données reliant un nombre de ventes et l’investissement dans différents médias. 
#Le modèle de régression multiple a une variable dépendante y mesurant le nombre de ventes 
#et 3 variables indépendantes mesurant les investissements en terme de publicité par média.
data = pa.read_csv('advertising.csv')
data.head()
Out[2]:
TV Radio Newspaper Sales
0 230.1 37.8 69.2 22.1
1 44.5 39.3 45.1 10.4
2 17.2 45.9 69.3 9.3
3 151.5 41.3 58.5 18.5
4 180.8 10.8 58.4 12.9
In [ ]:
 
In [3]:
Y = data.Sales
X_cols = data.columns.drop('Sales')
X = data[X_cols]
Y.head()
Out[3]:
0    22.1
1    10.4
2     9.3
3    18.5
4    12.9
Name: Sales, dtype: float64
In [11]:
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X, Y)
print(model.intercept_)
print(model.coef_)
3.0470843085824786
[ 0.04478903  0.1937615  -0.00240081]
In [5]:
model = LinearRegression()
model.fit(X, Y)
Out[5]:
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)
In [6]:
print(model.intercept_)
3.0470843085824786
In [7]:
print(model.coef_)
[ 0.04478903  0.1937615  -0.00240081]
In [12]:
from statsmodels.regression.linear_model import OLS
m = OLS(Y,X)
results = m.fit()
su = results.summary()
su
Out[12]:
OLS Regression Results
Dep. Variable: Sales R-squared (uncentered): 0.979
Model: OLS Adj. R-squared (uncentered): 0.979
Method: Least Squares F-statistic: 3091.
Date: Tue, 10 Dec 2019 Prob (F-statistic): 2.40e-165
Time: 21:58:21 Log-Likelihood: -437.56
No. Observations: 200 AIC: 881.1
Df Residuals: 197 BIC: 891.0
Df Model: 3
Covariance Type: nonrobust
coef std err t P>|t| [0.025 0.975]
TV 0.0531 0.001 37.422 0.000 0.050 0.056
Radio 0.2296 0.010 22.877 0.000 0.210 0.249
Newspaper 0.0158 0.007 2.206 0.029 0.002 0.030
Omnibus: 24.277 Durbin-Watson: 2.053
Prob(Omnibus): 0.000 Jarque-Bera (JB): 83.215
Skew: 0.371 Prob(JB): 8.51e-19
Kurtosis: 6.072 Cond. No. 12.5


Warnings:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
In [35]:
def predict(x):
    return model.coef_ * x + model.intercept_
In [36]:
print(predict([0, 0, 0, 0]))
[ 3.00520942  3.00520942  3.00520942  3.00520942]
In [37]:
#On évalue alors le modèle
#On calcule d'abords R^2 :
model.score(X, Y)
Out[37]:
0.89725083704480435