R语言做主成分分析的过程(检讨问题及新得)

简介:

我对R的评价是没有做不到的只有想不到的,谢谢楼主分享的ACP的分析过程。但是觉得Statistic的基础没有学好的话,虽然也能用R分析但是底气显得十分不足。

     昨天写了一篇关于主成分分析理解的文章,今早登陆QQ看到舍得老师的提醒,发现自己分析中有个比较严重的问题。问题产生的原因大体是这样造成的:

     这两天写毕设,想用主成分分析法确定权重,这个权重并不是确定所产生的各主成分的权重而是原始变量的权重,确定方法我在之前的文章中提到过,这里不表,欢迎大家纠错。在确定了原指标的权重后我思考为什么利用主成分分析法能够给原变量赋权,提出的假设是:相关变量间利用主成分分析法构建的原变量权重和原变量的方差有关。

     下面用R语言详细分析这一错误产生的过程,具体如下:

   1、提出猜想      

         > x<-read.table(“C:\Users\zp\Desktop\主成分.txt”,header=T)  &&读取数据

         > for(i in 1:5){cat(var(x[,i]))}                    &&各变量的方差
      输出:变量7:1.450593、变量7.1:0.9011858、变量7.2:0.6798419、变量7.3:0.3162055、

            变量7.4:0.7114625

     上图看到变量7、变量7.1的方差较大,于是猜想:如果变量方差大并且变量所在的第一、第二主成分系数也大,那么变量的方差对主要主成分的贡献可能也大。

   2、验证

        > a<-cor(x)               &&求相关矩阵(协方差)要求相关都为正

        > eigen(a)                &&输出特征值、特征向量

      输出:

      $values                     
      [1] 2.4827037 1.1607728 0.6199678 0.5945743 0.1419814       &&特征值

      $vectors                                                    &&特征向量
                [,1]       [,2]       [,3]       [,4]       [,5]
       [1,] -0.5154713  0.3474973  0.2857406  0.4043920  0.6069221
       [2,] -0.5901477  0.1397281  0.1231241  0.1860615 -0.7631666
       [3,] -0.3153434 -0.6165648 -0.6063161  0.3708382  0.1235566
       [4,] -0.3074906 -0.6295498  0.5665878 -0.4190523  0.1117583
       [5,] -0.4382044  0.2885074 -0.4631974 -0.6990868  0.1465133

   注1:顺便验证了一下R语言的输出特征向量是否已经单位化

       > f<-eigen(c)$vectors                       &&提取特征向量

       > for(i in 1:5){r[i]<-(f[i,1]^2)}           &&将第一列各数平方后赋予变量r

       > sum(r)                                    结论:可以看出r语言给出的特征向量是经过单位化的
       [1] 1

    注2:由合同矩阵的公式A=T(C)BC,其中A,B合同、C为特征矩阵,T(C)为C的转置,可知每列特征向量前符号的改变对合同矩阵的结果不产生影响,因此特征向量图中的第一列可全变为正号

    3、分析

    第一主成分的方差贡献率较大,变量7,变量7.1在第一主成分中的系数也较大,因此这两个变量是最能代表第一主成分的两个变量,而这两个变量的方差也较大,所以产生了方差大则对第一主成分贡献大的错误假设。

    4、纠错

    但这一假设的错误其实犯得很不应该,原因在于没有对原始数据进行标准化,标准化的意义就在于统一量纲,消除方差影响,这样一来所有变量的方差就为1了。所以,很遗憾,上面的计算过程都白整了,嘿嘿。

    5、标准化介绍

    目前R语言里标准化的简单代码我还不清楚,可以利用中心化处理后再处理或用EXCEL计算完直接读取数据,中心化为:

    scale(*,scale=F) 其中*为列向量,可以在此基础上除以原列向量标准差得标准化;

    还有个代码是 scale(*,center=F) 介绍里说是标准化,但我看了下结果肯定不是,所以还希望有懂这个代码的跟我说说;

    5、结论

    主成分分析只和相关有关,如果两个变量高度相关,或者多个变量高度相关,我设想在方差贡献较大的几个主成分里一定会有某个主成分是由这几个高度相关变量主要决定的,并且这一主成分的特征值会排在所有特征值的前列。这一结论还有待进一步的数学论证。另外我们看到有些特征向量里的符号不统一,这没关系,它是可以作为判定标准来评价的。例如,某校对学生成绩进行主成分分析,其中一个特征值较大的主成分为F=0.33*X1+0.54*X2+0.45*X3-0.32*X4-0.76*X5-0.43*X6,这里X1、X2、X3三变量分别为地理、历史、文化,X4、X5、X6三变量分别为数学、物理、计算机,那么可以根据这个主成分判定该学生更偏重文科还是理科,其结果文科必然是为正值,理科则为负值。

