【數學建模】--灰色關聯分析

系統分析:

一般的抽象系統,如社會系統,經濟系統,農業系統,生態系統,教育系統等都包含有許多種因素,多種因素共同作用的結果決定了該系統的發展態勢。人們常常希望知道在眾多的因素中,哪些是主要因素,哪些是次要因素;哪些因素對系統發展影響大,哪些因素對系統發展影響小;那些因素對系統發展起推動作用需強化發展;那些因素對系統發展起阻礙作用需加以抑制;……這些都是系統分析中人們普遍關心的問題。例如,糧食生產系統,人們希望提高糧食總產量,而影響糧食總產量的因素是多方面的,有播種面積以及水利,化肥,土壤,種子,勞力,氣候,耕作技術和政策環境等。為了實現少投入多產出,并取得良好的經濟效益,社會效益和生態效益,就必須進行系統分析。

數理統計的不足之處:

灰色關聯的基本思想:

灰色關聯分析原理:灰色關聯分析(Grey Relational Analysis)是一種用于研究變量之間關聯性的方法,特別適用于樣本數據較少、樣本特征缺失或數據質量不高的情況下。它是由灰色系統理論發展而來,旨在分析和描述變量之間的關聯程度。

在灰色關聯分析中,首先將各個變量的數據進行數值化,常采用標準化或歸一化的方法,將變量的取值范圍轉化為[0, 1]之間。然后,通過計算變量之間的關聯度,確定它們之間的關聯程度。

灰色關聯分析的步驟主要包括以下幾個方面:

1.數據標準化:將原始數據進行標準化處理,通常采用歸一化或標準化方法,使得各個變量具有相同的數值范圍。

2.構建關聯系數矩陣:計算各個變量之間的關聯系數,一般采用灰色關聯度或灰色斜率關聯度。關聯系數表示了變量之間的相對關聯程度。

3.確定關聯度序列:根據計算得到的關聯系數,確定關聯度序列,即將各個變量按照關聯度的大小排序。

4.確定關聯度權重:根據關聯度序列,計算關聯度權重,即各個變量在總關聯系數中的貢獻比例。

5.計算灰色關聯度:通過將各個變量的關聯系數與關聯度權重相乘,并進行累加,計算出灰色關聯度。灰色關聯度可以反映變量之間的關聯程度。

通過灰色關聯度的計算,可以得到各個變量之間的關聯情況,進而進行數據分析和決策支持。灰色關聯分析常被應用于多個領域,包括經濟、管理、環境、工程等,用于評估指標之間的關聯強度、尋找關鍵因素等。

需要注意的是,灰色關聯分析的結果是相對的,不具備精確的定量意義,應結合實際問題和其他分析方法進行綜合評估和判斷。

例題以及Excel的實操:在excel中選擇數據-插入-推薦圖標-修改信息。

2.確定分析數列:

母序列:能反映系統特征值的數據序列,類似于因變量Y,此處記為X0

子序列:有影響系統行為的因素組成的數據序列。類似于自變量x,此處記為(x1,x2……xm)

3.對變量進行預處理:

目的:去量綱,縮小變量范圍簡化計算。

方法:每個元素/所在列的列向量的均值。

4.計算子序列中各個指標與母序列的關聯系數

先求每子列元素與母列之間差的絕對值,在求出矩陣中所有元素的最小值a和最大值b。且取分辨系數p/rho=0.5

在通過公式計算

5.求灰色關聯度:

公式:每列子序列與母序列關聯系數的均值。

6.分析結果進行總結。

MATLAB代碼實現:

參考代碼:

