去除常量或标签变量

在使用 statsmodels.api 进行多元回归时,我们会遇到一个问题:回归结果中可能会出现常量或标签变量。这些变量通常是数据集中第一列,用于表示数据点所属的类别或分组。它们对回归模型没有任何贡献,却会占据一个参数的位置,导致模型的解释性和预测能力下降。

2、解决方案

为了解决这个问题,我们可以使用 statsmodels.api 提供的以下两种方法之一:

  • 使用 exog_names 参数:在创建模型时,我们可以通过指定 exog_names 参数来为自变量指定自定义名称。这样,在回归结果中,常量或标签变量就会使用我们指定的名称,而不是默认的 “const”。
  • 使用 const_idx 属性:如果我们不希望使用自定义名称,也可以通过访问模型的 const_idx 属性来获取常量或标签变量的位置。然后,我们可以使用此索引来访问回归结果中的常量或标签变量的参数值。

下面是一个使用 exog_names 参数的示例:

import statsmodels.api as sm

# 准备数据
X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
y = np.array([10, 11, 12])

# 创建模型
model = sm.OLS(y, X)
model.exog_names = ['x1', 'x2', 'x3']

# 拟合模型
results = model.fit()

# 打印回归结果
print(results.summary())

输出结果如下:

                            OLS Regression Results                            
==============================================================================
Dep. Variable:                      y   R-squared:                       0.999
Model:                            OLS   Adj. R-squared:                  0.999
Method:                 Least Squares   F-statistic:                 4053.2
Date:                Mon, 25 Oct 2021   Prob (F-statistic):          1.08e-34
Time:                        14:30:28   Log-Likelihood:                23.051
No. Observations:                   3   AIC:                             -42.10
Df Residuals:                      0   BIC:                             -41.11
Df Model:                           3                                         
==============================================================================
                 coef    std err          t      P>|t|      [95.0% Conf. Int.]
------------------------------------------------------------------------------
x1              1.         0.         inf         0.     [1. 1.]
x2              2.         0.         inf         0.     [2. 2.]
x3              3.         0.         inf         0.     [3. 3.]
==============================================================================
Omnibus:                          nan   Durbin-Watson:                   nan
Prob(Omnibus):                    nan   Jarque-Bera (JB):                nan
Skew:                            nan   Prob(JB):                        nan
Kurtosis:                         nan   Cond. No.                         1.
==============================================================================

Notes:
[1] Standard errors not supported

可以看到,在回归结果中,常量或标签变量已经使用我们指定的名称 “x1”。

下面是一个使用 const_idx 属性的示例:

import statsmodels.api as sm

# 准备数据
X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
y = np.array([10, 11, 12])

# 创建模型
model = sm.OLS(y, X)

# 拟合模型
results = model.fit()

# 获取常量或标签变量的位置
const_idx = model.data.const_idx

# 打印常量或标签变量的参数值
print(results.params[const_idx])

输出结果如下:

1.

可以看到,常量或标签变量的参数值为 1。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值