目录
相关文章
|
机器学习/深度学习 数据采集 算法
全网最快入门———R语言机器学习实战篇8《主成分分析》
R 语言是为数学研究工作者设计的一种数学编程语言,主要用于统计分析、绘图、数据挖掘。 机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
全网最快入门———R语言机器学习实战篇8《主成分分析》
|
7月前
|
机器学习/深度学习 数据可视化 算法
R语言聚类分析、因子分析、主成分分析PCA农村农业相关经济指标数据可视化|数据分享
R语言聚类分析、因子分析、主成分分析PCA农村农业相关经济指标数据可视化|数据分享
|
7月前
|
机器学习/深度学习 监控 数据可视化
R语言SOM神经网络聚类、多层感知机MLP、PCA主成分分析可视化银行客户信用数据实例2
R语言SOM神经网络聚类、多层感知机MLP、PCA主成分分析可视化银行客户信用数据实例
|
7月前
|
数据可视化
R语言大学城咖啡店消费问卷调查数据报告:信度分析、主成分分析可视化
R语言大学城咖啡店消费问卷调查数据报告:信度分析、主成分分析可视化
|
7月前
|
数据挖掘
R语言稀疏主成分分析、因子分析、KMO检验和Bartlett球度检验分析上市公司财务指标数据
R语言稀疏主成分分析、因子分析、KMO检验和Bartlett球度检验分析上市公司财务指标数据
|
7月前
|
数据采集 数据可视化 数据挖掘
使用R语言进行主成分分析(PCA)
【4月更文挑战第26天】本文介绍了如何使用R语言进行主成分分析(PCA),包括安装必要包`stats`、`FactoMineR`和`factoextra`,数据预处理如标准化,使用`PCA()`函数执行PCA,以及通过`summary()`、`fviz_pca_ind()`和`fviz_pca_var()`进行结果解读和可视化。此外,还讨论了如何通过载荷系数解释主成分,强调PCA在数据降维和探索数据结构中的作用。
283 1
|
7月前
|
数据可视化 安全 数据挖掘
数据分享|R语言用主成分分析(PCA)PCR回归进行预测汽车购买信息可视化
数据分享|R语言用主成分分析(PCA)PCR回归进行预测汽车购买信息可视化
|
7月前
|
数据可视化 算法 数据挖掘
R语言 PCA(主成分分析),CA(对应分析)夫妻职业差异和马赛克图可视化
R语言 PCA(主成分分析),CA(对应分析)夫妻职业差异和马赛克图可视化
|
7月前
|
数据可视化 算法
R语言主成分分析(PCA)葡萄酒可视化:主成分得分散点图和载荷图
R语言主成分分析(PCA)葡萄酒可视化:主成分得分散点图和载荷图
|
7月前
|
机器学习/深度学习 数据可视化 算法
R语言SOM神经网络聚类、多层感知机MLP、PCA主成分分析可视化银行客户信用数据实例1
R语言SOM神经网络聚类、多层感知机MLP、PCA主成分分析可视化银行客户信用数据实例