主成分分析R软件实现程序(一):

>d=read.table("clipboard",header=T) #从剪贴板读取数据

>sd=scale(d)  #对数据进行标准化处理

>sd  #输出标准化后的数据和属性信息,把标准化的数据拷贝到剪贴板备用

>d=read.table("clipboard",header=T)  #从剪贴板读取标准化数据

>pca=princomp(d,cor=T)  #主成分分析函数

>screeplot(pca,type="line",mian="碎石图",lwd=2)  #画出碎石图

从碎石图上可以看出,前两个主成分的方差贡献率比重比较大,下面计算前两个主成分的累积方差贡献率是否超过80%……

>dcor=cor(d) #求相关矩阵

>deig=eigen(dcor)  #求相关矩阵的特征值和特征向量

>deig$values #输出特征值

>sumeigv=sum(deig$values)

>sumeigv   得到k值

>sum(deig$values[1:2])/k #求前两个主成分的累积方差贡献率

>pca$loadings[,1:2]  #输出前2个主成分的载荷系数

观察载荷系数可以得到:主成分C1在……

>deig$values[1]/k;deig$values[2]/k; #计算主成分C1、C2的系数b1、b2

C=(b1*C1+b2*C2)/(b1+b2)=q1*C1+q2*C2

>s=pca$scores[,1:2] #输出前两个主成分的得分

>c=s[1:评价对象的个数,1]*q1+s[1:评价对象的个数,2]*q2

>cbind(s,c)

然后把综合得分c的值从小到大排序,得到最后评价结果。

注意:在这里c的值指的是c的实数的值,并非绝对值。

主成分分析R软件实现程序(二):较为简便

在excel中点击复制要读取的文件

>data<-read.table("clipboard",header=T,sep='\t')

>data

>data.pr<-princomp(data,cor=TRUE) #data为数据矩阵或数据框,cor为是否用相关阵,默认为协差阵,scores为是否输出成分得分

>summary(data.pr,loading=TRUE) #loading=TURE选项列出了主成分对应原始变量的系数

其中:standard deviation 标准偏差 Porportion of Variance 贡献率(方差比例)

comulative proportion 累计贡献率(累计比例)

画出三种碎石图:

>screeplot(data.pr)  #条型

>biplot(data.pr)    #分散型

>screeplot(data.pr,type=("line"))  #线型

主成分分析R软件实现程序(三):作业

首先读取成绩数据

```{r, echo=TRUE}
grade <- read.csv(file.choose(),sep=",",header=T)
```
下面对数据进行标准化处理
```{r, echo=TRUE}
sd_grade <- scale(grade[2:43,2:7]);sd      #对数据进行标准化处理
sd_grade_pcomp <- princomp(sd_grade,cor=T);   #sd_grade_pcomp #主成分分析函数,cor=T为使用相关系数阵来进行分析,默认用协方差阵
summary(sd_grade_pcomp,loadings=TRUE)

#形成一个总结,内含standard deviation 标准偏差 Porportion of Variance 贡献率(方差比例)comulative proportion 累计贡献率(累计比例)

```

由结果看,前三个主成分的累积贡献方差率已达85%,故可选前三个主成分.

```{r, echo=TRUE}
screeplot(sd_grade_pcomp,type="lines")
p<-predict(sd_grade_pcomp);p
```

