PCA主成分分析_R语言实战

PCA主成分分析_R语言实战,第1张

作为零计算机基础,纯生物背景的实验喵,有很多技能还不会,只希望将自己学习到的知识记录下来,一方面让自己能够时常温故知新,一方面与大家分享学习内容和心得,一起进步呀。

主成分分析(principle component analysis,PCA)是常用的线性数据降维方法,通过某种线性投影,将高维的数据映射到低维的空间中,并期望在映射到的低维空间中包含的信息量最大,即使用较少的数据维度来代表(保留)较多原始数据的特性。话句话说,就是把多个变量化成少数几个主成分的方法,这些主成分能够反映原始变量的大部分信息,为原始变量的线性组合。

R中作为主成分分析最主要的函数是 princomp() 函数

princomp() 主成分分析   可以从相关阵或者从协方差阵做主成分分析

summary() 提取主成分信息

loadings() 显示主成分分析或因子分析中载荷的内容

predict() 预测主成分的值

screeplot() 画出主成分的碎石图

plot() 画出数据关于主成分的散点图和原坐标在主成分下的方向

##设置工作路径

setwd("E:/R practice result")

##查看工作路径

getwd()

##读取数据

data <- readcsv("E:/R practice file/students_datacsv",header = T)
##进行主成分分析

datapr <- princomp(data,cor = T) ##cor=T的意思是用相关系数进行主成分分析
##观察主成分的详细情况

summary(datapr,loadings = T)
##计算得到各个样本主成分的数据

pca_data <- predict(datapr)

##将文件写出,进行本地保存

writetable(pca_data,file = "E:/R practice result/pca_datatxt",rownames = T,colnames = T,quote = F,sep = "\t")
#画出主成分碎石图,主成分方差占总体方差的情况,辅助判断主成分提取个数。当折线由陡峭突然变得平稳时,陡峭到平稳对应的主成分个数即为参考提取主成分个数。X轴表示可能的因子数。在整个曲线下降的过程中,理论上会存在一点,该点处曲线出现明显的弯折,该点对应的X轴的数字即应保留的因子数。

screeplot(datapr,type="lines")

#添加划分成分的参考线

abline (v = 2 ,   col = "#900021", lwd = 2, lty = 2)
#计算前两个主成分Comp1和Comp2得分,保存到datapr2

data_pr2 <- datapr$score[,1:2]    或者data_pr2 <- pca_data[,1:2]

writetable(data_pr2,file = "E:/R practice result/data_pr2txt",rownames = F,colnames = T,quote = F,sep = "\t")
plot(data_pr2, main = "after PCA") 或者plot(pca_data[,1:2])

cronbach’s alpha系数,一般翻译成克隆巴赫alpha系数,效度用探索性因子分析(KMO和Bartlett)。

alpha等于 测验题目数/(测验题目数-1) 乘 {1 - 各被试在该题目上的方差的和 / 所有被试总分的方差 }

K即第一个公式的n,代表题目数量。

小sigma方即第一个公式的S方,代表方差。

然后直接调用就可以。

参考文献:

道客巴巴
qq_43157351 R语言与克朗巴哈alpha系数
用R语言实现Cronbach 值的计算

λi表示题目i在潜变量ξ上的负荷, δi是误差项, 误差之间不相关。整个测验分数X=x1+x2+…xp的合成信度如上图 (叶宝娟, 温忠麟, 2011;Brown, 2006;Yang&Green, 2010)

假设一个单维测验由p个题目组成, 测量了一个因子F, 测验施测后, p个题目的标准化变量为 (i=1, 2, , p) ,可以按照以下方式计算。
其中, εi是只和i有关的特殊因子 (也称为误差项) , λi是第i个变量i在因子F上的负荷。假设题目误差不相关, 如果整份测验的分数相加有意义, 则单维测验整份测验X=1+2++p的合成信度为:

其中, θi为i的误差方差, (2) 式也可计算多维测验单个维度的合成信度。如果用固定方差法指定因子测量单位, 即var (F) =1, 则上式变为:

因为X i 是标准化变量, 所以Σ θ=p-Σ λ2则 (3) 式变为:

上图这个表达式更易懂一些,也更容易计算。
λ为因子载荷量,p为题目个数。

计算出因子载荷量之后可以通过函数计算ρ

参考文献:
杨强 叶宝娟 温忠麟(2014) 用SPSS软件计算单维测验的合成信度 中国临床心理学杂志: 22(03), 496-498
温忠麟(2011) 单维测验合成信度三种区间估计的比较

一、内在效度(content related validity):研究者的发现与事实相符合的程度,即研究结果是不是真的在测量事实的真相的能力。

二、内容效度的评估方法 :1专家判断法; 2统计分析法(评分者信度\复本信度\折半信度\再测法); 3经验推测法 (实验检验)

