全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
32801 21
2014-12-12

文档排版有问题,可以下载附件,,假设有一个数据框a,num是样本序号,var1-var4是四个变量
> a
   num var1 var2  var3 var4
1    1 21.0 10.7  99.7  9.5
2    2  9.5 17.9 139.6 18.7
3    3 21.2  8.4  90.0  6.8
4    4 12.0 22.7  42.5 24.1
5    5  6.8 21.2  55.2 22.4
6    6  8.2 22.4  55.6 22.6
7    7  3.6 29.2  68.3 26.7
8    8 19.5 15.2  18.8 17.4
9    9 24.8  5.4  43.7  2.9
10  10  8.4 18.6 146.2 19.7
11  11 28.9  4.4   4.9  1.1
12  12 19.5 15.1  10.2 18.5
13  13 28.3  4.7  13.3  1.8
14  14 24.7 12.1 116.8 12.6
15  15 12.8 23.6  90.0 23.7
16  16 23.1  6.8 100.1  3.7
17  17 15.1 13.7 100.9 14.2
18  18  2.9  6.2  80.7  2.7
19  19 18.4 11.8  99.3 13.8
20  20 22.9 12.3  47.6 13.3
21  21  5.8 29.4  83.5 27.6
22  22 18.8  8.6  61.1  8.9
对四个变量进行主成分分析
pr<-princomp(~var1+var2+var3+var4,data=a,cor=TRUE,scores=TRUE)  #从相关矩阵求解,并列出主成分得分

> summary(pr,loadings=TRUE)
Importance of components:
                          Comp.1    Comp.2     Comp.3     Comp.4
Standard deviation     1.6430057 0.9753338 0.57235000 0.14721331
Proportion of Variance 0.6748669 0.2378190 0.08189613 0.00541794
Cumulative Proportion  0.6748669 0.9126859 0.99458206 1.00000000
Loadings:
     Comp.1 Comp.2 Comp.3 Comp.4
var1  0.530  0.111  0.836      
var2 -0.582  0.232  0.262 -0.734
var3 -0.233 -0.934  0.271      
var4 -0.571  0.247  0.399  0.674
Standard deviation 表示特征根的开方,Proportion表示主成分的贡献率,也就是,比如第1个特征值的贡献率0.6749 = 2.69946764 / (2.69946764+0.95127608+0.32758452+0.02167176)。
可以看出前两个主成分已经贡献了90%以上,可以保留两个主成分
loadings表示主成分的系数矩阵
> cor(a[,-1])        #列出四个变量的相关系数矩阵
           var1       var2       var3       var4
var1  1.0000000 -0.7352556 -0.3579002 -0.6830847
var2 -0.7352556  1.0000000  0.1825704  0.9752175
var3 -0.3579002  0.1825704  1.0000000  0.1738883
var4 -0.6830847  0.9752175  0.1738883  1.0000000

e<-cbind(a,pr$scores)       #加入主成分得分


> head(e)
  num var1 var2  var3 var4    Comp.1     Comp.2      Comp.3       Comp.4
1   1 21.0 10.7  99.7  9.5  0.775962 -0.8698329  0.34876728 -0.064368645
2   2  9.5 17.9 139.6 18.7 -1.422291 -1.4919746  0.09178083  0.082690047
3   3 21.2  8.4  90.0  6.8  1.209521 -0.7860833  0.09398025 -0.055128662
4   4 12.0 22.7  42.5 24.1 -1.416036  1.1717796  0.11009779  0.055716119
5   5  6.8 21.2  55.2 22.4 -1.610139  0.6979540 -0.48820410  0.118147542
6   6  8.2 22.4  55.6 22.6 -1.624810  0.7512985 -0.28509515  0.001357859





那么主成分得分是怎么来的呢?
先对原始变量进行标准化,然后乘以相应的特征向量就是主成分
b<-scale(a[,-1])
b%*%pr$loadings



特征值和特征向量隐藏的秘密主成分变量对应的特征向量的每个元素,与对应的特征值的平方根的乘积,等于该主成分变量,与该元素列标签对应的原始变量之间的相关系数。这是特征值与特征向量隐藏的秘密,可以用矩阵代数严格推导出来。不过这句话读起来比较费劲,我们用图8来表示这一关系。图中的eigVec1至eigVec4是4个特征向量,对应的特征值分别为eigVal1至eigVal4。我们在每个列中进行操作,用特征向量每个元素分别乘以对应特征值的平方根,得到该主成分变量与所有原始变量的相关系数。







二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-12-12 17:30:15
精彩的分析
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-12-12 18:39:45
真不错啊
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-2-5 17:02:04
一直没搞懂,主成分中的最后的方程怎么来,那些系数是直接来自loading吗?如何写出主成分与原变量的线性关系
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-2-5 17:03:34
ウ兴ウ 发表于 2015-2-5 17:02
一直没搞懂,主成分中的最后的方程怎么来,那些系数是直接来自loading吗?如何写出主成分与原变量的线性关系 ...
大致就是在某约束条件下,求的最大特征根和特征向量
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-2-5 17:07:39
李会超 发表于 2015-2-5 17:03
大致就是在某约束条件下,求的最大特征根和特征向量
额。。。我想知道score是怎么算出来的,而且那个是怎么用的
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群