最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python?OLS?雙向逐步回歸方式

 更新時間:2024年05月16日 09:55:46   作者:AdamShyly  
這篇文章主要介紹了Python?OLS?雙向逐步回歸方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Python OLS 雙向逐步回歸

算法基本思路

首先需要確定一個因變量y以此構(gòu)建一元回歸方程

再找到已通過顯著性檢驗的一元線性回歸方程中F值最大的解釋變量x0

將其并入回歸方程中

再分別將剩余的解釋變量與解釋變量x0作為OLS函數(shù)的自變量集擬合回歸方程

同樣找出其中F值最大的自變量集

如果該自變量集均能通過顯著性檢驗則將該解釋變量并入回歸方程中并進(jìn)行下一輪的迭代

否則舍棄該解釋變量

并找出F值第二大的自變量集繼續(xù)對其進(jìn)行顯著性檢驗

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
 
 
def stepwise_regression(data, dv, idvs=None):  # 向前向后逐步回歸
    res_idvs = []
    src_idvs = idvs.copy()
    res_models = []
    for step in range(len(idvs)):
        isExit = False
        while True:
            F, idv, model = find_max_F(
                data, dv, src_idvs, res_idvs)  # 求出F最大值以及對應(yīng)的解釋變量
 
            if model == None:  # 多元線性擬合失敗
                print("第{0}步擬合線性失敗".format(step + 1))
                isExit = True
                break
 
            res_idvs.append(idv)
 
            # 沒有新解釋變量并入回歸方程中
            if model.f_pvalue >= 0.05 or not test_significance(data, dv, res_idvs):
                res_idvs.pop()  # 移除該解釋變量
                src_idvs.remove(idv)
                print("第{0}步移除解釋變量{1}".format(step + 1, idv))
                if len(src_idvs) == 0:  # 該輪for循環(huán)并沒有解釋變量能夠并入回歸方程中
                    isExit = True
                    break
            else:  # 找到新解釋變量,結(jié)束While循環(huán)
                print("第{0}步并入解釋變量{1}".format(step + 1, idv))
                res_models.append(model)
                break
        if isExit:  # 提前結(jié)束逐步回歸
            break
        else:
            src_idvs = []
            for idv in idvs:
                if idv not in res_idvs:
                    src_idvs.append(idv)
    return res_idvs, res_models
 
 
data = pd.read_excel('./normalization.xlsx')
 
equations = []
stdouts = []
for column in data.columns:
    idvs = list(data.columns.copy())
    idvs.remove(column)
    res, models = stepwise_regression(data=data, dv=column, idvs=idvs)
    equation = 'y = '
    stdout = 'y為' + column + '、'
    for index in range(len(res)):
        equation += str(models[index].params[1]) + ' * x' + str(index)
        stdout += 'x' + str(index) + '為' +  res[index]
        if index != len(res) - 1:
            equation += ' + '
            stdout += '、'
    equations.append(equation)
    stdouts.append(stdout)
 
with open(file='./MultivariateLinearity.txt', mode='w', encoding='utf-8') as f:
    for index in range(len(equations)):
        f.write(equations[index] + '\n其中: ' + stdouts[index] + '\n')

以下是data數(shù)據(jù)集格式

一個解釋變量為一列

以下是將方程

以及變量解釋輸出至.txt文件的最終結(jié)果

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python獲取apk文件URL地址實例

    Python獲取apk文件URL地址實例

    需要提取apk文件的特定URL地址的朋友可以看一下這個代碼實例。
    2013-11-11
  • 用pip給python安裝matplotlib庫的詳細(xì)教程

    用pip給python安裝matplotlib庫的詳細(xì)教程

    這篇文章主要介紹了用pip給python安裝matplotlib庫的詳細(xì)教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • pandas數(shù)據(jù)類型之Series的具體使用

    pandas數(shù)據(jù)類型之Series的具體使用

    本文主要介紹了pandas數(shù)據(jù)類型之Series的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 通過Python實現(xiàn)批量修改文件名前后綴功能

    通過Python實現(xiàn)批量修改文件名前后綴功能

    在備考期間因為需要下載一些電子檔的資料,然后下載的部分資料會有自己的前綴,但是看著有點不舒服,因為文件也比較多,所以想能不能通過代碼的形式對于文件名進(jìn)行批量的修改,因此本文給大家分享了通過Python實現(xiàn)批量修改文件名前后綴功能,需要的朋友可以參考下
    2025-05-05
  • 基于Python對象引用、可變性和垃圾回收詳解

    基于Python對象引用、可變性和垃圾回收詳解

    下面小編就為大家?guī)硪黄赑ython對象引用、可變性和垃圾回收詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 淺談Python中的數(shù)據(jù)類型

    淺談Python中的數(shù)據(jù)類型

    Python很重要的的那幾個數(shù)據(jù)類型:字符串,列表,字典,元組,經(jīng)常有網(wǎng)友問他們之間重要的區(qū)別的是什么?能否舉幾個例子來說明下!下嘛我們就來探討下。
    2015-05-05
  • Python read函數(shù)按字節(jié)(字符)讀取文件的實現(xiàn)

    Python read函數(shù)按字節(jié)(字符)讀取文件的實現(xiàn)

    這篇文章主要介紹了Python read函數(shù)按字節(jié)(字符)讀取文件的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 簡單了解python字符串前面加r,u的含義

    簡單了解python字符串前面加r,u的含義

    這篇文章主要介紹了簡單了解python字符串前面加r,u的含義,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • Python 字典中的所有方法及用法

    Python 字典中的所有方法及用法

    這篇文章主要介紹了Python 字典中的所有方法及用法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • python獲取Pandas列名的幾種方法

    python獲取Pandas列名的幾種方法

    這篇文章主要介紹了python獲取Pandas列名的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08

最新評論

大埔区| 原平市| 青铜峡市| 冀州市| 河曲县| 博客| 玉龙| 冀州市| 博客| 义马市| 阜新| 信丰县| 宁武县| 乐清市| 家居| 大安市| 普宁市| 祁连县| 长子县| 开化县| 郑州市| 松原市| 嘉定区| 卓资县| 古交市| 噶尔县| 和田市| 保康县| 松江区| 车险| 临城县| 沁水县| 鹿泉市| 奉节县| 南召县| 固阳县| 蓬安县| 南澳县| 库尔勒市| 新乐市| 宜黄县|