提高内部效度的方法:

1.三角检定法:多元的搜集资料方式,包括不同的资料来源(报章、官方文件、会议记录),访谈不同人员(如教师、行政人员、学者专家),及采用不同资料的搜集方法(如访谈、观察、非正式讨论)等,来相互验证资料与实施的相符程度。
2.研究对象的核查:和被研究者一起讨论定稿,以确定自己记录的是其所叙的。
3.持续的观察

来自:qiuyaofeng2012 信度和效度经典例子_第四节个案研究的效度与信度 CSDN

一、构想效度:测验能够测量到理论上的构想或特质的程度,即测验的结果是否能证实或解释某一理论的假设、术语或构想,其解释的程度如何。

二、构想效度的估计方法:1 对测验本身的分析(用内容效度来验证构想效度);2 测验间的相互比较:相容效度(与已成熟的相同测验间的比较)、区分效度(与近似或应区分测验间的比较)、因素分析法 ;3 效标效度的研究证明 ;4 实验法和观察法证实

衡量测验有效性的参照标准,指的是可以直接而且独立测量的我们感兴趣的行为。
又称 实证效度 ,反映的是测验对个体的预测在某种情境下的有效性程度(所测情况与实际情况之间的相关)。
根据效标资料是否与测验分数同时获得,又可分为 同时效度 (实际士气高和士气低的人在士气测验中的得分一致性。)和 预测效度 两类。

1相关法:效度系数、效标效度常用方法。以皮尔逊积差相关系数来表示,反映测验分数与效标测量之间的相关程度。
当测验成绩是连续变量,而效标资料是二分变量时,计算效度系数可用点二列相关公式或二列相关公式;
当测验分数为连续变量,效标资料为等级评定时,可用贾斯朋多系列相关公式计算。

2区分法:检验 测验分数 能否有效地区分 由效标所定义的团体
进行t检验,若差异显著,说明该测验能够有效地区分由效标定义的不同团体(如抑郁 测验得分 的高低可以区分出 真正的 高抑郁组和 真正的 低抑郁组),
重叠百分比可以通过计算每一组内得分超过(或低于)另一组平均数的人数百分比得出;
另外,还可以计算两组分布的共同区的百分比。重叠量越大,说明两组分数差异越小,即测验的效度越差。

3命中率法:是当测验用来做取舍的依据时,用其正确决定的比例作为效度指标的一种方法。命中率的计算有两种方法,一是计算总命中率,另一种是计算正命中率。

4、预期表法:是一种双向表格,预测分数排在表的左边,效标排在表的顶端。从左下至右上对角线上各百分数字越大,而其它的百分数字越小,表示测验的效标效度越高 ;反之,数字越分散,则效度越低。

命中率法和预期表法相似。详细可参照戴海琦,张锋<心理与教育测量>第五章:测量效度

一般在研究中用到的效度指标是结构效度,测量题与测量变量之间的对应关系。可以使用探索性因素分析(exploratory factor analysis,EFA)和验证性因子分析(comfirmatory factor analysis,CFA)

计算协方差矩阵/相关系数矩阵。可以利用cov2cor()将协方差转化为相关系数矩阵,也可利用cor2cov()转化回来

· KMO值:如果此值高于08,则说明效度高;如果此值介于07 08之间,则说明效度较好;如果此值介于06 07,则说明效度可接受,如果此值小于06,说明效度不佳

· 巴特球形检验:其对应巴特球形值,对应P值一定需要小于005,这样才能说明通过巴特球形检验

· 特征根:此值是判断因子(维度)个数的标准的信息量,由于已经设置好因子(维度)个数,因而此值意义较小可忽略;

· 方差解释率值:代表各维度可解释整体量表的信息量;

· 累积方差解释率值:所有维度可解释整体量表的信息量;

· 因子载荷系数值:分析项与维度之间的相关关系情况;此值非常非常重要,可用于判断分析项与维度的对应关系情况,下述会有说明;

· 共同度值:分析项可以被提取出的信息量情况,比如为0617,可以理解为该项有617%的信息可被最终提取出来。

问题一:用SPSS已经做出了因子分析,那么具体的分析结果应该怎么看呢? KMO检验统计量在07以上,说明变量之间的偏相关性较强,适合做因子分析,球形检验p小于0001,说明变量之间存在相关性。第二格表格为共同性,表示各变量中所含原始信息能被提取的共同因子所表示的程度,根据你的数据,你提取的公因子是两个,第三个表格是指提取的俩个主成分能解福差异的比列,第四个表格是主成分表达式,第五表格是因子得分公式。

