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

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

原文地址: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三变量分别为数学、物理、计算机,那么可以根据这个主成分判定该学生更偏重文科还是理科,其结果文科必然是为正值,理科则为负值。

时间: 2024-10-31 22:25:32

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

如何让Hadoop结合R语言做大数据分析?

为什么要让Hadoop结合R语言? R语言和Hadoop让我们体会到了,两种技术在各自领域的强大.很多http://www.aliyun.com/zixun/aggregation/7155.html">开发人员在计算机的角度,都会提出下面2个问题.问题1: Hadoop的家族如此之强大,为什么还要结合R语言? 问题2: Mahout同样可以做数据挖掘和机器学习,和R语言的区别是什么?下面我尝试着做一个解答:问题1: Hadoop的家族如此之强大,为什么还要结合R语言? a. Hadoop

《R的极客理想——高级开发篇 A》一一1.5 R语言的导数计算

1.5 R语言的导数计算 问题 如何用R语言进行导数计算? 引言 高等数学是每个大学生都要学习的一门数学基础课,同时也可能是考完试后最容易忘记的一门知识.我在学习高数的时候绞尽脑汁,但始终都不知道为何而学,生活和工作基本用不到,就算是在计算机行业和金融行业,能直接用到高数的地方也少之又少,学术和实际应用真是相差太远了. 不过,R语言为我打开了一扇高数应用的大门,R语言不仅能方便地实现高等数学的计算,还可以很容易地把一篇论文中的高数公式应用于产品的实践中.因为R语言我重新学习了高数,让生活中充满数

R(2)时间序列分析及应用之TSA安装(R语言)

本文原文连接: http://blog.csdn.net/freewebsys/article/details/45830613 转载请注明出处! 1,关于时间序列 时间序列分析(Time series analysis)是一种动态数据处理的统计方法.该方法基于随机过程理论和数理统计学方法,研究随机数据序列所遵从的统计规律,以用于解决实际问题. 关于R环境搭建参考我之前写的文章: http://blog.csdn.net/freewebsys/article/details/45825267 参

《R的极客理想——高级开发篇 A》一一1.2 R语言中的数学计算

1.2 R语言中的数学计算 问题 如何用R语言进行数学计算? 引言 R语言是统计语言,生来就对数学有良好的支持,用R语言做数学的计算题特别方便.如果计算器中能嵌入R语言的计算函数,那么绝对是一种高科技产品.我真的把R语言当成我的计算器了!1.2.1 基本计算 R语言对数学计算有着非常好的支持,本节将完整介绍初等数学中的各种计算操作. 本节的系统环境是: Windows 7 64bit R: 3.1.1 x86_64-w64-mingw32/x64 (64-bit) 用R语言实现四则运算操作,包括

预测分析:R语言实现1.3 预测建模的过程

1.3 预测建模的过程 通过观察模型的某些不同特征,我们已经对预测建模过程的各种步骤有所了解.在本节,我们要顺序讲解这些步骤,并理解每个步骤是如何对该任务的整体成功起作用的. 1.3.1 定义模型的目标 简而言之,每个项目的第一步是准确找出期望的结果是什么,因为这样有助于引导我们在项目的进展过程中做出正确的决定.在一个预测分析学项目里,这个问题包括深入研究我们要进行的预测的类型,以及从细节上去理解任务.例如,假定我们要尝试创建一个模型来预测某公司的雇员流失.我们首先需要准确定义这个任务,同时尽量

一文读懂R语言 R可以做所有SAS做的事情

以下5种语言 NODE.LUA.Python.Ruby.R ,哪个在2014年的应用前景会更好? 我毫不犹豫的选择R.R不仅是2014年,也是以后更长一段时间的主角. 1. 我的编程背景 本人程序员.架构师,从编程入门到今天,一直深信着Java是改变世界的语言,Java已经做到了,而且一直很辉煌.但当Java的世界越来越大,变得无所不能的时候,反而不够专业,给了其他语言发展的机会. 本次要比较要5种编程语言(NODE,LUA,Python,Ruby,R),这些都是非常优秀的,在特定领域发展壮大的

R语言快餐教程(1) - 我们开始做统计吧

R语言快餐教程(1) - 我们开始做统计吧 R语言简介 R语言是基于S语言的一种开源实现.S语言是贝尔实验室最早开发的一种用于统计的工具,后来成为商业的S-PLUS软件,是一种与SAS和SPSS齐名的统计软件. R语言的官方网址是:[https://www.r-project.org/] R语言的一个重要的优势就是R的生态,有大量的高质量的第三方的统计和算法相关的包. 在R中活下去 获取帮助 首先我们学习如何在R中获取函数帮助和函数的例子. help(函数名) 例:比如我们想知道标准差函数sd的

R语言数据挖掘

数据分析与决策技术丛书 R语言数据挖掘 Learning Data Mining with R [哈萨克斯坦]贝特·麦克哈贝尔(Bater Makhabel) 著 李洪成 许金炜 段力辉 译 图书在版编目(CIP)数据 R语言数据挖掘 / (哈)贝特·麦克哈贝尔(Bater Makhabel)著:李洪成,许金炜,段力辉译. -北京:机械工业出版社,2016.9 (数据分析与决策技术丛书) 书名原文:Learning Data Mining with R ISBN 978-7-111-54769-

预测分析:R语言实现.

数据科学与工程技术丛书 预测分析:R语言实现 Mastering Predictive Analytics with R [希] 鲁伊·米格尔·福特(Rui Miguel Forte) 著 吴今朝 译 图书在版编目(CIP)数据 预测分析:R语言实现/(希)鲁伊·米格尔·福特(Rui Miguel Forte)著:吴今朝译. -北京:机械工业出版社,2016.10 (数据科学与工程技术丛书) 书名原文:Mastering Predictive Analytics with R ISBN 978-