R语言灰色关联分析法

article/2025/8/18 12:42:48

R语言灰色关联分析法

  • 输入数据
  • 数据的标准化/归一化
  • 求灰色系数
    • 求差序列和最大值最小值
    • 求关联系数
  • 计算关联度并排序
  • 所有代码

灰色关联度分析(Grey Relation Analysis,GRA),是一种多因素统计分析的方法。简单来讲,就是在一个灰色系统中,我们想要了解其中某个我们所关注的某个项目受其他的因素影响的相对强弱,再直白一点,就是说:我们假设以及知道某一个指标可能是与其他的某几个因素相关 的,那么我们想知道这个指标与其他哪个因素相对来说更有关系,而哪个因素相对关系弱一点,依次类推,把这些因素排个序,得到一个分析结果,我们就可以知道我们关注的这个指标,与因素中的哪些更相关。

( note : 灰色系统这个概念的提出是相对于白色系统和黑色系统而言的。这个概念最初是由控制科学与工程(hhh熟悉的一级学科)的教授邓聚龙提出的。按照控制论的惯例,颜色一般代表的是对于一个系统我们已知的信息的多少,白色就代表信息充足,比如一个力学系统,元素之间的关系都是能够确定的,这就是一个白色系统;而黑色系统代表我们对于其中的结构并不清楚的系统,通常叫做黑箱或黑盒的就是这类系统。灰色介于两者之间,表示我们只对该系统有部分了解。)

在这里插入图片描述
在这里插入图片描述
例题:
在这里插入图片描述

输入数据

输入数据并用DT包的datatable函数展示数据

install.packages("DT")
library(DT)
A <- c(0.83,326,21,3.2,0.2,0.15,250,0.23,0.87)
B <- c(0.90,295,38,2.4,0.25,0.2,180,0.15,0.95)
C <- c(0.99,340,25,2.2,0.12,0.14,300,0.27,0.99)
D <- c(0.92,287,19,2,0.33,0.09,200,0.3,0.89)
E <- c(0.87,310,27,0.9,0.20,0.15,150,0.18,0.82)
F <- c(0.95,303,10,1.7,0.09,0.17,175,0.26,0.94)
data <- data.frame(A,B,C,D,E,F)
rownames(data) <- c("产品质量","产品价格","地理位置","售后服务","技术水平","经济效益","供应能力","市场影响度","交货情况")
library(DT)
datatable(data)

在这里插入图片描述
ABDDEF分别对应第1到第6个供应商

数据的标准化/归一化

产品质量、技术水平、供应能力、经济效益、交货情况、市场影响度指标属于效益型指
产品价格、地理位置、售后服务指标属于成本型指标。现分别对上述指标进行规范化:
对于效益型指标(正项指标)标准化公式为:
x ∗ = x − m i n ( x ) m a x ( x ) − m i n ( x ) x^{\ast}=\frac{x-min\left( x \right)}{max\left( x \right) -min\left( x \right)} x=max(x)min(x)xmin(x)
对于成本型指标(逆向指标)标准化公式为:
x ∗ = m a x ( x ) − x m a x ( x ) − m i n ( x ) x^{\ast}=\frac{max\left( x \right) -x}{max\left( x \right) -min\left( x \right)} x=max(x)min(x)max(x)x
编写函数

#归一化函数正向指标
normalize <- function(x){return ((x-min(x))/(max(x)-min(x)))
}
#归一化函数逆向指标
normalize1 <- function(x){return ((max(x)-x)/(max(x)-min(x)))
}
pos <- apply(data[c(1,5:9),],1,normalize)
neg <- apply(data[c(2:4),],1,normalize1)
scaledata <- cbind(pos,neg);scaledata
scaledata <- t(round(scaledata,3))#这里还求了一个转置
datatable(scaledata)

在这里插入图片描述
建立参考序列,即每一列的最大值,并合并数据

best <- apply(scaledata,1,max)
data1 <-data.frame(scaledata,best);
datatable(data1,caption="比较数列和参考序列值")

在这里插入图片描述

求灰色系数

求差序列和最大值最小值