%% 灰色關聯分析用于系統分析例題的講解
clear;clc
load gdp.mat  % 導入數據 一個6*4的矩陣
% 不會導入數據的同學可以看看第二講topsis模型,我們也可以自己在工作區新建變量,并把Excel的數據粘貼過來
% 注意Matlab的當前文件夾一定要切換到有數據文件的這個文件夾內
Mean = mean(gdp);  % 求出每一列的均值以供后續的數據預處理
gdp = gdp ./ repmat(Mean,size(gdp,1),1);  %size(gdp,1)=6, repmat(Mean,6,1)可以將矩陣進行復制,復制為和gdp同等大小,然后使用點除(對應元素相除),這些在第一講層次分析法都講過
disp('預處理后的矩陣為:'); disp(gdp)
Y = gdp(:,1);  % 母序列
X = gdp(:,2:end); % 子序列
absX0_Xi = abs(X - repmat(Y,1,size(X,2)))  % 計算|X0-Xi|矩陣(在這里我們把X0定義為了Y)
a = min(min(absX0_Xi))    % 計算兩級最小差a
b = max(max(absX0_Xi))  % 計算兩級最大差b
rho = 0.5; % 分辨系數取0.5
gamma = (a+rho*b) ./ (absX0_Xi  + rho*b)  % 計算子序列中各個指標與母序列的關聯系數
disp('子序列中各個指標的灰色關聯度分別為:')
disp(mean(gamma))

討論:

灰色分析用于綜合評價問題:

步驟:

MATLAB代碼實現:

這里的代碼和博主之前TOPSIS算法一文:數學建模——TOPSIS法_Wei&Yan的博客-CSDN博客

前面的操作都一致,只是在最后添加上了灰色相關分析的方法

步驟:

  1. 先對矩陣進行預處理:每個元素/所在列的均值
  2. 構造母序列和子序列

母序列:取每一行的max構成一個列向量

子序列:預處理后的矩陣

3.計算灰色關聯度

先求每個元素與母序列差的絕對值矩陣,再求兩級最大/小差。

最后利用公式求灰色關聯度

4.求權重:每列的均值/每列均值的和

5.求得分:(矩陣中每個元素*其所在列的權重)的矩陣的列和。(得到一個)

6.歸一化得分:每個元素/向量和

圖形對比:

參考代碼:

這里只參考了主函數加上帶有灰色相關分析的代碼,其他自定義函數可參考博主原來的文章TOPSIS算法:數學建模——TOPSIS法_Wei&Yan的博客-CSDN博客

%% 灰色關聯分析用于綜合評價模型例題的講解
clear;clc
load data_water_quality.mat
% 不會導入數據的同學可以看看第二講topsis模型,我們也可以自己在工作區新建變量,并把Excel的數據粘貼過來
% 注意Matlab的當前文件夾一定要切換到有數據文件的這個文件夾內%%  判斷是否需要正向化
[n,m] = size(X);
disp(['共有' num2str(n) '個評價對象, ' num2str(m) '個評價指標']) 
Judge = input(['這' num2str(m) '個指標是否需要經過正向化處理,需要請輸入1 ,不需要輸入0:  ']);   %1if Judge == 1Position = input('請輸入需要正向化處理的指標所在的列,例如第2、3、6三列需要處理,那么你需要輸入[2,3,6]: '); %[2,3,4]disp('請輸入需要處理的這些列的指  標類型(1:極小型, 2:中間型, 3:區間型) ')Type = input('例如:第2列是極小型,第3列是區間型,第6列是中間型,就輸入[1,3,2]:  '); %[2,1,3]% 注意,Position和Type是兩個同維度的行向量for i = 1 : size(Position,2)  %這里需要對這些列分別處理,因此我們需要知道一共要處理的次數,即循環的次數X(:,Position(i)) = Positivization(X(:,Position(i)),Type(i),Position(i));% Positivization是我們自己定義的函數,其作用是進行正向化,其一共接收三個參數% 第一個參數是要正向化處理的那一列向量 X(:,Position(i))   回顧上一講的知識,X(:,n)表示取第n列的全部元素% 第二個參數是對應的這一列的指標類型(1:極小型, 2:中間型, 3:區間型)% 第三個參數是告訴函數我們正在處理的是原始矩陣中的哪一列% 該函數有一個返回值,它返回正向化之后的指標,我們可以將其直接賦值給我們原始要處理的那一列向量enddisp('正向化后的矩陣 X =  ')disp(X)
end%% 對正向化后的矩陣進行預處理
Mean = mean(X);  % 求出每一列的均值以供后續的數據預處理
Z = X ./ repmat(Mean,size(X,1),1);  
disp('預處理后的矩陣為:'); disp(Z)%% 構造母序列和子序列
Y = max(Z,[],2);  % 母序列為虛擬的,用每一行的最大值構成的列向量表示母序列
X = Z; % 子序列就是預處理后的數據矩陣%% 計算得分
absX0_Xi = abs(X - repmat(Y,1,size(X,2)))  % 計算|X0-Xi|矩陣
a = min(min(absX0_Xi))    % 計算兩級最小差a
b = max(max(absX0_Xi))  % 計算兩級最大差b
rho = 0.5; % 分辨系數取0.5
gamma = (a+rho*b) ./ (absX0_Xi  + rho*b)  % 計算子序列中各個指標與母序列的關聯系數
weight = mean(gamma) / sum(mean(gamma));  % 利用子序列中各個指標的灰色關聯度計算權重
score = sum(X .* repmat(weight,size(X,1),1),2);   % 未歸一化的得分
stand_S = score / sum(score);   % 歸一化后的得分
[sorted_S,index] = sort(stand_S ,'descend') % 進行排序

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/39012.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39012.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39012.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

