【问题标题】:Statsmodels Linear regression: set value for a variableStatsmodels 线性回归:为变量设置值
【发布时间】:2017-11-21 18:16:52
【问题描述】:

我一直在使用 Statsmodels 的 OLS 部分来确定一组测量的一些变量。基本格式没什么特别的,示例如下。

model = smf.ols('Out ~ l0 + l1 + l2 + l3 - 1', data = df_results).fit()

我已经运行了模型并获得了所有变量(L0、L1、L2 等)的值。本质上,我正在寻找一个函数或一些工具(我似乎找不到),我可以在其中为 L3 设置一个值,然后确定 L0、L1 和 L2 的新值是什么,用于同一组测量.

【问题讨论】:

    标签: python statsmodels


    【解决方案1】:

    最简单的方法是从因变量中减去已知项。

    offset = b_known * x_i
    y_diff = y - offset
    

    然后在剩余的解释变量上回归 y_diff,即在这种情况下

    res = smf.ols('Out_diff ~ l0 + l1 + l2 - 1', data = df_results).fit()
    

    这在非线性模型中是不可能的,因为我们不能只将已知项从右侧移动到左侧。因此,一些非线性模型如 GLM 和离散计数变量模型采用偏移量参数,它本质上是一个固定系数等于 1 的解释变量。

    这表示上面等价于

    res_glm = smf.glm('Out ~ l0 + l1 + l2 - 1', data = df_results, offset=offset).fit()
    

    上面定义的偏移量。 glm 中的默认族是 gaussian ,身份为默认链接。

    更一般的线性(或仿射)限制除了使用偏移量外,还需要对设计矩阵进行重新参数化。这目前仅适用于 fit_constrained 中的 GLM,参见示例

    Constrained regression in PythonHow to add sum to zero constraint to GLM in Python?

    【讨论】:

    • 谢谢!我需要使用 GLM 模型,只是快速阅读了文档并在我的代码中进行了尝试。看起来这正是我需要的!再次感谢
    猜你喜欢
    • 1970-01-01
    • 2018-04-24
    • 2016-08-26
    • 2014-12-19
    • 2018-01-13
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    相关资源
    最近更新 更多