R语言教程之主成分与因子分析
当前位置:以往代写 > R语言教程 >R语言教程之主成分与因子分析
2019-06-13

R语言教程之主成分与因子分析

R语言教程之主成分与因子分析

主成分与因子分析


本节涵盖主要组成部分和因素分析。后者包括探索性和确认性方法。

主要组件

所述princomp()函数产生未旋转的主成分分析。

# Pricipal Components Analysis
# entering raw data and extracting PCs 
# from the correlation matrix 
fit <- princomp(mydata, cor=TRUE)
summary(fit) # print variance accounted for 
loadings(fit) # pc loadings 
plot(fit,type="lines") # scree plot 
fit$scores # the principal components
biplot(fit)

碎石情节 双标图 点击查看

使用cor = FALSE将主成分基于协方差矩阵。使用covmat =选项直接输入相关或协方差矩阵。如果输入协方差矩阵,请包含选项n.obs =。

psych包中principal()函数可用于提取和旋转主要组件。

# Varimax Rotated Principal Components
# retaining 5 components 
library(psych)
fit <- principal(mydata, nfactors=5, rotate="varimax")
fit # print results

mydata可以是原始数据矩阵或协方差矩阵。使用缺失数据的成对删除。旋转可以是“无”,“varimax”,“quatimax”,“promax”,“oblimin”,“simplimax”或“簇”

探索性因素分析

所述factanal()函数产生最大似然因子的分析。

# Maximum Likelihood Factor Analysis
# entering raw data and extracting 3 factors, 
# with varimax rotation 
fit <- factanal(mydata, 3, rotation="varimax")
print(fit, digits=2, cutoff=.3, sort=TRUE)
# plot factor 1 by factor 2 
load <- fit$loadings[,1:2] 
plot(load,type="n") # set up plot 
text(load,labels=names(mydata),cex=.7) # add variable names

探索性因素分析 点击查看

旋转=选项包括“最大方差法”,“PROMAX”和“无”。添加选项分数= “回归”或“巴特利特”以产生因子分数。使用covmat =选项直接输入相关或协方差矩阵。如果输入协方差矩阵,请包含选项n.obs =。

心理包中factor.pa()函数 提供了许多因子分析相关函数,包括主轴因子分解。

# Principal Axis Factor Analysis
library(psych)
fit <- factor.pa(mydata, nfactors=3, rotation="varimax")
fit # print results

mydata可以是原始数据矩阵或协方差矩阵。使用缺失数据的成对删除。旋转可以是“varimax”或“promax”。

确定提取的因素数量

探索性因素分析中的关键决定是要提取多少因素。n因子包提供一系列功能,在这个决定帮助。有关这种方法的详细信息可以在Raiche,Riopel和Blais PowerPoint演示文稿中找到当然,任何因素解决方案都必须被解释为有用。

# Determine Number of Factors to Extract
library(nFactors)
ev <- eigen(cor(mydata)) # get eigenvalues
ap <- parallel(subject=nrow(mydata),var=ncol(mydata),
  rep=100,cent=.05)
nS <- nScree(x=ev$values, aparallel=ap$eigen$qevpea)
plotnScree(nS)

因素的数量 点击查看

走得更远

FactoMineR包提供了大量的探索性因子分析的附加功能。这包括使用定量和定性变量,以及包含辅助变量和观察值。以下是您可以使用此包创建的图表类型的示例。

# PCA Variable Factor Map 
library(FactoMineR)
result <- PCA(mydata) # graphs generated automatically

factominer1 factominer2 点击查看

Thye GPARotation包提供了超过varimax和promax的丰富旋转选项。

结构方程建模

验证性因子分析 (CFA)是更广泛的结构方程模型 (SEM)方法学的子集SEM通过sem包装在R中提供模型通过RAM规格输入(与SAS中的PROC CALIS相似)。尽管sem是一个综合性的软件包,但我的建议是,如果您正在进行重要的SEM工作,那么您需要获得AMOS的副本它可以更加方便用户,并创建更具吸引力和出版物的输出。话虽如此,以下是使用sem的CFA示例。

CFA模型

假设我们有六个观察变量(X1,X2,…,X6)。我们假设存在两个未观测到的潜在因素(F1,F2),这些潜在因素如本图所述是观测变量的基础。在F1上加载X1,X2和X3(加载lam1,lam2和lam3)。F2上的X4,X5和X6加载(加载lam4,lam5和lam6)。双头箭头表示两个潜在因素(F1F2)之间的协方差。e1到e6表示残差(观测变量中的变量未被两个潜在因子考虑)。我们将F1和F2的方差设置为1,以便参数具有比例。这将导致F1F2代表两个潜在因素之间的相关性。

对于sem,我们需要观察变量的协方差矩阵 – 因此下面代码中cov()语句。CFA模型是使用specify.model()函数指定的格式为箭头指定参数名称起始值选择NA的起始值会告诉程序选择一个起始值而不是自己提供一个起始值。请注意,F1和F2的方差固定为1(第二列中的NA)。空行需要结束RAM规范。

# Simple CFA Model
library(sem)
mydata.cov <- cov(mydata)
model.mydata <- specify.model() 
F1 ->  X1, lam1, NA
F1 ->  X2, lam2, NA 
F1 ->  X3, lam3, NA 
F2 ->  X4, lam4, NA 
F2 ->  X5, lam5, NA 
F2 ->  X6, lam6, NA 
X1 <-> X1, e1,   NA 
X2 <-> X2, e2,   NA 
X3 <-> X3, e3,   NA 
X4 <-> X4, e4,   NA 
X5 <-> X5, e5,   NA 
X6 <-> X6, e6,   NA 
F1 <-> F1, NA,    1 
F2 <-> F2, NA,    1 
F1 <-> F2, F1F2, NA
mydata.sem <- sem(model.mydata, mydata.cov, nrow(mydata))
# print results (fit indices, paramters, hypothesis tests) 
summary(mydata.sem)
# print standardized coefficients (loadings) 
std.coef(mydata.sem)

您可以使用boot.sem()函数来引导结构方程模型。有关详细信息,请参阅帮助(boot.sem)另外,函数mod.indices( 将产生修改索引。通过重新指定参数,使用修改索引来改进模型拟合,可将您从验证性分析转换为探索性分析。

有关sem的更多信息,请参阅John Fox的“使用R中的sem Package进行结构方程建模”

来练习

要练习改进的预测,请尝试Kaggle R机器学习教程

    关键字:

在线提交作业