leetcode 面試題 02.05 鏈表求和

?? 題目描述 🌟 leetcode鏈接:面試題 02.05 鏈表求和 ps: 首先定義一個頭尾指針 head 、tail,這里的 tail 是方便我們尾插,每次不需要遍歷找尾,由于這些數是反向存在的,所以我們直接加起來若…

深入理解設計模式-行為型之觀察者

概述 觀察者模式(Observer Pattern)是一種行為型設計模式,它定義了一種一對多的依賴關系,讓多個觀察者對象同時監聽一個主題對象,當主題對象發生變化時,所有依賴于它的觀察者對象都會得到通知并更新。 在…

如何安裝Python?

如何安裝Python? 安裝Python非常簡單,讓我們一步步來進行。 1. 訪問官方網站 首先,您需要訪問Python官方網站(https://www.python.org/)。在首頁上,您會看到一個大大的「Downloads」按鈕,點擊…

【Redis實踐篇】使用Redisson 優雅實現項目實踐過程中的5種場景

文章目錄 1.前言2.使用方式1. 添加Redisson依賴:2. 配置Redis連接信息3. 使用場景3.1. 分布式鎖3.2. 限流器(Rate Limiter)3.3. 可過期的對象(Expirable Object)3.4. 信號量(Semaphore)3.5. 分布…

ChatGPT在智能文檔搜索和信息抽取中的應用如何?

智能文檔搜索和信息抽取是信息檢索和知識管理領域中的關鍵問題,而ChatGPT作為一種強大的自然語言處理模型,正在這些領域發揮越來越重要的作用。在大數據時代,文檔數量龐大,信息量巨大,有效地搜索和抽取信息變得至關重要…

spfa判斷負環

思路: (1)負環:區別于正環,在求最短路過程中,正環會繞路,故不會被討論,而負環會不斷讓路總權更短,會讓算法不斷循環; (2)于是考慮統…

JVM---垃圾回收算法介紹

目錄 分代收集理論 三種垃圾回收算法 標記-清除算法(最基礎的、基本不用) 標記-復制算法 標記-整理算法 正式因為jvm有了垃圾回收機制,作為java開發者不會去特備關注內存,不像C和C。 優點:開發門檻低、安全 缺點…

windows Socket簡單編程實例

服務端 #include <winsock2.h> #include <string.h> #include <stdio.h> #include <stdlib.h>#pragma comment(lib, "Ws2_32.lib")void error_handing(const char* message) {fputs(message, stderr);fputc(\n, stderr);exit(1); } int mai…

任我行CRM系統存在 SQL注入漏洞[2023-HW]

任我行CRM系統存在 SQL注入漏洞 一、 產品簡介二、 漏洞概述三、 復現環境四、 漏洞復現小龍POC又是一通哈拉少 五、 修復建議 免責聲明&#xff1a;請勿利用文章內的相關技術從事非法測試&#xff0c;由于傳播、利用此文所提供的信息或者工具而造成的任何直接或者間接的后果及…

學習ts(二)數據類型(接口和對象類型、數組類型)

interface 重名會重合到一起 如果兩個interface名稱相同&#xff0c;會把兩個合到一起 重復定義同一個需要類型相同 不能多或者減少屬性 設置任意key 當定義接口返回數據時&#xff0c;我們不確定接口會返回多少&#xff0c;知道所需要的固定屬性&#xff0c;其余屬性可以…

學習筆記十四:K8S最小調度單元POD概述

K8S最小調度單元POD概述 k8s核心資源Pod介紹Pod是什么Pod如何管理多個容器Pod網絡Pod存儲代碼自動發版更新收集業務日志 Pod工作方式自主式Pod控制器管理的Pod(防誤刪除) 如何基于Pod運行應用 k8s核心資源Pod介紹 K8s官方文檔&#xff1a;https://kubernetes.io/ K8s中文官方文…

【博客692】grafana如何解決step動態變化時可能出現range duration小于step

grafana如何解決step動態變化時可能出現range duration小于step 1、grafana中的step和resolution grafana中的 “step” grafana本身是沒有提供step參數的&#xff0c;因為儀表盤根據查詢數據區間以及儀表盤線條寬度等&#xff0c;對于不同查詢&#xff0c;相同的step并不能…

校園外賣小程序怎么做

校園外賣小程序是為滿足校園內學生和教職員工的外賣需求而開發的一種應用程序。它涵蓋了從用戶端、商家端、騎手端、電腦管理員到小票打印、多商戶入駐等多個方面的功能&#xff0c;以下將逐一介紹。 1. 用戶端功能&#xff1a;校園外賣小程序為用戶提供了便捷的訂餐和外賣服務…

Zmq適配Win7 SP0 / Win XP/ Win 2k

1.目的 由于發布版本的libzmq使用了較多新的系統特性&#xff0c;導致在低版本windows平臺上無法使用。 因此&#xff0c;需要對zmq源碼進行修改以適配低版本的系統&#xff0c;如Win7 SP0&#xff0c;Win XP&#xff0c;Win2003等等。 2.Win7 SP0 #if defined ZMQ_HAVE_WIN…

深入理解epoll

文章目錄 概述1. epoll_create - 創建一個epoll實例2. epoll_ctl - 控制epoll實例的事件結構體介紹events取值&#xff1a;data&#xff1a; 聯合體&#xff08;共用體&#xff09;&#xff1a; 3. epoll_wait - 等待事件發生偽代碼總結 概述 在網絡編程中&#xff0c;高效地處…

每天一道leetcode:797. 所有可能的路徑(圖論中等深度優先遍歷)

今日份題目&#xff1a; 給你一個有 n 個節點的 有向無環圖&#xff08;DAG&#xff09;&#xff0c;請你找出所有從節點 0 到節點 n-1 的路徑并輸出&#xff08;不要求按特定順序&#xff09; graph[i] 是一個從節點 i 可以訪問的所有節點的列表&#xff08;即從節點 i 到節…

c++11 explicit關鍵字的作用

explicit 在C中&#xff0c;explicit關鍵字用來修飾類的構造函數&#xff0c;被修飾的構造函數的類&#xff0c;不能發生相應的隱式類型轉換&#xff0c;只能以顯示的方式進行類型轉換。因為無參構造函數和多參構造函數本身就是顯示調用的。再加上explicit關鍵字也沒有什么意義…

?五金件機器視覺定位?并獲取外觀輪廓軟硬件視覺方案

【檢測目的】 五金件機器視覺定位&#xff0c;視覺檢測五金件輪廓并矯正五金件位置進行涂油 【客戶要求】 FOV:540*400mm 【拍攝與處理效圖一】 【拍攝與處理效圖二】 【實驗原理及說明】 【方案評估】 根據目前的圖像和處理結果來看&#xff0c;可以檢測出產品輪廓并進行位置…

HCIP-OpenStack搭建

1、OpenStack概述 OpenStack是一種云操作系統&#xff0c;OpenStack是虛擬機、裸金屬和容器的云基礎架構。可控制整個數據中心的大型計算、存儲和網絡資源池&#xff0c;所有資源都通過具有通用身份驗證機制的API進行管理和配置。管理員也可通過Web界面控制&#xff0c;同時授…

Qt 之 QPushButton,信號與槽機制

文章目錄 前言一、QPushButton二、信號與槽機制總結 前言 一、QPushButton 當我們開發基于Qt框架的圖形用戶界面&#xff08;GUI&#xff09;應用程序時&#xff0c;經常需要在界面上添加按鈕來實現用戶交互。Qt提供了一個名為 QPushButton 的類作為按鈕控件的實現。QPushButt…