我正在尝试进行线性回归。对于结果,我想将每个x与其自己的估计系数相乘:x i·β i。
但是,我在x i上做了很多转换。
例如:
import statsmodels.api as sm
import statsmodels.formula.api as smf
import numpy as np
def log_plus_1(x):
return np.log(x + 1.0)
df = sm.datasets.get_rdataset("Guerry", "HistData").data
df = df[['Lottery', 'Literacy', 'Wealth', 'Region']].dropna()
formule = 'Lottery ~ pow(Literacy,2) + log_plus_1(Wealth)'
mod = smf.ols(formula=formule, data=df)
res = mod.fit()
res.params
现在我需要pow(Literacy, 2)
和log_plus_1(Wealth)
。但是,由于它们进入了模型,所以我也希望能将它们从模型中删除。而不是转换原始数据集中的数据。
在R中,我将使用res$model
来获取它。
数据存储为模型的属性,例如设计矩阵为mod.exog
,因变量或响应变量为mod.endog
。
mod.data.orig_exog
自动处理转换,即patsy使用公式信息对预测中的解释变量进行数据转换,其方式与在创建模型时对数据进行转换的方式相同。res.predict
仅返回预测,而不返回内部转换的预测predict
。