主身分阐明的步调及R代码
当前位置:以往代写 > 其他教程 >主身分阐明的步调及R代码
2019-06-14

主身分阐明的步调及R代码

主身分阐明的步调及R代码

拿到原始数据X=[x1,x2,…xp];
个中xi 是列向量(1..N);这就是说X是N×P的矩阵,有N个样本,P个指标


接下来,要做的是尺度化处理惩罚,因为差异的指标大概4量纲可能数据区间差异等等
(1)xij*=xij-mean(xj)/var(xj)(尺度差);
个中xij*是尺度化的数据值,xj暗示第j列数据;
(2)计较相关矩阵
(3)计较特征值和特征矩阵
(4)主身分孝敬率及累计孝敬率
可以按照特征值的比率来计较
(5)计较主身分载荷,也就是主身分和原始变量的系数
(6)获得个主身分的值
R code:
M<-ncol(X);
cor(X)->c;
eigen(c)->e;
cumsum(e$values)/sum(e$values)#看出累计的主身分比例,按照这个来选择几个主身分。
cof<-matrix(0,n,M);#n是选择几个主身分,M是数据列数,也就是较大的主身分数,cof是为了生存系数的
for(i in 1:n){
cof[,i]=sqrt(e$values[i])*e$vectors[,i];#主身分载荷=sqrt(人i)*Eij
}
as.matrix(x)%*%cof->pc#pc就是最后要的几个主身分了
#可是R语言里的载荷就是特征向量的值scale(as.matrix(X))%*%e$vectors->pr #reference from 统计学与R念书条记
pr就是主身分的值了,这里就需要按照之前特征值的比例来猜测几个主身分符合
另一种利便的要领是:
prcomp(X,scale=T)->pr;#意思是操作相关矩阵计较主身分
summary(pr);#可以看出特征值和特征向量
predict(pr)#主身分
再一种要领:
princomp(X,cor=T)->pr;# 与上面的一样
summary(pr,loadings=T);#loadings only for princomp
predict(pr);
screeplot(pr);#可以看出主身分的方差,
biplot(pr);#我不太清楚


#有时候在二位得基本上实在看不清楚,只能借用三维空间
library(“rgl”)


plot3d(pca[,1],pca[,2],pca[,3],pch=”+”) #

    关键字:

在线提交作业