ξ i ( k ) = min ⁡ min ⁡ ∣ ( x 0 ( t ) − x s ( t ) ) ∣ + ρ max ⁡ max ⁡ ∣ x 0 ( t ) − x s ( t ) ∣ ∣ x 0 ( t ) − x s ( t ) ∣ + ρ max ⁡ max ⁡ ∣ x 0 ( t ) − x s ( t ) ∣ \xi _i\left( k \right) =\frac{\min\min \left| \left( x_0\left( t \right) -x_s\left( t \right) \right) \right|+\rho \max\max \left| x_0\left( t \right) -x_s\left( t \right) \right|}{\left| x_0\left( t \right) -x_s\left( t \right) \right|+\rho \max\max \left| x_0\left( t \right) -x_s\left( t \right) \right|} ξi(k)=x0(t)xs(t)+ρmaxmaxx0(t)xs(t)minmin(x0(t)xs(t))+ρmaxmaxx0(t)xs(t)
这里 x 0 ( t ) x_0(t) x0(t)就是标准化后的数据,$x_s(t)就是比较数据,即每一行的最大值首先求出
∣ ( x 0 ( t ) − x s ( t ) ) ∣ \left| \left( x_0\left( t \right) -x_s\left( t \right) \right) \right| (x0(t)xs(t))

需要主要的是
这里的 min ⁡ min ⁡ ∣ ( x 0 ( t ) − x s ( t ) ) ∣ 和 max ⁡ max ⁡ ∣ x 0 ( t ) − x s ( t ) ∣ \min\min \left| \left( x_0\left( t \right) -x_s\left( t \right) \right) \right|\text{和}\max\max \left| x_0\left( t \right) -x_s\left(t \right) \right| minmin(x0(t)xs(t))maxmaxx0(t)xs(t)用R语言的min和max函数就能求(因为matlab的min函数是求每一列的最小值,所所以在matlab中用min(min))
这里的 ρ \rho ρ一般取0.5

err <-abs((1-scaledata))
datatable(err)
min <- min(err)
max <- max(err)

在这里插入图片描述

求关联系数

#计算关联系数
rho <-  0.5#分辨系数
xishu <- (min + rho * max)/(err + rho * max)#计算灰色关联分析
xishu <- round(xishu,3)
datatable(xishu)

在这里插入图片描述

计算关联度并排序

关联度最好求了,只需要对每一类求一个平均值
最后用sort函数排序就行了

#计算关联度
sort(apply(xishu, 2, mean),decreasing = T)

在这里插入图片描述
可以看出D的关联度最高,因此应该选择4号供应商(D对应4)

所有代码

创作不易如果对您有帮助,还请点赞

install.packages("DT")
library(DT)
A <- c(0.83,326,21,3.2,0.2,0.15,250,0.23,0.87)
B <- c(0.90,295,38,2.4,0.25,0.2,180,0.15,0.95)
C <- c(0.99,340,25,2.2,0.12,0.14,300,0.27,0.99)
D <- c(0.92,287,19,2,0.33,0.09,200,0.3,0.89)
E <- c(0.87,310,27,0.9,0.20,0.15,150,0.18,0.82)
F <- c(0.95,303,10,1.7,0.09,0.17,175,0.26,0.94)
data <- data.frame(A,B,C,D,E,F)
rownames(data) <- c("产品质量","产品价格","地理位置","售后服务","技术水平","经济效益","供应能力","市场影响度","交货情况")
library(DT)
datatable(data)
#归一化函数正向指标
normalize <- function(x){return ((x-min(x))/(max(x)-min(x)))
}
#归一化函数逆向指标
normalize1 <- function(x){return ((max(x)-x)/(max(x)-min(x)))
}
pos <- apply(data[c(1,5:9),],1,normalize)
neg <- apply(data[c(2:4),],1,normalize1)
scaledata <- cbind(pos,neg);scaledata
scaledata <- t(round(scaledata,3))
datatable(scaledata)
best <- apply(scaledata,1,max)
data1 <-data.frame(scaledata,best);
datatable(data1,caption="比较数列和参考序列值")
#计算差序列
err <-abs((1-scaledata))
datatable(err)
min <- min(err)
max <- max(err)
#计算关联系数
rho <-  0.5#分辨系数
xishu <- (min + rho * max)/(err + rho * max)#计算灰色关联分析
xishu <- round(xishu,3)
datatable(xishu)
#计算关联度
sort(apply(xishu, 2, mean),decreasing = T)

