本文我们应用的软件为R语言,进行多元统计分析,所用的数据集为鸢尾花数据集;我们进行了Bayes判别、Fisher判别、系统聚类法、k-均值聚类和主成分分析。
# 导入鸢尾花数据集
data<-read.csv("E:/数学专业/多元统计学上机作业/iris.csv",header=T)
iris<-data[,-6]
# 分析变量之间的关系
data1<-as.matrix(data[,-c(5,6)]) # 去除最后一行符号行
我们首先画出变量之间的散点图:
# 画出变量之间的散点图
pairs(data1)
紧接着我们运用Fisher判别:
# Fisher判别
head(data)
by(data[,1:4],data[,5],colMeans) # 比较三类鸢尾花在4个变量上的均值
library(MASS)
z<-lda(species~.,data[,-6],prior=c(1,1,1)/3) # Fisher判定,设定三个类别的先验概率均为1/3
z
iris.lda.values<-predict(z) # 对现有样本进行预测
ldahist(data=iris.lda.values$x[,1],g=iris$species) # 输出在第一方向上,三个类别投影的直方图
ldahist(data=iris.lda.values$x[,2],g=iris$species)
可以得到结果为 :
紧接着应用Bayes判别,将数据分为训练集与测试集可以得到准确率吧达到97%。
在应用k-均值聚类,得到
# k-means聚类
install.packages("factoextra")
library(ggplot2)
library(factoextra)
library(cluster)
kmeans(data1[,1:4],3,nstart = 100) # 使用足够大的nstart,更容易得到对于最小的RSS值得模型
画出碎石图,可以知道我们将样本分为三类是最好的结果,这一结果也符合我们数据的本来特性。
最后用主成分分析可以得到
# 主成分分析
PCA1<-princomp(data1,cor=T)
summary(PCA1,loadings=T)
samplePC<-round(PCA1$scores,3) # 取样本主成分得分后3位
round(predict(PCA1),3)
screeplot(PCA1,type='lines') # 画碎石图
plot(samplePC[,1],samplePC[,2],xlab='大小因子',ylab='体型因子')
text(samplePC[,1],samplePC[,2],1:30,adj=-0.5,cex=0.8)
版权归原作者 qq_59382597 所有, 如有侵权,请联系我们删除。