返回顶部
首页 > 资讯 > 后端开发 > Python >如何用python做逐步回归
  • 477
分享到

如何用python做逐步回归

2024-04-02 19:04:59 477人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录算法介绍数据情况案例数据代码结果算法介绍 逐步回归是一种线性回归模型自变量选择方法; 逐步回归的基本思想是将变量逐个引入模型,每引入一个解释变量后都要进行F检验,并对已经选入的

算法介绍

逐步回归是一种线性回归模型自变量选择方法;
逐步回归的基本思想是将变量逐个引入模型,每引入一个解释变量后都要进行F检验,并对已经选入的解释变量逐个进行t检验,当原来引入的解释变量由于后面解释变量的引入变得不再显著时,则将其删除。以确保每次引入新的变量之前回归方程中只包含显著性变量。这是一个反复的过程,直到既没有显著的解释变量选入回归方程,也没有不显著的解释变量从回归方程中剔除为止。以保证最后所得到的解释变量集是最优的。
这里我们选择赤池信息量(Akaike InfORMation Criterion)来作为自变量选择的准则,赤池信息量(AIC)达到最小:基于最大似然估计原理的模型选择准则。

数据情况

案例

在现实生活中,影响一个地区居民消费的因素有很多,例如一个地区的人均生产总值、收入水平等等,本案例选取了9个解释变量研究城镇居民家庭平均每人全年的消费新支出y,解释变量为:
x1——居民的食品花费
x2——居民的衣着消费
x3——居民的居住花费
x4——居民的医疗保健花费
x5——居民的文教娱乐花费
x6——地区的职工平均工资
x7——地区的人均GDP
x8——地区的消费价格指数
x9——地区的失业率(%)

数据

代码


# -*- coding: UTF-8 -*-

import numpy as np
import statsmodels.api as sm
import statsmodels.formula.api as smf
from statsmodels.stats.api import anova_lm
import matplotlib.pyplot as plt
import pandas as pd
from patsy import dmatrices
import itertools as it
import random


# Load data 读取数据
df = pd.read_csv('data3.1.csv',encoding='gbk')
print(df)


target = 'y'
variate = set(df.columns) #获取列名
variate.remove(target) #去除无关列
variate.remove('地区')

#定义多个数组,用来分别用来添加变量,删除变量
x = []
variate_add = []
variate_del = variate.copy()
# print(variate_del)
y = random.sample(variate,3) #随机生成一个选模型,3为变量的个数
print(y)
#将随机生成的三个变量分别输入到 添加变量和删除变量的数组
for i in y:
 variate_add.append(i)
 x.append(i)
 variate_del.remove(i)

global aic #设置全局变量 这里选择AIC值作为指标
formula="{}~{}".format("y","+".join(variate_add)) #将自变量名连接起来
aic=smf.ols(formula=formula,data=df).fit().aic #获取随机函数的AIC值,与后面的进行对比
print("随机化选模型为:{}~{},对应的AIC值为:{}".format("y","+".join(variate_add), aic))
print("\n")



#添加变量
def forwark():
 score_add = []
 global best_add_score
 global best_add_c
 print("添加变量")
 for c in variate_del:
  formula = "{}~{}".format("y", "+".join(variate_add+[c]))
  score = smf.ols(formula = formula, data = df).fit().aic
  score_add.append((score, c)) #将添加的变量,以及新的AIC值一起存储在数组中
  
  print('自变量为{},对应的AIC值为:{}'.format("+".join(variate_add+[c]), score))

 score_add.sort(reverse=True) #对数组内的数据进行排序,选择出AIC值最小的
 best_add_score, best_add_c = score_add.pop()
 
 print("最小AIC值为:{}".format(best_add_score))
 print("\n")

