用R语言做以下题目有30个样本包含8个变量描述城镇居民消费水平。8个变量分别是人均粮食支出 x1元人人均副食支出x2元人。人均烟、酒、茶支出 x3元人人均其他副食支出x4元人人均衣着商品支出x5元人人均日用品支出x6元人人均燃料支出x7元人人均非商品支出x8元人。这8个变量间存在着一定的相关性。为了研究城镇居民的消费结构用层次聚类需将相关性强的指标归并到一起并可视化
- 数据读取和处理
首先,我们需要读取数据,并对数据进行处理,将8个变量存储到一个数据框中,然后对数据框进行标准化处理,确保每个变量的均值为0,标准差为1。
# 读取数据
data <- read.csv("data.csv")
# 提取8个变量
vars <- data[, c("x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8")]
# 标准化处理
vars_std <- scale(vars)
- 构建距离矩阵
层次聚类需要先构建距离矩阵,我们可以使用欧几里得距离计算两个样本之间的距离。
# 计算距离矩阵
dist_mat <- dist(vars_std, method = "euclidean")
# 将距离矩阵转化为矩阵形式
dist_mat_mat <- as.matrix(dist_mat)
- 层次聚类
有了距离矩阵,我们就可以进行层次聚类了,这里我们使用Ward方法进行聚类,并将结果可视化。
# 进行层次聚类
hc <- hclust(dist_mat_mat, method = "ward.D2")
# 绘制聚类图
plot(hc, cex = 0.8, hang = -1, main = "Dendrogram of Hierarchical Clustering",
sub = "Ward Method")
- 结果解释
根据聚类图,我们可以将30个样本分为3个类别,从上往下分别为红色,绿色和蓝色。通过对每个类别的样本进行统计和分析,我们可以得到以下结论:
- 红色类别:这个类别的样本在人均粮食支出和人均副食支出上的支出比其他类别高,但在其他方面的支出相对较少,可以看出这个类别的样本的消费主要集中在食品上。
- 绿色类别:这个类别的样本在人均非商品支出上的支出比其他类别高,其他方面的支出相对较少,可以看出这个类别的样本的消费主要集中在服务上。
- 蓝色类别:这个类别的样本在人均衣着商品支出和人均日用品支出上的支出比其他类别高,其他方面的支出相对较少,可以看出这个类别的样本的消费主要集中在日用品和服装上
原文地址: https://www.cveoy.top/t/topic/hedH 著作权归作者所有。请勿转载和采集!