Python OLS 双向逐步回归

该博客详细介绍了如何使用逐步回归方法进行数据分析。通过Python的statsmodels库,逐步回归算法选择最优解释变量,逐步建立一元及多元线性回归模型。在每一步迭代中,算法检查新引入变量的显著性,确保模型的稳定性。最终,该方法用于从大量解释变量中筛选出对目标变量影响最大的变量,生成相应的回归方程式,并将结果输出到.txt文件中。

算法基本思路:首先需要确定一个因变量y以此构建一元回归方程,再找到已通过显著性检验的一元线性回归方程中F值最大的解释变量x0,将其并入回归方程中,再分别将剩余的解释变量与解释变量x0作为OLS函数的自变量集拟合回归方程,同样找出其中F值最大的自变量集,如果该自变量集均能通过显著性检验则将该解释变量并入回归方程中并进行下一轮的迭代,否则舍弃该解释变量,并找出F值第二大的自变量集继续对其进行显著性检验。

import pandas as pd
import numpy as np
import statsmodels.api as sm


def test_significance(data, dv, src_idvs):
    model = sm.OLS(data.loc[:, dv], data.loc[:, src_idvs]).fit()
    for p in model.pvalues:
        if p > 0.05:
            return False
    else:
        return True


def find_max_F(data, dv, idvs, res_idvs):
    F_max = -1
    idv_F_max = None
    res_model = None
    for idv in idvs:
        new_idvs = res_idvs.copy()
        new_idvs.append(idv)  # 加入新解释变量找出F最大值
        model = sm.OLS(data.loc[:, dv], sm.add_constant(
            data.loc[:, new_idvs])).fit()
        F = model.fvalue
        if F > F_max:
            F_max = F
            idv_F_max = idv
            res_model = model
    return F_max, idv_F_max, res_model
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值