#删除变量
def back():
 score_del = []
 global best_del_score
 global best_del_c
 print("剔除变量")
 for i in x:

  select = x.copy() #copy一个集合,避免重复修改到原集合
  select.remove(i)
  formula = "{}~{}".format("y","+".join(select))
  score = smf.ols(formula = formula, data = df).fit().aic
  print('自变量为{},对应的AIC值为:{}'.format("+".join(select), score))
  score_del.append((score, i))

 score_del.sort(reverse=True) #排序,方便将最小值输出
 best_del_score, best_del_c = score_del.pop() #将最小的AIC值以及对应剔除的变量分别赋值
 print("最小AIC值为:{}".format(best_del_score))
 print("\n")

print("剩余变量为:{}".format(variate_del))
forwark()
back()

while variate:
  
#  forwark()
#  back()
 if(aic < best_add_score < best_del_score or aic < best_del_score < best_add_score):
  print("当前回归方程为最优回归方程,为{}~{},AIC值为:{}".format("y","+".join(variate_add), aic))
  break
 elif(best_add_score < best_del_score < aic or best_add_score < aic < best_del_score):
  print("目前最小的aic值为{}".format(best_add_score))
  print('选择自变量:{}'.format("+".join(variate_add + [best_add_c]))) 
  print('\n')
  variate_del.remove(best_add_c)
  variate_add.append(best_add_c)
  print("剩余变量为:{}".format(variate_del))
  aic = best_add_score
  forwark()
 else:
  print('当前最小AIC值为:{}'.format(best_del_score))
  print('需要剔除的变量为:{}'.format(best_del_c))
  aic = best_del_score #将AIC值较小的选模型AIC值赋给aic再接着下一轮的对比
  x.remove(best_del_c) #在原集合上剔除选模型所对应剔除的变量
  back()
  

结果

以上就是如何用python 做逐步回归的详细内容,更多关于Python 逐步回归的资料请关注编程网其它相关文章!

--结束END--

本文标题: 如何用python做逐步回归