R语言学习之主成分分析法的R实践的更多相关文章

  1. R 语言学习笔记(1)——R 工作空间与输入输出

    什么是工作空间? 工作空间(workspace)就是当前 R 的工作环境,它储存着所有用户定义的对象(objectives)包括了向量.矩阵.函数.数据框.列表等. 处理 R 文件的工作流程 #设置当 ...

  2. R语言学习 第四篇:函数和流程控制

    变量用于临时存储数据,而函数用于操作数据,实现代码的重复使用.在R中,函数只是另一种数据类型的变量,可以被分配,操作,甚至把函数作为参数传递给其他函数.分支控制和循环控制,和通用编程语言的风格很相似, ...

  3. R语言学习 第一篇:变量和向量

    R是向量化的语言,最突出的特点是对向量的运算不需要显式编写循环语句,它会自动地应用于向量的每一个元素.对象是R中存储数据的数据结构,存储在内存中,通过名称或符号访问.对象的名称由大小写字母.数字0-9 ...

  4. R语言学习 第九篇:plyr包

    在数据分析中,整理数据的本质可以归纳为:对数据进行分割(Split),然后应用(Apply)某些处理函数,最后将结果重新组合(Combine)成所需的格式返回,简单描述为:Split - Apply ...

  5. R语言学习 第十一篇:日期和时间

    R语言的基础包中提供了三种基本类型用于处理日期和时间,Date用于处理日期,它不包括时间和时区信息:POSIXct/POSIXlt用于处理日期和时间,其中包括了日期.时间和时区信息.R内部在存储日期和 ...

  6. R语言学习路线和常用数据挖掘包(转)

    对于初学R语言的人,最常见的方式是:遇到不会的地方,就跑到论坛上吼一嗓子,然后欣然or悲伤的离去,一直到遇到下一个问题再回来.当然,这不是最好的学习方式,最好的方式是——看书.目前,市面上介绍R语言的 ...

  7. R语言学习笔记:基础知识

    1.数据分析金字塔 2.[文件]-[改变工作目录] 3.[程序包]-[设定CRAN镜像] [程序包]-[安装程序包] 4.向量 c() 例:x=c(2,5,8,3,5,9) 例:x=c(1:100) ...

  8. R语言学习笔记之: 论如何正确把EXCEL文件喂给R处理

    博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html ---- 前言: 应用背景兼吐槽 继续延续之前每个月至少一次更新博客,归纳总结学习心得好习惯. ...

  9. R语言学习笔记(二)

    今天主要学习了两个统计学的基本概念:峰度和偏度,并且用R语言来描述. > vars<-c("mpg","hp","wt") &g ...

随机推荐

  1. 在iOS当中发送电子邮件和短信

    iOS实现发送电子邮件的方法很简单,首先导入MessageUI.framework框架,然后代码如下: #import "RPViewController.h" //添加邮件头文件 ...

  2. 漏掉的账目(用C语言去重)

    问题描述: 某财务部门结账时发现总金额不对头.很可能是从明细上漏掉了某1笔或几笔.如果已知明细账目清单,能通过编程找到漏掉的是哪1笔或几笔吗? 如果有多种可能,则输出所有可能的情况. 我们规定:用户输 ...

  3. js 使用for循环遍历数组

    今天写个无聊的东西!for循环的使用! 例如以下:定义a数组,b为伪数组! var a = [1,2,3,0,5,4]; var b = document.getElementsByTagName(' ...

  4. rem单位

    rem单位 rem基础 px是固定单位,不同分辨率下效果不一样,导致网页布局出现偏差. em是根据父元素来改变字大小 rem是根据根元素html来改变字体大小,只要改变了根元素的font-size就可 ...

  5. SQL学习之Insert的特殊用法(插入检索出的数据,表之间的数据复制)

    1.插入检索出的数据 select * from dbo.Customers_1

  6. 一年三篇IF大于7的牛人告诉你怎么写SCI

    一年三篇IF大于7的牛人告诉你怎么写SCI 1 研究生必备四本 俗话说好记性不如烂笔头,所以一定要首先养成做笔记的好习惯!作为研究生下面这几个本子是必不可少的: 1.实验记录本(包括试验准备本),这当 ...

  7. JavaSE复习日记 : 实例化对象/构造方法和this关键字

    /* * 实例化对象/对象的构造方法/this关键字 */ /* * 实例化对象 * * 就是实例化某一个类; * 从不同角度去理解的话就是: * 1. 从人的认知角度: * 就是具体化某个东西; * ...

  8. C++类的常成员函数

    让一个成员函数带上常量性是什么意思呢?通常的答案是,一个常成员函数不会更改其class对象.这是一种平凡的表述,而编译器实现的手法也相当平凡. 任何非静态成员函数其实都被编译器隐式插入了一个指针类型的 ...

  9. C++ HttpServlet 高并发多线程 HTTP 服务器(转)

    from:http://www.oschina.net/code/snippet_568966_43193   C/C++ 程序虽然执行效率高,但程序员在开发 WEB 应用时却因为没有好的 WEB 开 ...

  10. [C#参考]事件机制

    还是那个项目,为了降低程序的耦合性,我决定小小的重构一下自己原来的代码,把Socket通信和帧的分析这两部分分别封装成一个类,当然线程没有变,只是封装了一下,为的就是模块测试完容易拼接.这也是我打算降 ...