http://chatgpt.dhexx.cn/article/l8g9Jwmp.shtml

相关文章

如何用spss做灰色关联度分析?手把手教学快速掌握

1、作用 对于两个系统之间的因素&#xff0c;其随时间或不同对象而变化的关联性大小的量度&#xff0c;称为关联度。在系统发展过程中&#xff0c;若两个因素变化的趋势具有一致性&#xff0c;即同步变化程度较高&#xff0c;即可谓二者关联程度较高&#xff1b;反之&#xff…

(三)灰色关联分析

灰色关联分析法&#xff1a; 对于两个系统之间的因素&#xff0c;其随时间或不同对象而变化的关联性大小的量度&#xff0c;称为关联度。在系统发展过程中&#xff0c;若两个因素变化的趋势具有一致性&#xff0c;即同步变化程度较高&#xff0c;即可谓二者关联程度较高&#x…

灰色关联度

利用灰色关联度对 10 个学生进行评价排序。 灰色关联度分析具体步骤如下&#xff1a; 1. 确定比较对象&#xff08;评价对象&#xff09;和参考数列&#xff08;评价标准&#xff09; 这里评价对象的个数为 m 10 , 评价指标变量有 8 个 比较数列为 这里 是第 i 个评价对…

灰色关联分析法详细步骤解释

灰色关联分析&#xff08;Grey Relation Analysis&#xff0c;GRA&#xff09; 灰色系统 这个概念的提出是相对于白色系统和黑色系统而言的。在控制理论中&#xff0c;颜色一般代表的是对于一个系统我们已知的信息的多少&#xff0c;白色系统就代表信息完全明确&#xff0c;比…

灰色关联度分析法(GRA)_python

灰色系统理论及其应用系列博文: 一、灰色关联度分析法(GRA)_python 二、灰色预测模型GM(1,1) 三、灰色预测模型GM(1,n) 四、灰色预测算法改进1—背景值Z 五、灰色预测改进2—三角残差拟合 文章目录 定义算法标准结论例子参考博客:

灰色关联分析法

与灰色预测模型一样&#xff0c;比赛不能优先使用&#xff0c;灰色关联往往可以与层次分析结合使用。层次分析用在确定权重上面【1】确定比较对象&#xff08;评价对象&#xff09;(就是数据&#xff0c;并且需要进行规范化处理&#xff0c;就是标准化处理&#xff0c;见下面例…

灰色关联分析中关联系数、关联度如何计算?

一、应用 灰色关联分析法通过研究数据关联性大小&#xff08;母序列与特征序列之间的关联程度&#xff09;&#xff0c;通过关联度&#xff08;即关联性大小&#xff09;进行度量数据之间的关联程度&#xff0c;从而辅助决策的一种研究方法。 二、操作 SPSSAU操作 &#xf…

灰色关联度分析

灰色关联度分析 在我看来&#xff0c;灰色关联度分析即是一种对影响目标序列的相关因素进行定量分析的模型&#xff0c;他的基本原理就是将已知的目标序列数据和比较序列&#xff08;即影响目标序列的因素所构成的序列&#xff09;数据进行无量纲化处理之后&#xff0c;通过对…

灰色关联度分析(Grey Relation Analysis,GRA)原理详解

释名 灰色关联度分析&#xff08;Grey Relation Analysis&#xff0c;GRA&#xff09;&#xff0c;是一种多因素统计分析的方法。简单来讲&#xff0c;就是在一个灰色系统中&#xff0c;我们想要了解其中某个我们所关注的某个项目受其他的因素影响的相对强弱&#xff0c;再直白…

灰色关联分析

