如果这个世界上有比同样东西完整看不懂更使人头大的事情,那就是一堆东西都看不懂
进正文,错了也不退不换,就这样吧文章源自微观生活(93wg.com)微观生活-https://93wg.com/23281.html
首先看看今天举例用的数据:文章源自微观生活(93wg.com)微观生活-https://93wg.com/23281.html
标落款字长是原罪,一个字,改文章源自微观生活(93wg.com)微观生活-https://93wg.com/23281.html
然后给个友谊提示,这篇表格里不是所有数值都齐全的,所以要先检查下缺失的NA项文章源自微观生活(93wg.com)微观生活-https://93wg.com/23281.html
不多,就一行,然而自身数据源就没多长,这还少一行也怪不爽的文章源自微观生活(93wg.com)微观生活-https://93wg.com/23281.html
虽然说R中提供的PCA工具没有强制请求先做去中心的步骤,但为了结果看起来不要一大堆科学计数,咱还是提早按z-score标准化做一下比较好文章源自微观生活(93wg.com)微观生活-https://93wg.com/23281.html
Mean <- apply(Table1,2,mean, na.rm = TRUE)文章源自微观生活(93wg.com)微观生活-https://93wg.com/23281.html
SD <- apply(Table1,2,sd, na.rm = TRUE)文章源自微观生活(93wg.com)微观生活-https://93wg.com/23281.html
Table2 <- t((t(Table1)-Mean)/SD)文章源自微观生活(93wg.com)微观生活-https://93wg.com/23281.html
因为有NA的那行在这里还没去掉,所以做apply函数时都多传了个na.rm = TRUE的参数进去文章源自微观生活(93wg.com)微观生活-https://93wg.com/23281.html
z标准化最主要的用途,一是去中心化,把向量的均值平移到0,另外一方面就是把方差统一到1
在正式上主菜以前,先大致瞅瞅这些数据之间有无存在线性关系
相关系数矩阵,用函数cor,仍然要记得传入额外参数来排除了NA值的影响
cor(Table2,use = \"na.or.complete\")
看到大片都是0.9几的,貌似靠谱,嫌看数字眼晕的也能够直接plot画图,尽管那个我个人感觉更眼晕
plot(as.data.frame(Table2))
(负疚,前面用t转置时表格式自动变为矩阵了,现在还得转回数据帧格式)
前菜收场,上正餐,希望亲们这会儿还吃得下
主成份分析用的函数叫prcomp,一般来讲直接放个矩阵(数据帧不可以哟)进去是可以不用参数的,但为了排除了那个麻烦的NA值,这里用了S3 Method的写法,在表格前加条波浪线 ~ 表示公式接口,这样就能够使用na.action的参数了
PCA1 <- prcomp(~Table2,na.action = na.omit)
因为需要提出里边的Standard deviations,所以容我先瞄一下这个输出结果的文件结构
找到了,简称sdev,咱的变量只有5个,一般来讲提取到80%就算差不多
看来比预期的还要幸福一点,前两个主成份就能够覆盖到90%+了呢
至于如何提取前两个主成份的结果,咱既可以选择直接从前边的结果顶用方括号拿出来,也能够在做prcomp的时候就传入参数rank.限制显示前几个主成份,都行
PCA2 <- prcomp(~Table2,na.action = na.omit,rank. = 2)
还记得矩阵乘法不,所谓加权以及在向量计算中就是个矩阵乘法,所以——五列数据变两列,就是一个%*%的事
呼呼呼,完成啦,闪人
以上就是微观生活(93wg.com)关于“R语言第28篇——主成份分析”的详细内容,希望对大家有所帮助!
评论