2015-05-11 3 views
2

В настоящее время я пытаюсь реализовать MLR в Python и не знаю, как я применяю коэффициенты, которые я нашел для будущих значений.Прогнозирование будущих значений с использованием регрессии OLS (Python, StatsModels, Pandas)

import pandas as pd 
import statsmodels.formula.api as sm 
import statsmodels.api as sm2 

TV = [230.1, 44.5, 17.2, 151.5, 180.8] 
Radio = [37.8,39.3,45.9,41.3,10.8] 
Newspaper = [69.2,45.1,69.3,58.5,58.4] 
Sales = [22.1, 10.4, 9.3, 18.5,12.9] 
df = pd.DataFrame({'TV': TV, 
        'Radio': Radio, 
        'Newspaper': Newspaper, 
        'Sales': Sales}) 

Y = df.Sales 
X = df[['TV','Radio','Newspaper']] 
X = sm2.add_constant(X) 
model = sm.OLS(Y, X).fit() 
>>> model.params 
const  -0.141990 
TV   0.070544 
Radio  0.239617 
Newspaper -0.040178 
dtype: float64 

Итак, давайте скажем, я хочу, чтобы предсказать, из «продажи» для следующего DataFrame:

EDIT 

TV  Radio Newspaper Sales 
230.1 37,8  69.2  22.4 
44.5 39.3  45.1  10.1 
... ...  ...  ... 
25  15  15 
30  20  22 
35  22  36 

Я пытался метод, который я нашел здесь, но я не могу заставить его работать : Forecasting using Pandas OLS

Спасибо!

ответ

5

Предполагая df2 ваш новый из образца DataFrame:

model = sm.OLS(Y, X).fit() 
new_x = df2.loc[df.Sales.notnull(), ['TV', 'Radio', 'Newspaper']].values 
new_x = sm2.add_constant(new_x) # sm2 = statsmodels.api 
y_predict = model.predict(new_x) 

>>> y_predict 
array([ 4.61319034, 5.88274588, 6.15220225]) 

Вы можете присвоить результаты непосредственно df2 следующим образом:

df2.loc[:, 'Sales'] = model.predict(new_x) 

Чтобы заполнить недостающие значения продаж из оригинального DataFrame с предсказаниями из вашей регрессии, попробуйте:

X = df.loc[df.Sales.notnull(), ['TV', 'Radio', 'Newspaper']] 
X = sm2.add_constant(X) 
Y = df[df.Sales.notnull()].Sales 

model = sm.OLS(Y, X).fit() 
new_x = df.loc[df.Sales.isnull(), ['TV', 'Radio', 'Newspaper']] 
new_x = sm2.add_constant(new_x) # sm2 = statsmodels.api 

df.loc[df.Sales.isnull(), 'Sales'] = model.predict(new_x) 
Смежные вопросы