文章目录 前言一、灰色关联分析是什么&#xff1f;二、使用步骤1.画出统计图2.确定分析序列3.对变量进行预处理4.计算子序列各个指标的关联系数5.定义灰色关联度 总结 前言 系统分析时&#xff0c;常使用数理统计&#xff1a;回归分析&#xff08;标准化回归&#xff09;、方差…

数学建模:评价性模型学习——灰色关联分析法(GRA模型)

目录 前言 一、灰色关联分析 1.什么是灰色关联分析&#xff1f; 2.流程介绍 二、综合评价 1.数据无量纲化处理 2.确定参考序列 3.确定权重 4.计算灰色关联系数 5.计算灰色加权关联度 6.代码 总结 前言 继续学习数学建模涉及的评价性模型&#xff0c;这篇会介绍如何使…

unity 赛车race(手游)

就业班是面向工作&#xff0c;企业应用级别的学习。在这里我们将在游戏项目开发的深度和任务上有所提高。通过分析和开发大型的游戏项目&#xff0c;让大家熟练使用Unity&#xff0c;并分析大型游戏开发思路&#xff0c;为自己专业开发游戏和就业提供保障。 unity 赛车race(手游…

ranchar

添加主机报错

D. Race

GDUT 2020寒假训练 排位赛三 D 原题链接 D. Race 题目 outputstandard output Bessie is running a race of length K (1≤K≤109) meters. She starts running at a speed of 0 meters per second. In a given second, she can either increase her speed by 1 meter per s…

ROS智能车实现darknet_ros检测物体

文章目录 一、搭建智能车环境1、下载包以及编译1.1、下载源码包1.2、编译1.3、错误解决&#xff08;1&#xff09;、controllers相关&#xff08;2&#xff09;、driver_base相关&#xff08;3&#xff09;、ackermann_msgs相关&#xff08;4&#xff09;、Could not find a pa…

智能车仿真 —— 2020室外光电组仿真指导(一)

前言 今天推出了官方的仿真文件&#xff0c;我也参与了部分仿真模型的设计&#xff0c;提供一个简单的参考思路。 完整文章地址&#xff1a;古月居博客网站 模型下载地址 https://pan.baidu.com/s/1TFBTbCeyQMuKnxemCbyNSw 提取码: crm5 安装依赖工具 sudo apt-get instal…

教程 | 阿克曼结构移动机器人的gazebo仿真(五)

第四章、用xacro优化URDF并配置gazebo仿真插件 1►前言 上节用简易模型写了一个小车的URDF代码&#xff0c;这一节将用xacro对其进行优化&#xff0c;这里我并不打算用宏对参数进行封装&#xff0c;因为我个人觉得这样看起来会比较直观&#xff0c;方便读者阅读。 2►配置主x…

利用Gazebo搭建赛道,控制小车完成比赛(大学生智能车大赛室外光电组赛道仿真模拟)

ROS学习【18】-----利用Gazebo搭建赛道&#xff0c;控制小车完成比赛目录 一、 ROS仿真功能包下载编译1、racecar功能包下载2、安装该功能包运行需要的控件3、racecar功能包编译4、测试是否编译成功 二、 运行功能包自带的赛道1、运行赛道&#xff0c;控制小车进行位移2、进行g…

ROS智能车定位导航仿真(原赛道自主导航,构建地图再导航)

文章目录 0.视频演示1.智能车环境&#xff0c;空间&#xff0c;资源准备a.初始化b.克隆 racecar 源代码包&#xff0c;并编译(1)遇到问题&#xff1a;Could NOT find driver_base_DIR(2)遇到问题&#xff1a;Could NOT find OpenCV (missing: OpenCV_DIR)(3)随带把环境变量添加…

AR rc漂移车

文章目录 前言一、物料准备二、车辆安装三、舵机调试1.舵机控制原理2.舵机供电及连线3.PWM控制舵机 四、电机调试1.电机控制原理2.电机供电及连线3.PWM控制电机4.附 五、单片机独立供电六、蓝牙遥控 前言 前几天偶然看到了《马里奥赛车 Live:家庭巡回赛》这款运行在switch上的A…