问题二:因子分析到底有什么用处? 问题:大家觉得因子分析到底有什幺用处呢?把原来很多个影响因素归纳成几个影响因子,如果不继续做回归或者聚类的话,光做因子分析有价值吗?答复:因子分析是将多个实测变量转换为少数几个综合指标(或称潜变量),它反映一种降维的思想。通过降维将相关性高的变量聚在一起,从而减少需要分析的变量的数量,而减少问题分析的复杂性。在你对问题系统结构不了解时候,因子分析可以根据数据内在逻辑性,把它归并成几个公因子,每个公因子分别代表空间的一个维度,如果经过正交或斜 交旋转的话,各个维度之间可以认为是不相关的,这些公因子能够相对完整地刻画对象的体系维度,最起码累计方差贡献率大于85%的话,就基本能够保证重要信 息不丢失了。一句话,你如果对研究对象到底应该分为几个维度不清楚的话,用因子分析可以通过数据内在逻辑告诉你。但如果你对研究对象体系比较清楚的话,那你直接确定维度,通过AHP计算出权重,就能够把系统表述清楚了。但这里面有巨大问题,单纯通过数据内 在逻辑来判断维度,常常是错误的,而主观判断其实更加科学,并非象统计学宣称的,数据说话才有发言权。真正有发言权的,是你对问题的经验认识程度。人们为 了避免被人嘲笑主观判断的失误,而越来越选择了统计分析,实际上,他们并不清楚,单纯用统计分析来做判断,才是最愚蠢的。只有主客观结合起来,才是相对科 学的,两者矛盾的时候,应该深入研究矛盾的根源,搞不清楚的话,我认为指标体系评价法要远比统计分析准确的多。而变量之所以能分布在不同的因子内,则是由 于其方差波动性大小和变量之间的相关性决定的,波动性越大,越排在前面的公因子中,各个公因子之间的变量是不相关的,而每个公因子之间的变量是相关的。因 子分析认为那些数据波动大的变量对对象影响作用更大,它们排在公因子的前列,这样单纯从数据逻辑来判断的准则你认为对吗?我想,如果管理和社会科学都这幺 认为的话,那错误将大大增加了。上面想法是我这两年做课题的体会,没有在任何一本书上看过相关说法,也许说的不对,这是我个人看法。如果让我选择的话,我 宁愿用指标体系评价法,体系几个维度事先就清楚,最多先用因子分析算算,看看数据波动性如何,到底能确定几个维度,只起辅助作用。研究者就是专家,指标体 系的维度由主观来做判断,这主要来自经验判断,而不是由数据判断,我认为其实更科学。当然,如果你对问题一无所知,那指标体系评价法用AHP来做的话,错 误很可能更多。我以前就强烈批判过AHP。说到底,没有一种评价方法是好的,说明问题就好。问题:那能对LISREL进行类似于因子分析的探索性因素分析了解吗?能给点评价么?3x答复:下面是探索性分析的原理:传统上所谈的因素分析)factor ysis)指的是探索性因素分析)exploratory factor ysis),它的目的是在承认有测量误差的情形下,尝试用少数的因素)factors)以解释许多变项间的相关关系。随着统计理论及电脑计算上的进展,目前因素分析的方法可分成探索性因素分析)exploratory factor ysis,EFA)及验证性因素分析)confirmatory factor ysis,CFA),这两类分析之间的差别在于研究者对研究变项间因素结构的了解程度不同。如果研究者对资料内所含的因素性质,结构及个数不是很 清楚,则可使用探索性因素分析试图找出能解释资料变项间相关关系的少数几个重要因素。若研究者从过去文献中的理论及自己的研究经验,而对资料间因素之数 目,结构有一定程度的了解及假设,则可使用验证性因素分析来验证该假设是否能解>>

