library(readxl)
x<-read_excel("F:/桌面/classR/第二次实验课_for student/原始数据表.xls")
x=data.frame(x)
rownames(x)=x[,1] # 第一列为行名
x=x[,-1]
head(x)
#1.对指标进行预处理(转换成正向指标,指标取值越大越好,并说明合理性!)
x[,1]=1/abs(x[,1]-2)
x[,2]=1/abs(x[,2]-1)
x[,3]=1/abs(x[,3]-50)
x[,4]=1/abs(x[,4]-3)
head(x)
#2.对整理的数据进行主成分分析,并说明保留主成分的合理性(累计贡献率,共同度,碎石图)。
cor(x)
View(cor(x)) #相关系数矩阵
#进行主成分分析
res.pc=princomp(x,cor=T)
summary(res.pc,loadings=T,cutoff=0.1) #累计贡献率-保留5个主成分
load=res.pc$loadings
c= 1.7972539^2*load[,1]^2+1.3900560^2*load[,2]^2+1.1340875^2*load[,3]^2+1.0229337^2*load[,4]^2+0.96075433^2*load[,5]^2
c # 共同度
screeplot(res.pc,type="line") #碎石图
#3.利用保留的前两个主成分对样本和指标聚类(图法),并分析聚类结果。
score=predict(res.pc)
plot(score,type='n')
text(score,labels=row.names(x),cex=0.7)
load2=res.pc$loadings[,1:2]
plot(load2,type="n")
text(load2,labels=names(x)[-c(2)],cex=0.7)
#4.对整理的数据进行因子分析。说明保留公因子的合理性和公因子含义。
x1=x[,1:8]
x2=x1[,-4]
fa=factanal(~.,factors = 3,data=x2)
fa
#5.利用因子综合得分排序,并给出最终的排序结果(应有综合评价公式)。
fa=factanal(~.,factors = 3,data=x2,scores = "regression")
fa
Factor=fa$scores #每个企业的公因子得分
Score=0.405*Factor[,1]+0.374*Factor[,2]+0.154*Factor[,3] #综合评价公式
Score
sort(Score,decreasing=T) # 最终排序结果
#6.剔除最后一个企业的因子得分(用于问题7),利用其余企业的因子得分进行k-均值聚类(类别数的确定、K-均值聚类结果),并说明(建议多考虑同类企业)每类的特征。
Factor0=cbind(Factor,scale(x[,4]),scale(x[,9]),scale(x[,10]))
colnames(Factor0)=c("Factor1","Factor2","Factor3","存货周转率","营业收入增长率","总资产增长率")
Factor1=Factor0[1:34,]
Factor1 # 加上之前提出的指标(标准化后),并剔除最后一个企业的信息
library(factoextra)
fviz_nbclust(Factor1,kmeans,method='wss') # wss曲线
km=kmeans(Factor1,2) # k均值聚类
km
fviz_cluster(km,data=Factor1) # 绘图
#7.基于6得到的分类,选择一种判别分析方法进行判别分析,给出判别精度,并对上面6中剔除的企业进行分类预测。
Factor2=cbind(Factor1,km$cluster)
colnames(Factor2)=c("Factor1","Factor2","Factor3","存货周转率","营业收入增长率","总资产增长率","cluster")
Factor2 #把聚类结果添加到数据
#距离判别法
#分到第一、二组的公司
Factor2.1=Factor2[Factor2[,7]==1,1:6] # 分到第一组的公司
Factor2.2=Factor2[Factor2[,7]==2,1:6] # 分到第二组的公司
# 预测结果——用马氏距离分别预测分到第一、二组的公司距离一、二组的距离
pre_dist1=mahalanobis(Factor1,colMeans(Factor2.1),cov(Factor2.1))
pre_dist2=mahalanobis(Factor1,colMeans(Factor2.2),cov(Factor2.2))
pre=max.col(-cbind(pre_dist1,pre_dist2)) # 输出预测结果
table(Factor2[,7],pre) # 由此计算判别精度
# 第三十五家公司
company35=c(Factor1=0.27952752,Factor2=-0.24693469,Factor3=-0.389799108,存货周转率=-0.36629952,营业收入增长率=-0.22178920,总资产增长率=-0.34897194)
dist1=mahalanobis(company35,colMeans(Factor2.1),cov(Factor2.1))
dist2=mahalanobis(company35,colMeans(Factor2.2),cov(Factor2.2))
which.min(c(dist1,dist2)) #对第35家公司的分类预测
R大作业2
于 2022-12-17 11:40:16 首次发布
本文通过读取Excel数据,首先对指标进行预处理,转化为正向指标,并解释其合理性。接着进行主成分分析,探讨保留主成分的依据。随后,利用主成分对样本进行聚类,并结合因子分析解读公因子。最后,通过K-均值聚类和判别分析对剔除企业进行分类预测。
摘要由CSDN通过智能技术生成