本文链接: https://lsjlt.com/news/122943.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何用python做逐步回归
    目录算法介绍数据情况案例数据代码结果算法介绍 逐步回归是一种线性回归模型自变量选择方法; 逐步回归的基本思想是将变量逐个引入模型,每引入一个解释变量后都要进行F检验,并对已经选入的...
    99+
    2024-04-02
  • 使用python怎么实现逐步回归
    本篇文章为大家展示了使用python怎么实现逐步回归,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。算法介绍逐步回归是一种线性回归模型自变量选择方法;逐步回归的基本思想是将变量逐个引入模型,每引入一个...
    99+
    2023-06-14
  • R语言如何实现前向逐步回归
    这篇文章主要介绍了R语言如何实现前向逐步回归,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前向逐步回归原理前向逐步回归的过程是:遍历属性的一列子集,选择使模型效果最好的那一列...
    99+
    2023-06-20
  • python的自变量选择(所有子集回归,后退法,逐步回归)
    目录1、为什么需要自变量选择?2、自变量选择的几个准则(1)自由度调整复决定系数达到最大(2)赤池信息量AIC达到最小3、所有子集回归(1)算法思想(2)数据集情况(3)代码部分(4...
    99+
    2024-04-02
  • matlab如何做多元回归分析
    在MATLAB中进行多元回归分析可以使用fitlm函数。该函数可以拟合线性模型,并计算模型的系数、残差等信息。以下是一个示例代码: ...
    99+
    2024-04-02
  • 如何使用R语言做逻辑回归详解
    目录前言首先加载需要用的包接下来建模最后我们可以根据模型来预测啦总结 前言 回归的本质是建立一个模型用来预测,而逻辑回归的独特性在于,预测的结果是只能有两种,true or...
    99+
    2024-04-02
  • Python如何实现岭回归
    这篇文章主要介绍“Python如何实现岭回归”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python如何实现岭回归”文章能帮助大家解决问题。1 概述1.1 线性回归对于一般地线性回归问题,参数的求...
    99+
    2023-06-26
  • Python回归树如何实现
    本篇内容介绍了“Python回归树如何实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先导入库import pandas&nb...
    99+
    2023-06-30
  • 详解R语言实现前向逐步回归(前向选择模型)
    目录前向逐步回归原理数据导入并分组导入数据特征与标签分开存放前向逐步回归构建输出特征集合从空开始一次创建属性列表模型效果评估前向逐步回归原理 前向逐步回归的过程是:遍历属性的一列子集...
    99+
    2024-04-02
  • 如何掌握Python线性回归
    这篇文章主要讲解了“如何掌握Python线性回归”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何掌握Python线性回归”吧!1. 准备开始之前,你要确保Python和pip已经成功安装在...
    99+
    2023-06-16
  • Python如何实现多项式回归
    今天就跟大家聊聊有关Python如何实现多项式回归,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几...
    99+
    2023-06-26
  • Python scikit-learn 做线性回归的示例代码
    一、概述 机器学习算法在近几年大数据点燃的热火熏陶下已经变得被人所“熟知”,就算不懂得其中各算法理论,叫你喊上一两个著名算法的名字,你也能昂首挺胸脱口而出。当然了,算法之林虽大,但能者还是有限,能适应某些...
    99+
    2022-06-04
    示例 线性 代码
  • 如何用Python进行回归分析与相关分析
    目录一、前言1.1 回归分析1.2 相关分析二、代码的编写2.1 前期准备2.2 编写代码2.2.1 相关分析 2.2.2 一元线性回归分析 2.2.3 多元线性...
    99+
    2023-03-22
    python python回归分析 python相关分析
  • iOS如何实现逐帧动画做loading视图
    这篇文章给大家分享的是有关iOS如何实现逐帧动画做loading视图的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下我封装了一个可复用的loading视图组件,用于按照一定周期逐帧播放加载动画。代码如下...
    99+
    2023-06-15
  • 学习如何在Python中逐步输入浮点型数据
    逐步学习:Python中浮点型数据的输入方式,需要具体代码示例 一个完整的编程语言必然需要提供一种可以输入数据的方法,Python也不例外。在Python中,我们可以通过多种方式输入浮点型数据。下面将逐步介绍Python中浮点型...
    99+
    2024-02-03
    python 输入方式 浮点型数据 python程序
  • python如何建立多元线性回归模型
    要建立一个多元线性回归模型,可以使用Python中的统计库或机器学习库来实现。以下是使用statsmodels和scikit-lea...
    99+
    2024-04-02
  • 如何逐步提高JavaScript的编码能力
    今天就跟大家聊聊有关如何逐步提高JavaScript的编码能力,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。编辑器目前,编辑器种类繁多,人们不知道选...
    99+
    2024-04-02
  • 逐步指南:如何正确地卸载 NumPy 库
    NumPy是Python中最常用的数值计算库之一。它提供了高效的多维数组对象和强大的数学函数,被广泛应用于科学、工程和数据分析领域。然而,有时候我们可能需要卸载NumPy库,可能是因为需要安装其他版本的NumPy或者不再需要使用...
    99+
    2024-01-26
    Numpy 操作步骤 库卸载
  • 逐步学习:如何搭建Golang开发环境
    标题:一步步学习:Golang开发环境搭建技巧 在如今快速发展的科技时代,程序开发领域的需求日益增长,各种编程语言都在不断涌现。而Golang(又称Go)作为一门强大且高效的开发语言,...
    99+
    2024-02-25
    技巧 golang 环境搭建 golang开发 标准库
  • 使用PyCharm,逐步教你如何自定义背景颜色
    手把手教你在PyCharm中改变背景颜色,需要具体代码示例 一、背景颜色的重要性 对于软件开发者来说,一个舒适的开发环境是非常重要的。PyCharm作为一款强大的Python开发工具,在开发过程中提供了许多个性化的配置选项,其中...
    99+
    2024-02-03
    python pycharm 背景颜色设置
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作