python - 线性回归不对称系数 - python 中的双 beta

标签 python regression coefficients asymmetric

在回归框架中,假设我们有两个自变量 x1x2我们需要不同的坡度取决于 x1>0x1<0 , 与 x2 相同.这种模型用于计算 dual beta ,如果您需要文献的切入点。

该主题已在交叉验证网站 (Link) 上展示,所以现在我正在尝试对其进行编码。我的第一次尝试是使用 statsmodels这是一个经典的线性回归模型:

import numpy as np
import statsmodels.api as sm

spector_data = sm.datasets.spector.load()
spector_data.exog = sm.add_constant(spector_data.exog, prepend=False)

# Fit and summarize OLS model
mod = sm.OLS(spector_data.endog, spector_data.exog)

res = mod.fit()
print(res.summary())

==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
x1             0.4639      0.162      2.864      0.008       0.132       0.796
x2             0.0105      0.019      0.539      0.594      -0.029       0.050
x3             0.3786      0.139      2.720      0.011       0.093       0.664
const         -1.4980      0.524     -2.859      0.008      -2.571      -0.425
==============================================================================

假设它是不对称的,所以我们想对其进行量化,那么如何实现积极和消极的影响?(双 beta 系数)

作为预期的格式输出,我们会有类似的东西(为了举例而虚构的值):

==============================================================================
              coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
x1+            0.1031      0.162      2.864      0.008       0.132       0.796
x1-            0.4639      0.162      2.864      0.008       0.132       0.796
x2+            0.0111      0.019      0.539      0.594      -0.029       0.050
x2-            0.212       0.019      0.539      0.594      -0.029       0.050
x3             0.3786      0.139      2.720      0.011       0.093       0.664
const         -1.4980      0.524     -2.859      0.008      -2.571      -0.425
==============================================================================

最佳答案

从研究来看,至少有两种可能性。

  • 关于 X>0|X<0 的拆分变量与主题中提供的链接相关:

    df["GPA+"] = (df["GPA"] >= 0) * df["GPA"]

    df["GPA-"] = (df["GPA"] < 0) * df["GPA"]

  • 当具有时间属性时,可以从变量随时间的递增/递减来考虑双重 beta,这是关于对列进行差分,以便可以为两个概念计算估计值。

    df["diff_GPA"] = df["GPA"].diff(period=1)

    df["diff_GPA+"] = (df["diff_GPA"] >= 0) * df["GPA"]

    df["diff_GPA-"] = (df["diff_GPA"] < 0) * df["GPA"]

在这两种情况下,根据数据集的性质,可以使用此特征工程步骤计算双重 beta。因此,估计值可以用 OLS 进行解释。

关于python - 线性回归不对称系数 - python 中的双 beta,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74078098/

相关文章:

r - R 中的多项式回归 - 对曲线有额外的约束

r - 最小二乘回归系数的非线性函数的标准误差和置信区间

Python 正则表达式不返回电话号码

scala - 如何在 Spark MLlib 中设置自定义损失函数

python - ReportLab 中的非编号页面

python - 如何在 Python 中进行三次或更高多项式多元回归?

javascript - Eloquent Javascript - 相关性和系数

statistics - 如何解释双对数市场组合模型中的系数

python - 使用 twisted.trial.unittest 时 react 堆在测试之间停止

javascript - django 中动态形式的 csrf token 错误