好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 如何用python做逐步回歸

如何用python做逐步回歸

熱門標簽:電話機器人貸款詐騙 蘇州人工外呼系統軟件 電話外呼系統招商代理 淮安呼叫中心外呼系統如何 打印谷歌地圖標注 廣東旅游地圖標注 佛山通用400電話申請 京華圖書館地圖標注 看懂地圖標注方法

算法介紹

逐步回歸是一種線性回歸模型自變量選擇方法;
逐步回歸的基本思想是將變量逐個引入模型,每引入一個解釋變量后都要進行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 逐步回歸的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • 利用python實現逐步回歸
  • 如何用Python徒手寫線性回歸
  • python 實現邏輯回歸
  • python 實現一個簡單的線性回歸案例
  • python 還原梯度下降算法實現一維線性回歸
  • python 牛頓法實現邏輯回歸(Logistic Regression)
  • Python 實現3種回歸模型(Linear Regression,Lasso,Ridge)的示例
  • python實現邏輯回歸的示例
  • 如何在python中實現線性回歸
  • 帶你學習Python如何實現回歸樹模型
  • python rolling regression. 使用 Python 實現滾動回歸操作
  • Python 線性回歸分析以及評價指標詳解

標簽:畢節 駐馬店 股票 湖州 江蘇 呼和浩特 中山 衡水

巨人網絡通訊聲明:本文標題《如何用python做逐步回歸》,本文關鍵詞  如,何用,python,做,逐步,回歸,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《如何用python做逐步回歸》相關的同類信息!
  • 本頁收集關于如何用python做逐步回歸的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 和黑人做爰下边好大舒服视频| 思春期的性学习动漫| 大胆国产精品视频嫩色AV| 6699嫩草久久久精品影院| 美女把衣服脱光光| 婬色kkkkk4444在线观看| 精产国品一二三产区照片| 尹人香蕉久久99天天| 欧美videoshd| 丰满肥胖大码中年**毛片| 国产乱码精品一区二三赶尸艳谈| 图书室的彼女| 人善交另类欧美重口另类| 91香蕉视频app污| 精品秘?无码一区二区三区| 日本乱理伦片在线观看网址| 口述我和小莹的性过程| 亚洲伊人精品| 娇妻卧室借种的呻吟| 丝袜人妻国产中文一区网址| 2017天天干天天射| 毛片a级| 永久免费毛片在线播放| 师尊被扒开腿灌浓精H视频| 女人夜夜春高潮爽A∨片传媒 | 欧美一区二区三区放荡人妇| 两个人做人爱视频免费| 国产小嫩模特一级毛片| 综合欧美视频一区二区三区| 秘密教学漫画免费观看| 国产亲子乱XXXXinin活浴| 他摸着我的两个奶我下面好湿| 伊人网站在线| 摇曳庄的幽奈小姐| japanjavhd| 亚洲国产日韩a在线欧美2020| 乱一性一乱一交一视频| 舌头伸进去?的我的B看看| 有夫之妇的午后HD三级| japanese奶水freehot| 卡一卡二卡三精品入口|