主成分分析(PCA)是一种将数据降维技巧,它将大量相关变量转化成一组很少的不相关变量,这些无相关变量称为主成分。
探索性因子分析(EFA)是一系列用来发现一组变量的潜在结构的方法。
R基础安装包提供了PCA和EFA的函数,分别是princomp()和factanal()。本章重点介绍psych包中提供的函数,该包提供了比基础函数更丰富和有用的选项。
最常见步骤
1、数据预处理,在计算前请确保数据没有缺失值;
2、选择因子模型,是选择PCA还是EFA,如果选择EFA,需要选择一种估计因子模型,如最大似然法估计;
3、判断要选择的主成分/因子数目;
4、选择主成分/因子;
5、旋转主成分/因子;
6、解释结果;
7、计算主成分或因子得分。
加载psych包
library(ggplot2)
library(psych)
展示基于观测特征值的碎石检验、根据100个随机数据矩阵推导出来的特征值均值、以及大于1的特征值准则(Y=1的水平线)
fa.parallel(USJudgeRatings[, -1], fa = "pc", n.iter = 100, show.legend = FALSE, main = 'Scree plot with parallel analysis')
对数据USJudgeRatings进行主成分分析
pc<-principal(USJudgeRatings[, -1],nfactors=1)
pc
多层回归模型通常涉及到对同一个体进行反复测量,这样得到的数据就不再相互独立而是存在某种相关性,所以普通线性回归不再适用。当这种反复测量是在不同时点上进行时,这就称为面板数据分析(panel data analysis)或者纵向数据分析(longitudinal data analysis)。#灰色预测模型GM(1,1)#用法:
#假设数列1 2 3 4 5.5 6 7.5 为已知数据,你要预测后面3项,gm11([1 2 3 4 5.5 6 7.5],10) # 10=7+3
# 序列输入格式为:x<-c(1,2,3,4,5.5,6,7.5)
gm11<-function(x,k)
{
#x为行向量数据
#做一次累加
n<-length(x)
x1<-numeric(n)
for(i in 1:n)
{
x1[i]<-sum(x[1:i])
}
#x1的均值数列
z1<-numeric(n)
m<-n-1
for(j in 1:m)
{
z1[j+1]<-(0.5*x1[j+1]+0.5*x1[j])
}
Yn=t(t(x[2:n]))
B<-matrix(1,nrow=n-1,ncol=2)
B[,1]<-t(t(-z1[2:n]))
#solve(M)求M的逆
#最小二乘法求解参数列
u<-solve(t(B)%*%B)%*%t(B)%*%Yn
a<-u[1]
b<-u[2]
#预测
x2<-numeric(k)
x2[1]<-x[1]
for(i in 1:k-1)
{
x2[1+i]=(x[1]-b/a)*exp(-a*i)+b/a
}
x2=c(0,x2)
#还原数据
y=diff(x2)
y
}
#调用函数
x<-c(1,2,3,4,5.5,6,7.5)
gm11(x,10)