【问题标题】:Getting transformed X values from OLS model using statsmodels使用 statsmodels 从 OLS 模型中获取转换后的 X 值
【发布时间】:2020-07-03 04:01:46
【问题描述】:

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

但是,我在 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 来获取它。

【问题讨论】:

    标签: python regression statsmodels


    【解决方案1】:

    数据存储为模型的属性,例如设计矩阵为mod.exog,因变量或响应变量为mod.endog

    (我不确定我是否记错了以下细节:在这种情况下,patsy 在创建转换后的设计矩阵后返回的数据应该是 pandas DataFrame,并且应该存储在 mod.data.orig_exog 或其他东西中像这样。)

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

    【讨论】:

    • @SimonTeggelaar 这是该网站的核心功能,在Tour 的第一部分中进行了介绍(诚然,如果您像我现在一样正在寻找它,那么很难找到它,但它应该在您创建帐户时提供给您)。
    猜你喜欢
    • 2022-06-08
    • 1970-01-01
    • 2015-11-18
    • 2020-11-23
    • 2023-02-15
    • 2015-10-10
    • 2014-04-09
    • 2018-10-17
    • 1970-01-01
    相关资源
    最近更新 更多