问题三:进行因子分析的前提条件是各变量之间应该怎么做 本来想给你截图的,可是传不上来,我就简单说一下哈。
首先你得进行一次预计算,选择菜单里分析――降维――因子分析,跳出主面板,把想分析的变量选到变量框里,然后点确定。这时候输出窗口里会只有一个或两个图表。其中有一个图表是主成分的方差贡献。这个图表里你要找到两个相邻的列(应该是第三列和第四列),其中前一个列指的是单个因子对方差的贡献率,后一个是因子累计贡献率。也就是说前一个列里边数值相加等于100,后一个列里边数值递增,最后一个等于100。假如前一个列里是60,30,10,那么后一列里就是60,90,100两个列之间有一个和的关系。找到这两个列以后,你要找使得累计贡献率达到百分之八十的那个数。这个表的第一列是1,2,3,等等,它代表第几个因子,比如3指的那行就包括第三个因子的方差贡献率,累积到第三个因子的方差贡献率这两个数据。你要找到累计到达百分之八十的那个因子是第几个因子,然后就按提取几个因子进行计算。
通过预计算知道了提取几个因子之后,就开始正式计算。再次打开因子分析的主面板,在最右边一共有五个选项,分别是描述,抽取,旋转,得分,选项。这五个在预计算里边没有用,但是现在要用了。点继续。
点击描述,在对话框里选上初始变量分析,kmo统计量及bartlett球形检验这两个选项,(注意,kmo和bartlett是一个选项,选项名就是很长)这一步是用来判断变量是否适于进行因子分析的。
点击抽取,对话框里最上边的方法就选主成分,分析里选上相关性矩阵,输出选上未旋转的因子解和碎石图两个选项,抽取里选择因子的固定数目,在要提取的因子后边填上你预计算里算出的因子数目。点继续。
旋转里边选最大方差法,输出旋转解。继续。
得分里边选保存为变量,方法为回归,显示因子得分系数矩阵也要打上勾。继续。
确定。
然后就可以分析结果了。
先看kmo和bartlett的结果,kmo统计量越接近1,变量相关性越强,因子分析效果越好。通常07以上为一般,05以下不能接受,就是不适合做因子分析。bartlett检验从检验相关矩阵出发,如果p值,就是sig,比较小的话,一般认为小于005,当然越小越好,就适于因子分析。
如果这两个检验都合格的话,才可以去写因子模型。
为了便于描述,假设我们有两个因子f1,f2,
旋转变换后的因子载荷矩阵会告诉你每个变量用因子表示的系数。比如变量x1=系数1f1+系数2f2,变量2以此类推。
因子得分系数矩阵会告诉你每个因子里各变量占得权重,比如f1=系数1x1+系数2x2+。。。
根据这个我们就能算出因子得分了。
因为之前选择了将因子保存为新变量,所以spss会直接保存两个因子得分为两个新变量,
然后我们不是有一个公式吗
总得分=因子1的方差贡献率因子1的得分+因子2的方差贡献率因子2的得分+
根据这个公式计算一下就可以了。
用spss或者Excel都可以。
希望能对你有帮助哦。
ppv课,大数据培训专家,最专业的大数据培训平台。为你提供最好的spss学习教程哦。

问题四:excel2003如何做因子分析 都不知道你所说的因子是指的那个因子,数据管理因子还是什么的,提问清楚些。别人也比较容易理解!

问题五:怎样用SPSS做因子分析 在表因子变量解释贡献率(Total Variance Explained)中,看各个主因子的方差贡献率(Initial Eigenvalues栏下的% of Variance),例如图中三个主因子对应的权重为52132、21017、11405,测将三个权重进行归一化处理,52132/(52132+21017+11405)、21017/(52132+21017+11405)、11405/(52132+21017+11405),所得三个数即为主因子权重

问题六:怎样用spss做因子分析? SPSS→分析→数据缩减→因子分析→选择自变量和因变量→描述里面选择KMO检验和球型检验;海转选择最大方差旋转法→确定→结果

问题七:如何利用因子分析的排名进行分析 你通过因子分析 中一个选项 保存因子得分,之后会在原数据最后保存生成3列因子得分,假设为a1 a2 a3 代表3个因子然后根据因子分析得出三个因子的特征根值,分别计算粗3个因子的权重,分别为各自的特征根值/三个因子特征根值之和 然后综合因子得分=a1对应权重+a2对应权重+a3对应权重之后就根据综合因子得分进行大小排名 就这样出来了

问题八:因子分析法需要哪些数据,用什么软件做 因子分析是用因子概括变量信息,所以首先自变量是什么三年数据当然是一起录入,通过三年的变化来反映因变量的变化。

可以使用在线spssau完成因子分析,可结合帮助手册的案例懂的更快。

通常有三个步骤:第一步是判断是否适合进行因子分析;第二步是因子与题项对应关系判断;第三步是因子命名。

第一步:判断是否进行因子分析。

主要看KMO值大小,一般KMO值大于06说明适合进行因子分析。

第二步:提取因子,因子与题项对应关系判断。

看因子的提取情况,以及因子载荷系数,分析题项与因子的对应关系。

第三步:因子命名。

在第二步删除掉不合理题项后,并且确认因子与题项对应关系良好后,则可结合因子与题项对应关系,对因子进行命名。

具体步骤可阅读在线spssau帮助手册:因子分析-SPSSAU

cor()函数可以提供双变量之间的相关系数,还可以用scatterplotMatrix()函数生成散点图矩阵

不过R语言没有直接给出偏相关的函数;
我们要是做的话,要先调用cortest()对变量进行Pearson相关性分析,
得到简单相关系数,然后做t检验,判断显著性。

R中rmeta程序包是R语言专门进行meta分析的一个程序包,当然类似的meta分析程序包在R语言中非常多,比如 meta,metafor等网页链接

。cochrane是rmeta程序包里面自带的一个用于meta分析的演示数据库。该数 据库是7个随机对照实验的数据,该数据库拥有5个变量(name,evtrt,ntrt,evctrl,nctrl),7个观察值(对应7个随机 对照实验)网页链接


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12963873.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存