在回归框架中,假设我们有两个自变量 x1
和 x2
我们需要不同的坡度取决于 x1>0
或 x1<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/