使用 statsmodels 从 OLS 模型获取转换后的 X 值

Getting transformed X values from OLS model using statsmodels

我正在尝试进行线性回归。结果我想将每个 x 与其自己的估计系数相乘:xi·βi.

不过,我在xi.

上做了很多变换

例如:

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

(我不确定我是否记得正确以下细节:在创建转换后的设计矩阵后 patsy returns 的数据应该是 pandas DataFrame,并且应该存储在 mod.data.orig_exog 或类似的地方。)

res.predict 自动处理转换,即 patsy 使用公式信息转换预测中解释变量的数据,其方式与创建模型时转换数据的方式相同。
predict 仅 returns 预测而不是内部转换的预测 exog