- 阅读权限
- 255
- 威望
- 0 级
- 论坛币
- 11884 个
- 通用积分
- 272.9886
- 学术水平
- 28 点
- 热心指数
- 76 点
- 信用等级
- 16 点
- 经验
- 2225 点
- 帖子
- 882
- 精华
- 0
- 在线时间
- 2274 小时
- 注册时间
- 2010-5-19
- 最后登录
- 2025-11-22
|
64楼
屋檐滴语
发表于 2019-5-27 19:49:45
- ---
- title: "灰色聚类及其R实现"
- author: "屋檐滴语"
- date: "2019/5/27"
- documentclass: ctexart
- output:
- rticles::ctex:
- fig_caption: yes
- number_sections: yes
- toc: yes
- classoption: "hyperref,"
- ---
- # 载入数据
- ```{r warning=FALSE, message=FALSE}
- library(readxl)
- data = read_xlsx("~/mydata/grey.xlsx", col_names = FALSE)
- data = as.matrix(data)
- rownames(data) = c("辽宁","山东","江苏","浙江","福建","广东")
- colnames(data) = c("人均工业总产值","人均工业增加值","人均利润","人均所得税")
- print(data)
- ```
- # 人均利润变正
- ```{r}
- data[,3] = data[,3] + 34
- print(data)
- ```
- # 线性变换
- ```{r}
- for(j in 1:4){
- data[,j] = data[,j] / max(data[,j])
- }
- print(data)
- ```
- # 计算离差
- ```{r}
- for(j in 1:4){
- data[,j] = max(data[,j]) - data[,j]
- }
- print(data)
- ```
- # 计算关联系数和关联度
- ```{r}
- data_gl = matrix(0, nrow = 6, ncol = 4)
- for(i in 1:6)
- for(j in 1:4)
- {
- data_gl[i,j] = ((max(data[,j]) - min(data[,j]))*0.5)/
- ((max(data[,j]) - min(data[,j])) * 0.5 + data[i,j] - min(data[,j]))
- }
- rownames(data_gl) = c("辽宁","山东","江苏","浙江","福建","广东")
- colnames(data_gl) = c("人均工业总产值","人均工业增加值","人均利润","人均所得税")
- data_relation = matrix(0, nrow = 6, ncol = 1)
- for(k in 1:6){
- data_relation[k,1] = sum(data_gl[k,])/4
- }
- colnames(data_relation) = c("关联度")
- data_cluster = cbind(data_gl, data_relation)
- print(data_cluster)
- ```
- # 计算灰色聚类
- ```{r}
- data_grey = matrix(0, nrow=length(data_relation), ncol=length(data_relation))
- data_sort = sort(as.numeric(data_relation), decreasing=T)
- for(i in 1:6)
- for(j in 1:6)
- {
- data_grey[i,j]<-(abs(data_sort[i]-data_sort[j])/data_sort[j])
- }
- data_grey_Ds<-matrix(0,nrow=length(data_relation),ncol=length(data_relation))
- for(i in 1:6)
- for(j in 1:6)
- {
- data_grey_Ds[i,j]<-data_grey[i,j]+data_grey[j,i]
- }
- data_grey_Rg<-matrix(0,nrow=length(data_relation),ncol=length(data_relation))
- data_max<-max(data_grey_Ds)
- for(i in 1:6)
- for(j in 1:6)
- {
- data_grey_Rg[i,j]<-1-data_grey_Ds[i,j]/data_max
- }
- rownames(data_grey_Rg)<-c("广东","山东","辽宁","浙江","江苏","福建")
- colnames(data_grey_Rg)<-c("广东","山东","辽宁","浙江","江苏","福建")
- ```
- # 画出系谱图
- ```{r warning=FALSE, message=FALSE}
- d<-as.dist(1-data_grey_Rg)
- hc<-hclust(d,"single")
- plot(hc,hang=-1)
- ```
复制代码
|
|