如何从OLS回归结果创建变量?

问题描述

import numpy as np
import pandas as pd
from scipy import stats
import statsmodels.api as sm 
import matplotlib.pyplot as plt

d = {'City': ['Tokyo','Tokyo','Lisbon','Madrid','London','Tokyo'],'Card': ['Visa','Visa','Master Card','Bitcoin','Bitcoin'],'Client Number':[1,2,3,4,5,6,7,8,9,10,11],}

d = pd.DataFrame(data=d).set_index('Client Number')

df = pd.get_dummies(d,prefix='',prefix_sep='')


X = df[['Lisbon','New York','No','Yes']]
Y = df['Total']

X1 = sm.add_constant(X)
reg = sm.OLS(Y,X1).fit()

reg.summary()

enter image description here

我想导入每个变量的系数,以便将模型应用于新数据。我该怎么办?

解决方法

reg.params包含参数估计。摘要中提供的其他数量可用reg.bse(标准误差),reg.tvalues(t统计量)和reg.pvalues(P值)提供。

全套可用属性可以在文档中看到:

https://www.statsmodels.org/devel/generated/statsmodels.regression.linear_model.RegressionResults.html

如果要将相同的参数应用于不同的数据集,最简单的方法是使用新数据构建新的OLS模型,例如,

mod = OLS(y_new,x_new)

,然后使用predict方法,

mod.predict(reg.params)

其中res.params来自您的原始身材。请注意,x_new必须在与原始回归相同的位置处具有相同的变量。